function setupTable($tableName, $createSQL = '', $silent = true, $arrAlter = '') { global $Translation; ob_start(); echo '<div style="padding: 5px; border-bottom:solid 1px silver; font-family: verdana, arial; font-size: 10px;">'; // is there a table rename query? if (is_array($arrAlter)) { $matches = array(); if (preg_match("/ALTER TABLE `(.*)` RENAME `{$tableName}`/", $arrAlter[0], $matches)) { $oldTableName = $matches[1]; } } if ($res = @db_query("select count(1) from `{$tableName}`")) { // table already exists if ($row = @db_fetch_array($res)) { echo str_replace("<TableName>", $tableName, str_replace("<NumRecords>", $row[0], $Translation["table exists"])); if (is_array($arrAlter)) { echo '<br>'; foreach ($arrAlter as $alter) { if ($alter != '') { echo "{$alter} ... "; if (!@db_query($alter)) { echo '<span class="label label-danger">' . $Translation['failed'] . '</span>'; echo '<div class="text-danger">' . $Translation['mysql said'] . ' ' . db_error(db_link()) . '</div>'; } else { echo '<span class="label label-success">' . $Translation['ok'] . '</span>'; } } } } else { echo $Translation["table uptodate"]; } } else { echo str_replace("<TableName>", $tableName, $Translation["couldnt count"]); } } else { // given tableName doesn't exist if ($oldTableName != '') { // if we have a table rename query if ($ro = @db_query("select count(1) from `{$oldTableName}`")) { // if old table exists, rename it. $renameQuery = array_shift($arrAlter); // get and remove rename query echo "{$renameQuery} ... "; if (!@db_query($renameQuery)) { echo '<span class="label label-danger">' . $Translation['failed'] . '</span>'; echo '<div class="text-danger">' . $Translation['mysql said'] . ' ' . db_error(db_link()) . '</div>'; } else { echo '<span class="label label-success">' . $Translation['ok'] . '</span>'; } if (is_array($arrAlter)) { setupTable($tableName, $createSQL, false, $arrAlter); } // execute Alter queries on renamed table ... } else { // if old tableName doesn't exist (nor the new one since we're here), then just create the table. setupTable($tableName, $createSQL, false); // no Alter queries passed ... } } else { // tableName doesn't exist and no rename, so just create the table echo str_replace("<TableName>", $tableName, $Translation["creating table"]); if (!@db_query($createSQL)) { echo '<span class="label label-danger">' . $Translation['failed'] . '</span>'; echo '<div class="text-danger">' . $Translation['mysql said'] . db_error(db_link()) . '</div>'; } else { echo '<span class="label label-success">' . $Translation['ok'] . '</span>'; } } } echo "</div>"; $out = ob_get_contents(); ob_end_clean(); if (!$silent) { echo $out; } }
$prevMD5 = @implode('', @file(dirname(__FILE__) . '/setup.md5')); $thisMD5 = md5(@implode('', @file("./updateDB.php"))); if ($thisMD5 == $prevMD5) { $setupAlreadyRun = true; } else { // set up tables if (!isset($silent)) { $silent = true; } // set up tables setupTable('diseases', "create table if not exists `diseases` ( `id` INT unsigned not null auto_increment , primary key (`id`), `short_name` VARCHAR(40) not null , `latin_name` VARCHAR(40) , `description` TEXT , `other_details` TEXT , `comments` TEXT ) CHARSET latin1", $silent); setupTable('patients', "create table if not exists `patients` ( `id` INT unsigned not null auto_increment , primary key (`id`), `last_name` VARCHAR(40) not null , `first_name` VARCHAR(40) not null , `gender` VARCHAR(10) not null default 'Unknown' , `birth_date` DATE , `age` INT , `address` TEXT , `city` VARCHAR(40) , `state` VARCHAR(15) , `zip` CHAR(8) , `home_phone` VARCHAR(40) , `work_phone` VARCHAR(40) , `mobile` VARCHAR(40) , `other_details` TEXT , `comments` TEXT , `filed` DATETIME , `last_modified` VARCHAR(40) ) CHARSET latin1", $silent); setupTable('symptoms', "create table if not exists `symptoms` ( `id` INT unsigned not null auto_increment , primary key (`id`), `name` VARCHAR(80) not null , `description` TEXT , `comments` TEXT ) CHARSET latin1", $silent); setupTable('disease_symptoms', "create table if not exists `disease_symptoms` ( `id` INT unsigned not null auto_increment , primary key (`id`), `disease` INT unsigned not null , `symptom` INT unsigned not null , `expected_probability` VARCHAR(40) , `minimum` VARCHAR(40) , `maximum` VARCHAR(40) , `reading_other_value` VARCHAR(40) , `comments` TEXT ) CHARSET latin1", $silent); setupIndexes('disease_symptoms', array('disease', 'symptom')); setupTable('patient_symptoms', "create table if not exists `patient_symptoms` ( `id` INT unsigned not null auto_increment , primary key (`id`), `patient` INT unsigned not null , `symptom` INT unsigned not null , `observation_date` DATE , `observation_time` TIME , `symptom_value` VARCHAR(40) ) CHARSET latin1", $silent); setupIndexes('patient_symptoms', array('patient', 'symptom')); // save MD5 if ($fp = @fopen(dirname(__FILE__) . '/setup.md5', 'w')) { fwrite($fp, $thisMD5); fclose($fp); } } function setupIndexes($tableName, $arrFields) { if (!is_array($arrFields)) { return false; } foreach ($arrFields as $fieldName) { if (!($res = @mysql_query("SHOW COLUMNS FROM `{$tableName}` like '{$fieldName}'"))) { continue;