Upgrade Notes ********************* ** IMathAS 1.8 ** ********************* All database changes are now in upgrade.php. Run that file to apply updates to the database. SimpleLTI has been deprecated and replaced with BasicLTI. If you have $enablesimplelti in your config.php, change it to enablebasiclti. If you do not have either currently in your config.php and want to allow imathas to act as a BasicLTI producer, add $enablebasiclti = true to config.php ********************* ** IMathAS 1.7 ** ********************* *** Database Changes *** All database changes are now in upgrade.php. Run that file to apply updates to the database. ********************* ** IMathAS 1.6 ** ********************* *** config.php changes - Reference config.php.dist for changes. *** $freetypeinstalled no longer needed - autodetected Added $enablesimplelti Added $mathchaturl *** Loginpage Changes *** Reference loginpage.php.dist for changes. *** Database Changes *** ALTER TABLE `imas_msgs` ADD `parent` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' , ADD `baseid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' ; ALTER TABLE `imas_msgs` ADD INDEX ( `baseid` ) ; CREATE TABLE `mc_sessions` ( `userid` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `sessionid` VARCHAR( 32 ) NOT NULL , `name` VARCHAR( 254 ) NOT NULL , `room` INT( 10 ) NOT NULL , `lastping` INT( 10 ) UNSIGNED NOT NULL, `mathdisp` TINYINT( 1 ) NOT NULL , `graphdisp` TINYINT( 1 ) NOT NULL, INDEX ( `sessionid` ), INDEX( `room` ), INDEX( `lastping` ) ) TYPE = innodb; CREATE TABLE `mc_msgs` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `userid` INT( 10 ) UNSIGNED NOT NULL , `msg` TEXT NOT NULL , `time` INT( 10 ) UNSIGNED NOT NULL , INDEX ( `userid` ), INDEX ( `time` ) ) TYPE = innodb; ALTER TABLE `imas_courses` ADD `chatset` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `ltisecret` VARCHAR( 10 ) NOT NULL ; ALTER TABLE `imas_courses` ADD `ltisecret` VARCHAR( 10 ) NOT NULL ; CREATE TABLE `imas_ltiusers` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `org` VARCHAR( 32 ) NOT NULL , `ltiuserid` VARCHAR( 32 ) NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; CREATE TABLE `imas_ltiaccess` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `password` VARCHAR( 32 ) NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL , `itemid` INT( 10 ) UNSIGNED NOT NULL , `itemtype` TINYINT( 1 ) UNSIGNED NOT NULL , `created` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; CREATE TABLE `imas_ltinonces` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `nonce` TEXT NOT NULL , `time` INT( 10 ) UNSIGNED NOT NULL ) TYPE = innodb; ALTER TABLE `imas_assessments` CHANGE `timelimit` `timelimit` INT( 10 ) NOT NULL DEFAULT '0' ; ALTER TABLE `imas_assessment_sessions` ADD `reattempting` VARCHAR( 255 ) NOT NULL ; ALTER TABLE `imas_assessment_sessions` ADD `reviewreattempting` VARCHAR( 255 ) NOT NULL ; ALTER TABLE `imas_users` ADD `remoteaccess` VARCHAR( 10 ) NOT NULL ; ALTER TABLE `imas_diags` ADD `forceregen` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_diags` CHANGE `entryformat` `entryformat` CHAR( 3 ) NOT NULL DEFAULT 'C0' ; ALTER TABLE `imas_students` ADD `gbinstrcomment` TEXT NOT NULL ; ALTER TABLE `imas_forums` ADD INDEX ( `grpaid` ); ALTER TABLE `imas_forum_posts` ADD INDEX ( `postdate` ); ALTER TABLE `imas_inlinetext` ADD `oncal` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', ADD `caltag` CHAR( 1 ) NOT NULL DEFAULT '!'; ALTER TABLE `imas_inlinetext` ADD INDEX ( `oncal` ) ; ALTER TABLE `imas_linkedtext` ADD `oncal` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', ADD `caltag` CHAR( 1 ) NOT NULL DEFAULT '!'; ALTER TABLE `imas_linkedtext` ADD INDEX ( `oncal` ) ; CREATE TABLE `imas_calitems` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `courseid` INT( 10 ) UNSIGNED NOT NULL , `date` INT( 10 ) UNSIGNED NOT NULL , `title` VARCHAR( 254 ) NOT NULL , `tag` CHAR( 1 ) NOT NULL , INDEX ( `courseid` ), INDEX(`date`) ) TYPE = innodb COMMENT = 'Calendar Items'; ALTER TABLE `imas_courses` ADD `picicons` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD INDEX ( `name` ); ALTER TABLE `imas_courses` ADD INDEX ( `available` ); ALTER TABLE `imas_assessments` ADD INDEX ( `avail` ); ALTER TABLE `imas_assessments` ADD INDEX ( `reviewdate` ) ; ALTER TABLE `imas_inlinetext` ADD INDEX ( `avail` ) ; ALTER TABLE `imas_inlinetext` ADD INDEX ( `startdate` ) ; ALTER TABLE `imas_inlinetext` ADD INDEX ( `enddate` ) ; ALTER TABLE `imas_linkedtext` ADD INDEX ( `avail` ) ; ALTER TABLE `imas_linkedtext` ADD INDEX ( `startdate` ); ALTER TABLE `imas_linkedtext` ADD INDEX ( `enddate` ) ; ALTER TABLE `imas_forums` ADD INDEX ( `avail` ) ; ALTER TABLE `imas_forums` ADD INDEX ( `startdate` ) ; ALTER TABLE `imas_forums` ADD INDEX ( `enddate` ) ; ALTER TABLE `imas_forums` ADD INDEX ( `replyby` ) ; ALTER TABLE `imas_forums` ADD INDEX ( `postby` ) ; ********************* ** IMathAS 1.5 ** ********************* *** Database Changes *** ALTER TABLE `imas_sessions` ADD INDEX ( `time` ) ; ALTER TABLE `imas_users` ADD INDEX ( `rights` ); ALTER TABLE `imas_grades` CHANGE `score` `score` DECIMAL( 6, 1 ) UNSIGNED NULL DEFAULT '0.0'; ALTER TABLE `imas_students` ADD `lastaccess` INT( 10 ) UNSIGNED NOT NULL ; UPDATE imas_students,imas_users SET imas_students.lastaccess=imas_users.lastaccess WHERE imas_students.userid=imas_users.id; ALTER TABLE `imas_gbscheme` CHANGE `defgbmode` `defgbmode` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '21' ; UPDATE `imas_assessments` SET cntingb =3 WHERE deffeedback LIKE 'Practice%'; ALTER TABLE `imas_assessments` ADD `exceptionpenalty` TINYINT( 2 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_students` ADD `latepass` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `allowlate` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_courses` ADD `latepasshrs` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '24'; ALTER TABLE `imas_questionset` ADD `ancestors` TEXT NOT NULL ; ALTER TABLE `imas_gbscheme` ADD `usersort` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `groupmax` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '6'; ALTER TABLE `imas_courses` ADD `theme` VARCHAR( 32 ) NOT NULL DEFAULT 'default.css'; UPDATE imas_courses SET msgset=msgset+1 WHERE msgset>1; ALTER TABLE `imas_questions` ADD `withdrawn` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_inlinetext` ADD `avail` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_assessments` ADD `avail` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_forums` ADD `avail` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_linkedtext` ADD `avail` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; *** Run PHP code after Database Changes *** <?php require("validate.php"); $query = "SELECT id,defgbmode FROM imas_gbscheme"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); while (list($id,$gbmodet) = mysql_fetch_row($result)) { $gbmode = 2; if (($gbmodet&8)==8) { $gbmode += 1000;} if (($gbmodet&16)==16) {$gbmode += 20;} if (($gbmodet&4)==4) {$gbmode -= 1;} if (($gbmodet&1)==1) {$gbmode += 100;} $query = "UPDATE imas_gbscheme SET defgbmode='$gbmode' WHERE id='$id'"; mysql_query($query) or die("Query failed : " . mysql_error()); } echo "DONE"; ?> ********************* ** IMathAS 1.4 ** ********************* *** Database Changes *** ALTER TABLE `imas_diags` ADD `entryformat` VARCHAR( 2 ) NOT NULL DEFAULT 'C0'; ALTER TABLE `imas_users` ADD `deflib` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', ADD `usedeflib` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `noprint` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_forum_views` ADD `tagged` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_forum_posts` ADD `points` SMALLINT ( 5 ) NULL ; ALTER TABLE `imas_forums` ADD `points` SMALLINT( 5 ) NOT NULL DEFAULT '0', ADD `gbcategory` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ********************* ** IMathAS 1.3 ** ********************* *** Database Changes *** #R56 ALTER TABLE `imas_assessment_sessions` ADD `reviewseeds` TEXT NOT NULL , ADD `reviewattempts` TEXT NOT NULL , ADD `reviewscores` TEXT NOT NULL , ADD `reviewlastanswers` TEXT NOT NULL ; UPDATE imas_assessment_sessions SET reviewseeds=seeds,reviewattempts=attempts,reviewscores=scores,reviewlastanswers=lastanswers; #R51 ALTER TABLE `imas_users` ADD `qrightsdef` TINYINT( 1 ) NOT NULL DEFAULT '0'; #R41 ALTER TABLE `imas_questions` ADD `regen` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_questions` ADD `showans` VARCHAR( 1 ) NOT NULL DEFAULT '0'; #R36 ALTER TABLE `imas_assessments` ADD `reqscoreaid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', ADD `reqscore` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '0'; UPDATE imas_assessments SET timelimit = timelimit*60 WHERE timelimit>0; ********************* ** IMathAS 1.2 ** ********************* *** Config.php Changes *** $installname = "Your install name"; $smallheaderlogo = "Text or image tag"; *** Database Changes *** Required changes. ALTER TABLE `imas_assessments` ADD `showcat` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `isgroup` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` CHANGE `defpenalty` `defpenalty` VARCHAR( 6 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_questions` CHANGE `penalty` `penalty` VARCHAR( 6 ) NOT NULL DEFAULT '9999'; ALTER TABLE `imas_assessments` ADD `showhints` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1' AFTER `showcat` ; ALTER TABLE `imas_forums` ADD `grpaid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessment_sessions` ADD `agroupid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD `available` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', ADD `lockaid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessment_sessions` ADD `feedback` TEXT NOT NULL ; ALTER TABLE `imas_students` ADD `gbcomment` TEXT NOT NULL ; ALTER TABLE `imas_grades` ADD `feedback` TEXT NOT NULL ; ********************* ** IMathAS 1.1 ** ********************* *** Database Changes *** Required changes. ALTER TABLE `imas_assessments` CHANGE `shuffle` `shuffle` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD `blockcnt` INT( 10 ) UNSIGNED NOT NULL DEFAULT '1'; CREATE TABLE `imas_msgs` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `courseid` INT( 10 ) UNSIGNED NOT NULL , `title` VARCHAR( 254 ) NOT NULL , `message` TEXT NOT NULL , `msgto` INT( 10 ) NOT NULL , `msgfrom` INT( 10 ) NOT NULL , `senddate` INT( 10 ) NOT NULL , `isread` TINYINT( 1 ) NOT NULL ) TYPE = innodb COMMENT = 'Internal messages'; ALTER TABLE `imas_students` ADD `section` VARCHAR( 10 ) NULL , ADD `code` INT( 4 ) UNSIGNED NULL ; ALTER TABLE `imas_forums` ADD `defdisplay` INT( 1 ) UNSIGNED NOT NULL , ADD `replyby` INT( 10 ) UNSIGNED NOT NULL DEFAULT '2000000000', ADD `postby` INT( 10 ) UNSIGNED NOT NULL DEFAULT '2000000000'; ALTER TABLE `imas_forum_posts` ADD `replyby` INT( 10 ) UNSIGNED NULL ; CREATE TABLE `imas_forum_subscriptions` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `forumid` INT( 10 ) UNSIGNED NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL , INDEX ( `forumid` , `userid` ) ) TYPE = innodb COMMENT = 'Forum subscriptions'; CREATE TABLE `imas_gbscheme` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `courseid` INT( 10 ) UNSIGNED NOT NULL , `useweights` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', `orderby` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', `defaultcat` VARCHAR( 254 ) NOT NULL DEFAULT '0,0,1,0,-1' ) TYPE = innodb COMMENT = 'Gradebook scheme'; ALTER TABLE `imas_assessments` ADD `gbcategory` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; CREATE TABLE `imas_gbitems` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `courseid` INT( 10 ) UNSIGNED NOT NULL , `name` VARCHAR( 50 ) NOT NULL , `points` SMALLINT( 4 ) NOT NULL DEFAULT '0', `showdate` INT( 10 ) UNSIGNED NOT NULL , `gbcategory` INT( 10 ) UNSIGNED NOT NULL , INDEX ( `courseid` , `showdate` ) ) TYPE = innodb COMMENT = 'Gradebook offline items'; CREATE TABLE `imas_grades` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `gbitemid` INT( 10 ) UNSIGNED NOT NULL , `userid` INT( 10 ) UNSIGNED NOT NULL , `score` DECIMAL( 6, 1 ) UNSIGNED NOT NULL , INDEX ( `userid` ) ) TYPE = innodb COMMENT = 'Offline grades'; CREATE TABLE `imas_gbcats` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 50 ) NOT NULL , `courseid` INT( 10 ) UNSIGNED NOT NULL , `scale` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '0', `scaletype` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', `chop` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1', `dropn` TINYINT( 2 ) NOT NULL DEFAULT '0', `weight` SMALLINT( 4 ) NOT NULL DEFAULT '-1', INDEX ( `courseid` ) ) TYPE = innodb COMMENT = 'Gradebook Categories'; ALTER TABLE `imas_assessments` ADD `password` VARCHAR( 15 ) NOT NULL ; ALTER TABLE `imas_users` ADD `msgnotify` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_forums` CHANGE `description` `description` TEXT NOT NULL; ALTER TABLE `imas_courses` ADD `msgset` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_gbscheme` ADD `defgbmode` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_assessments` ADD `cntingb` TINYINT( 1 ) NOT NULL DEFAULT '1'; ALTER TABLE `imas_gbitems` ADD `cntingb` TINYINT( 1 ) NOT NULL DEFAULT '1'; ALTER TABLE `imas_courses` ADD `topbar` VARCHAR( 32 ) NOT NULL DEFAULT '|'; UPDATE imas_forums SET replyby=0 WHERE settings=2 OR settings=3; UPDATE imas_forums SET settings=3 WHERE settings=1; UPDATE imas_forums SET settings=2 WHERE settings=0; ALTER TABLE `imas_msgs` ADD INDEX ( `msgto` ); ALTER TABLE `imas_msgs` ADD INDEX ( `isread` ); ALTER TABLE `imas_exceptions` ADD INDEX ( `assessmentid` ); ALTER TABLE `imas_items` ADD INDEX ( `typeid` ) ; ALTER TABLE `imas_items` ADD INDEX ( `itemtype` ); ALTER TABLE `imas_assessments` ADD INDEX ( `startdate` ); ALTER TABLE `imas_assessments` ADD INDEX ( `enddate` ) ; ALTER TABLE `imas_forum_posts` ADD INDEX ( `threadid` ) ; ALTER TABLE `imas_forum_views` ADD INDEX ( `threadid` ) ; ALTER TABLE `imas_assessment_sessions` ADD INDEX ( `assessmentid` ); ALTER TABLE `imas_assessments` ADD INDEX ( `cntingb` ); ALTER TABLE `imas_courses` ADD INDEX ( `ownerid` ); ALTER TABLE `imas_diags` ADD INDEX (`cid`); ALTER TABLE `imas_grades` ADD INDEX ( `gbitemid` ); ALTER TABLE `imas_assessments` ADD `minscore` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD `cploc` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_gbscheme` ADD INDEX ( `courseid` ) ALTER TABLE `imas_assessments` CHANGE `defpoints` `defpoints` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '10', CHANGE `defattempts` `defattempts` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_courses` CHANGE `hideicons` `hideicons` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0', CHANGE `allowunenroll` `allowunenroll` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', CHANGE `copyrights` `copyrights` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_diags` CHANGE `public` `public` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '1'; ALTER TABLE `imas_forum_posts` CHANGE `posttype` `posttype` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', CHANGE `isanon` `isanon` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_forums` CHANGE `settings` `settings` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0', CHANGE `defdisplay` `defdisplay` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_libraries` CHANGE `userights` `userights` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '8'; ALTER TABLE `imas_msgs` CHANGE `isread` `isread` TINYINT( 1 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_questions` CHANGE `points` `points` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '9999', CHANGE `attempts` `attempts` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '9999'; ALTER TABLE `imas_questionset` CHANGE `userights` `userights` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '2', CHANGE `hasimg` `hasimg` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_sessions` CHANGE `tzoffset` `tzoffset` SMALLINT( 4 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_students` CHANGE `code` `code` SMALLINT( 4 ) UNSIGNED NULL DEFAULT NULL ; ALTER TABLE `imas_users` CHANGE `rights` `rights` SMALLINT( 4 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_msgs` ADD `replied` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; Use the code block below to update your existing courses to the new block format. <?php require("validate.php"); $query = "SELECT id,itemorder,blockcnt FROM imas_courses"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); while ($row = mysql_fetch_row($result)) { $blockcnt = $row[2]; $newarray = array(); $items = explode(',',$row[1]); foreach ($items as $item) { if (strpos($item,'~')===FALSE) { $newarray[] = $item; } else { $sub = explode('~',$item); $newblock = array(); $newblock['name'] = $sub[0]; $newblock['id'] = $blockcnt; $blockcnt++; $newblock['startdate'] = $sub[1]; $newblock['enddate'] = $sub[2]; $newblock['SH'] = $sub[3]; for ($i=4;$i<count($sub);$i++) { $newblock['items'][] = $sub[$i]; } $newarray[] = $newblock; } } $newitemorder = addslashes(serialize($newarray)); $query = "UPDATE imas_courses SET itemorder='$newitemorder',blockcnt='$blockcnt' WHERE id='{$row[0]}'"; mysql_query($query) or die("Query failed : " . mysql_error()); } echo "Done"; ?> ********************* ** IMathAS 1.0 ** ********************* Create subdirectory "qimages" in "assessment" directory. Set permissions to allow server to write to this directory. *** Database Changes *** Required changes. CREATE TABLE `imas_qimages` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `qsetid` INT( 10 ) UNSIGNED NOT NULL , `var` VARCHAR( 50 ) NOT NULL , `filename` VARCHAR( 100 ) NOT NULL , `alttext` VARCHAR( 254 ) NOT NULL , INDEX ( `qsetid` ) ); ALTER TABLE `imas_questionset` ADD `hasimg` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_forum_posts` ADD `isanon` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_forums` ADD `settings` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_courses` ADD `hideicons` INT( 2 ) UNSIGNED NOT NULL DEFAULT '0'; CREATE TABLE `imas_instr_files` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `description` VARCHAR( 254 ) NOT NULL , `filename` VARCHAR( 100 ) NOT NULL , `itemid` INT( 10 ) UNSIGNED NOT NULL , INDEX ( `itemid` ) ) TYPE = innodb; ALTER TABLE `imas_inlinetext` ADD `fileorder` TEXT NOT NULL ; ALTER TABLE `imas_courses` ADD `allowunenroll` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0', ADD `copyrights` INT( 1 ) UNSIGNED NOT NULL DEFAULT '0'; ********************* ** IMathAS 1.0RC1 ** ********************* *** Database Changes *** Required changes. ALTER TABLE `imas_assessment_sessions` ADD `bestseeds` TEXT NOT NULL , ADD `bestattempts` TEXT NOT NULL , ADD `bestscores` TEXT NOT NULL , ADD `bestlastanswers` TEXT NOT NULL ; ALTER TABLE `imas_assessments` ADD `reviewdate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `enddate` ; UPDATE `imas_assessment_sessions` SET bestseeds=seeds,bestattempts=attempts,bestscores=scores,bestlastanswers=lastanswers; ALTER TABLE `imas_assessments` CHANGE `defpenalty` `defpenalty` VARCHAR( 5 ) NOT NULL DEFAULT '0'; ALTER TABLE `imas_questions` CHANGE `penalty` `penalty` VARCHAR( 5 ) NOT NULL DEFAULT '9999'; ********************* ** IMathAS 1beta16 ** ********************* *** Database Changes *** Required change. CREATE TABLE `imas_diags` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `ownerid` INT( 10 ) UNSIGNED NOT NULL , `name` VARCHAR( 254 ) NOT NULL , `term` VARCHAR( 10 ) NOT NULL , `public` INT( 1 ) UNSIGNED NOT NULL DEFAULT '1', `cid` INT( 10 ) UNSIGNED NOT NULL , `idprompt` VARCHAR( 254 ) NOT NULL , `ips` TEXT NOT NULL , `pws` TEXT NOT NULL , `sel1name` VARCHAR( 254 ) NOT NULL , `sel1list` TEXT NOT NULL , `aidlist` TEXT NOT NULL , `sel2name` VARCHAR( 254 ) NOT NULL , `sel2list` TEXT NOT NULL , INDEX ( `ownerid` , `public` ) ) TYPE = innodb; ********************* ** IMathAS 1beta15 ** ********************* *** Database Changes *** None *** config.php Changes *** //absolute path or full url to Mimetex CGI, for math image fallback //if you do not have a local install, feel free to use: // $mathimgurl = "http://www.imathas.com/cgi-bin/mimetex.cgi" $mathimgurl = "/mimetex/mimetex.exe"; //set to true if you have FreeType library installed $freetypeinstalled = true; ********************* ** IMathAS 1beta14 ** ********************* CourseCreator rights level was removed. Any existing CourseCreators need to have rights reassigned before upgrading. *** Database Changes *** Required changes. CREATE TABLE `imas_groups` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 255 ) NOT NULL ); ALTER TABLE `imas_users` ADD `groupid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_libraries` ADD `groupid` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_libraries` CHANGE `userights` `userights` INT( 1 ) UNSIGNED NOT NULL DEFAULT '8'; UPDATE `imas_libraries` SET userights=8 WHERE userights=2; UPDATE `imas_libraries` SET userights=4 WHERE userights=1; ALTER TABLE `imas_questions` ADD `category` VARCHAR( 255 ) NOT NULL DEFAULT '0'; *** Config.php Changes *** Required changes. Add to config.php: //should non-admins be allowed to create new non-group libraries? //on a single-school install, set to true; for larger installs that plan to //use the Groups features, set to false $allownongrouplibs = false; //should anyone be allowed to import/export questions and libraries from the //course page? Intended for easy sharing between systems, but the course page //is cleaner if turned off. $allowcourseimport = false; ********************* ** IMathAS 1beta13 ** ********************* *** Database Changes *** Required changes. ALTER TABLE `imas_sessions` ADD `sessiondata` TEXT NOT NULL ; ********************* ** IMathAS 1beta12 ** ********************* *** Database Changes *** Recommended changes (to allow assessments with more than ~50 questions) ALTER TABLE `imas_assessment_sessions` CHANGE `scores` `scores` TEXT NOT NULL; ALTER TABLE `imas_assessment_sessions` CHANGE `questions` `questions` TEXT NOT NULL; Required changes. ALTER TABLE `imas_library_items` ADD `ownerid` INT( 10 ) UNSIGNED NOT NULL; if you have existing questions, use this to assign owners to the library assignments: (cut and paste into a .php file, put in main imathas directory, and run it) <?php require("validate.php"); $query = "SELECT id,ownerid FROM imas_questionset"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); while ($row = mysql_fetch_row($result)) { $query = "UPDATE imas_library_items SET ownerid='{$row[1]}' WHERE qsetid='{$row[0]}'"; mysql_query($query) or die("Query failed : " . mysql_error()); } echo "DONE"; ?> ********************* ** IMathAS 1beta11 ** ********************* No changes required ********************* ** IMathAS 1beta10 ** ********************* *** Database Changes *** Required changes. ALTER TABLE `imas_users` ADD `lastaccess` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_users` ADD INDEX ( `lastaccess` ) ; ALTER TABLE `imas_questionset` ADD `uniqueid` BIGINT( 16 ) UNSIGNED NOT NULL AFTER `id` ; ALTER TABLE `imas_libraries` ADD `uniqueid` BIGINT( 16 ) UNSIGNED NOT NULL AFTER `id` ; ALTER TABLE `imas_questionset` ADD `adddate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `uniqueid` , ADD `lastmoddate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `adddate` ; ALTER TABLE `imas_libraries` ADD `adddate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `uniqueid` , ADD `lastmoddate` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `adddate` ; if you have existing questions/libraries you wish to assign unique ids to, use this: (cut and paste into a .php file, put in main imathas directory, and run it) <?php require("validate.php"); $query = "SELECT id FROM imas_questionset"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); $mt = microtime(); $now = time(); while ($row = mysql_fetch_row($result)) { $uid = substr($mt,11).substr($mt,2,2).$row[0]; $query = "UPDATE imas_questionset SET uniqueid=$uid,adddate=$now,lastmoddate=$now WHERE id={$row[0]}"; mysql_query($query) or die("Query failed : " . mysql_error()); } $query = "SELECT id FROM imas_libraries"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); $mt = microtime(); while ($row = mysql_fetch_row($result)) { $uid = substr($mt,11).substr($mt,2,2).$row[0]; $query = "UPDATE imas_libraries SET uniqueid=$uid,adddate=$now,lastmoddate=$now WHERE id={$row[0]}"; mysql_query($query) or die("Query failed : " . mysql_error()); } ?> *** Config.php changes *** Added $sessionpath. No change required if things are working fine already. ******************** ** IMathAS 1beta9 ** ******************** *** Database Changes **** First change is required. New tables are needed if you want to use forums. ALTER TABLE `imas_sessions` ADD `tzoffset` INT( 4 ) NOT NULL DEFAULT '0'; CREATE TABLE `imas_forums` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `description` varchar(254) NOT NULL default '', `courseid` int(10) unsigned NOT NULL default '0', `startdate` int(10) unsigned NOT NULL default '0', `enddate` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `courseid` (`courseid`) ); CREATE TABLE `imas_forum_views` ( `id` int(10) unsigned NOT NULL auto_increment, `userid` int(10) unsigned NOT NULL default '0', `threadid` int(10) unsigned NOT NULL default '0', `lastview` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `userid` (`userid`,`threadid`) ); CREATE TABLE `imas_forum_posts` ( `id` int(10) unsigned NOT NULL auto_increment, `forumid` int(10) unsigned NOT NULL default '0', `threadid` int(10) NOT NULL default '0', `userid` int(10) unsigned NOT NULL default '0', `postdate` int(10) unsigned NOT NULL default '0', `views` int(10) unsigned NOT NULL default '0', `parent` int(10) unsigned NOT NULL default '0', `posttype` int(1) unsigned NOT NULL default '0', `subject` varchar(100) NOT NULL default '', `message` text NOT NULL, PRIMARY KEY (`id`), KEY `forumid` (`forumid`) ); *** Config.php changes *** (not required) Remove $TZ setting, and "if (isset($TZ)) {putenv("TZ=$TZ");}" line. Generalized database name. No changed needed for existing installs. ******************** ** IMathAS 1beta8 ** ******************** *** Database changes: (required, backwards compatible) *** ALTER TABLE `imas_libraries` ADD `parent` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `imas_questionset` ADD `author` VARCHAR( 254 ) NOT NULL DEFAULT 'unknown' AFTER `ownerid` ; *** No changes to config.php ***