Installation

Installing & Using CRP

This page is formatted as a single page in case you want to print it out. This section deals with configuring the software. You should have already read the Installation section.

  1. Configuring Your Conference Database
  2. Configuring Your Conference Deadlines & Features

Configuring Your Conference Database

This writeup assumes you're going to use a MySQL database. You could do similar things for other databases.

Almost all information about the conference is stored in a MySQL database. This makes writing or modifying the application easier, but if you're not used to working with a database, it may appear overly complex on startup, so I've provided a script to create the database.

In MySQL, security is granted to a specific "user" connecting from a given "host" using a "password". The "user" is not a UNIX/Windows user, it's specific to the MySQL system. My assumption is that you're running the MySQL server on the same host that you're running the web server. In this case, I use "127.0.0.1" for the hostname. For a given conference, the user name, the password and the database are all the same. For example, if I was creating a conference page for "HYPO2002", the Hypothetical Conference, the user that would be created is HYPO2002, who could only connect to database HYPO2002 from the same machine running the MySQL server using the password "HYPO2002".

While this would seem to be wildly insecure, it's not as bad as you might think. First off, the MySQL password must be accessible to the PHP program. If someone cracks into your web server (and can thus get the password), it doesn't matter what the password was -- they can get in anyway, no matter what the password is. By restricting the MySQL access to be to the local host, we at least eliminate the possibility of external database hacking. Also, the only place where the password is made available is in the file "Code/confConfig.inc", and that directory is protected by a .htaccess file that doesn't let people browse files.

Using these assumptions, the shell script "CreateDatabase.sh" will simplify the process of creating the database and populating it with the initial schema. An example execution follows:

[esl-30] sudo ./CreateDatabase.sh
This will create the database for your conference.
The assumption is that the database name and name used to
attach to the database AND the password are all the same
The database is created with access only from the local host.

Note: this will delete any existing database and user
with the specified name -- make certain this is what you want
Enter database name: HYPO2002
DBNAME is HYPO2002
Creating database.
This attmpts to connect to mysql without a password
This should work if you haven't changed the default management
password for mysql. If you have, you will need to exit
and run ./CreateDatabase.sh -p'' to specify a password, which will then
need to be the MySQL administrator password
Creating HYPO2002 user and password
You will be asked for a password -- this is the MySQL admin password
Now reloading the grant tables..
Now, we will populate the database with the schema.
If the preceeding steps worked, you won't need to
enter a password
mysql -u HYPO2002 -pHYPO2002 -h 127.0.0.1 HYPO2002
[esl-31]
 

If you've just installed MySQL on a system, you should see something similar to the preceeding -- MySQL will allow access to the "root" user without further passwords. If you've already modified the MySQL authentication table, you may have to specify use the "-p" option to be prompted for the appropriate passwords.

Once the database is created, you can check on it using the MySQL interface, if you choose too. Below is an example showing how you can poke at parts of the database.

[esl-39] mysql -u HYPO2002 -h 127.0.0.1 -p HYPO2002
Enter password: HYPO2002

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.23.41

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> describe Paper;
+-------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+---------+----------------+
| paperId | int(11) | | PRI | NULL | auto_increment |
| title | varchar(200) | YES | MUL | NULL | |
| authorInformation | text | YES | | NULL | |
| abstract | text | YES | | NULL | |
| pdfLocation | varchar(120) | YES | | NULL | |
| contactId | int(11) | YES | MUL | NULL | |
| submitted | timestamp(14) | YES | | NULL | |
| acknowledged | int(11) | YES | | 0 | |
| withdrawn | int(11) | YES | | 0 | |
| pcPaper | int(11) | YES | | 0 | |
| authorsResponse | mediumtext | YES | | NULL | |
+-------------------+---------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)

mysql>

Since the data is stored using a relatively simple schema and MySQL is a popular database, it's also possible to access the data using Perl, Python, C, C++ or Java. If you want to do some whacking on the database in a language other than PHP, I would recommend getting the book "MySQL", which is a good reference on MySQL.

Configuring Your Conference Deadlines & Features

Once your database is configured, you need to configure the conference specific files. To do this, edit "Code/confConfig.inc".

I'll describe each variable as you would find it in the file "confConfig.inc.dist", which is the default configuration distributed with the package.

Most of the configuration information changes fields in a PHP object of class "Conference". There is a single global instance of this variable that is used throughout the package, called "$Conf". You'll basically be setting fields in that object.

  1. $Conf -> setupPhase = 0
    If the variable "setupPhase" is non-zero, anyone accessing the conference will have "Program Chair" access (i.e. the most access). You should only set this variable to non-zero when you're first setting up the conference. Once you've gotten the basic startup working, you should then enter your email as the program chair and then set "setupPhase" to zero.
  2. $Conf -> shortName="HYPO-2002"
    This is the "short name" used to reference to the conference.
  3. $Conf -> longName="2002 Hypothetical Conference";
    And obviously, this is the long name. Appears in title banners, etc.
  4.