function xmldb_data_upgrade($oldversion = 0) { global $CFG, $THEME, $db; $result = true; /// And upgrade begins here. For each one, you'll need one /// block of code similar to the next one. Please, delete /// this comment lines once this file start handling proper /// upgrade code. /// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php /// $result = result of "/lib/ddllib.php" function calls /// } if ($result && $oldversion < 2006121300) { /// Define field format to be added to data_comments $table = new XMLDBTable('data_comments'); $field = new XMLDBField('format'); $field->setAttributes(XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'content'); /// Launch add field format $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007022600) { /// Define field asearchtemplate to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('asearchtemplate'); $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'jstemplate'); /// Launch add field asearchtemplate $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007072200) { require_once $CFG->dirroot . '/mod/data/lib.php'; // too much debug output $db->debug = false; data_update_grades(); $db->debug = true; } if ($result && $oldversion < 2007081400) { /// Define field notification to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('notification'); $field->setAttributes(XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null, 'editany'); /// Launch add field notification $result = $result && add_field($table, $field); } return $result; }
/** * Update all grades in gradebook. * * @global object */ function data_upgrade_grades() { global $DB; $sql = "SELECT COUNT('x') FROM {data} d, {course_modules} cm, {modules} m WHERE m.name='data' AND m.id=cm.module AND cm.instance=d.id"; $count = $DB->count_records_sql($sql); $sql = "SELECT d.*, cm.idnumber AS cmidnumber, d.course AS courseid FROM {data} d, {course_modules} cm, {modules} m WHERE m.name='data' AND m.id=cm.module AND cm.instance=d.id"; $rs = $DB->get_recordset_sql($sql); if ($rs->valid()) { // too much debug output $pbar = new progress_bar('dataupgradegrades', 500, true); $i=0; foreach ($rs as $data) { $i++; upgrade_set_timeout(60*5); // set up timeout, may also abort execution data_update_grades($data, 0, false); $pbar->update($i, $count, "Updating Database grades ($i/$count)."); } } $rs->close(); }
function xmldb_data_upgrade($oldversion = 0) { global $CFG, $THEME, $db; $result = true; /// And upgrade begins here. For each one, you'll need one /// block of code similar to the next one. Please, delete /// this comment lines once this file start handling proper /// upgrade code. /// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php /// $result = result of "/lib/ddllib.php" function calls /// } if ($result && $oldversion < 2006121300) { /// Define field format to be added to data_comments $table = new XMLDBTable('data_comments'); $field = new XMLDBField('format'); $field->setAttributes(XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'content'); /// Launch add field format $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007022600) { /// Define field asearchtemplate to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('asearchtemplate'); $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'jstemplate'); /// Launch add field asearchtemplate $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007072200) { require_once $CFG->dirroot . '/mod/data/lib.php'; // too much debug output $db->debug = false; data_update_grades(); $db->debug = true; } if ($result && $oldversion < 2007081400) { /// Define field notification to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('notification'); $field->setAttributes(XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null, 'editany'); /// Launch add field notification $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007081402) { /// Define index type-dataid (not unique) to be added to data_fields $table = new XMLDBTable('data_fields'); $index = new XMLDBIndex('type-dataid'); $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('type', 'dataid')); /// Launch add index type-dataid if (!index_exists($table, $index)) { $result = $result && add_index($table, $index); } /// Define index course (not unique) to be added to data $table = new XMLDBTable('data'); $index = new XMLDBIndex('course'); $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('course')); /// Launch add index course if (!index_exists($table, $index)) { $result = $result && add_index($table, $index); } } //===== 1.9.0 upgrade line ======// if ($result && $oldversion < 2007101512) { /// Launch add field asearchtemplate again if does not exists yet - reported on several sites $table = new XMLDBTable('data'); $field = new XMLDBField('asearchtemplate'); $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'jstemplate'); if (!field_exists($table, $field)) { $result = $result && add_field($table, $field); } } ///Display a warning message about "Required Entries" fix from MDL-16999 if ($result && $oldversion < 2007101514) { if (!get_config('data', 'requiredentriesfixflag')) { set_config('requiredentriesfixflag', true, 'data'); // remove old flag $databases = get_records_sql("SELECT d.*, c.fullname\n FROM {$CFG->prefix}data d, {$CFG->prefix}course c\n WHERE d.course = c.id\n AND (d.requiredentries > 0 OR d.requiredentriestoview > 0)\n ORDER BY c.fullname, d.name"); if (!empty($databases)) { $a = new object(); $a->text = ''; foreach ($databases as $database) { $a->text .= "<p>" . $database->fullname . " - " . $database->name . " (course id: " . $database->course . " - database id: " . $database->id . ")</p>"; } notify(get_string('requiredentrieschanged', 'data', $a)); } } } if ($result && $oldversion < 2007101515) { // Upgrade all the data->notification currently being // NULL to 0 $sql = "UPDATE {$CFG->prefix}data SET notification=0 WHERE notification IS NULL"; $result = execute_sql($sql); $table = new XMLDBTable('data'); $field = new XMLDBField('notification'); // First step, Set NOT NULL $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'editany'); $result = $result && change_field_notnull($table, $field); // Second step, Set default to 0 $result = $result && change_field_default($table, $field); } return $result; }
/** * Update grades by firing grade_updated event * * @param object $data null means all databases * @param int $userid specific user only, 0 mean all */ function data_update_grades($data = null, $userid = 0, $nullifnone = true) { global $CFG; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once $CFG->libdir . '/gradelib.php'; } if ($data != null) { if ($grades = data_get_user_grades($data, $userid)) { data_grade_item_update($data, $grades); } else { if ($userid and $nullifnone) { $grade = new object(); $grade->userid = $userid; $grade->rawgrade = NULL; data_grade_item_update($data, $grade); } else { data_grade_item_update($data); } } } else { $sql = "SELECT d.*, cm.idnumber as cmidnumber\n FROM {$CFG->prefix}data d, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n WHERE m.name='data' AND m.id=cm.module AND cm.instance=d.id"; if ($rs = get_recordset_sql($sql)) { while ($data = rs_fetch_next_record($rs)) { if ($data->assessed) { data_update_grades($data, 0, false); } else { data_grade_item_update($data); } } rs_close($rs); } } }
data_update_grades($data, $record->userid); } else { if ($rating != $oldrating->rating) { $oldrating->rating = $rating; $DB->update_record('data_ratings', $oldrating); data_update_grades($data, $record->userid); } } } else { if ($rating) { $newrating = new object(); $newrating->userid = $USER->id; $newrating->recordid = $record->id; $newrating->rating = $rating; $DB->insert_record('data_ratings', $newrating); data_update_grades($data, $record->userid); } } } if ($count == 0) { print_error('invalidratedata', 'data'); } if (!empty($_SERVER['HTTP_REFERER'])) { redirect($_SERVER['HTTP_REFERER'], get_string('ratingssaved', 'data')); } else { // try to guess where to return if ($count == 1) { redirect('view.php?mode=single&rid=' . $record->id, get_string('ratingssaved', 'data')); } else { redirect('view.php?d=' . $data->id, get_string('ratingssaved', 'data')); }
function xmldb_data_upgrade($oldversion = 0) { global $CFG, $THEME, $db; $result = true; /// And upgrade begins here. For each one, you'll need one /// block of code similar to the next one. Please, delete /// this comment lines once this file start handling proper /// upgrade code. /// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php /// $result = result of "/lib/ddllib.php" function calls /// } if ($result && $oldversion < 2006121300) { /// Define field format to be added to data_comments $table = new XMLDBTable('data_comments'); $field = new XMLDBField('format'); $field->setAttributes(XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'content'); /// Launch add field format $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007022600) { /// Define field asearchtemplate to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('asearchtemplate'); $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'jstemplate'); /// Launch add field asearchtemplate $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007072200) { require_once $CFG->dirroot . '/mod/data/lib.php'; // too much debug output $db->debug = false; data_update_grades(); $db->debug = true; } if ($result && $oldversion < 2007081400) { /// Define field notification to be added to data $table = new XMLDBTable('data'); $field = new XMLDBField('notification'); $field->setAttributes(XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null, 'editany'); /// Launch add field notification $result = $result && add_field($table, $field); } if ($result && $oldversion < 2007081402) { /// Define index type-dataid (not unique) to be added to data_fields $table = new XMLDBTable('data_fields'); $index = new XMLDBIndex('type-dataid'); $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('type', 'dataid')); /// Launch add index type-dataid if (!index_exists($table, $index)) { $result = $result && add_index($table, $index); } /// Define index course (not unique) to be added to data $table = new XMLDBTable('data'); $index = new XMLDBIndex('course'); $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('course')); /// Launch add index course if (!index_exists($table, $index)) { $result = $result && add_index($table, $index); } } //===== 1.9.0 upgrade line ======// if ($result && $oldversion < 2007101512) { /// Launch add field asearchtemplate again if does not exists yet - reported on several sites $table = new XMLDBTable('data'); $field = new XMLDBField('asearchtemplate'); $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'jstemplate'); if (!field_exists($table, $field)) { $result = $result && add_field($table, $field); } } return $result; }