function xmldb_journal_upgrade($oldversion = 0) { global $CFG, $DB; $dbman = $DB->get_manager(); $result = true; // No DB changes since 1.9.0 // Add journal instances to the gradebook if ($oldversion < 2010120300) { journal_update_grades(); upgrade_mod_savepoint(true, 2010120300, 'journal'); } // Change assessed field for grade if ($result && $oldversion < 2011040600) { // Rename field assessed on table journal to grade $table = new xmldb_table('journal'); $field = new xmldb_field('assessed', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', 'days'); // Launch rename field grade $dbman->rename_field($table, $field, 'grade'); // journal savepoint reached upgrade_mod_savepoint(true, 2011040600, 'journal'); } if ($result && $oldversion < 2012032001) { // Changing the default of field rating on table journal_entries to drop it $table = new xmldb_table('journal_entries'); $field = new xmldb_field('rating', XMLDB_TYPE_INTEGER, '10', null, null, null, null, 'format'); // Launch change of default for field rating $dbman->change_field_default($table, $field); // Updating the non-marked entries with rating = NULL $entries = $DB->get_records('journal_entries', array('timemarked' => 0)); if ($entries) { foreach ($entries as $entry) { $entry->rating = NULL; $DB->update_record('journal_entries', $entry); } } // journal savepoint reached upgrade_mod_savepoint(true, 2012032001, 'journal'); } return $result; }
$newentry->timemarked = $timenow; $newentry->mailed = 0; // Make sure mail goes out (again, even) $newentry->id = $num; if (!$DB->update_record("journal_entries", $newentry)) { notify("Failed to update the journal feedback for user {$entry->userid}"); } else { $count++; } $entrybyuser[$entry->userid]->rating = $vals['r']; $entrybyuser[$entry->userid]->entrycomment = $vals['c']; $entrybyuser[$entry->userid]->teacher = $USER->id; $entrybyuser[$entry->userid]->timemarked = $timenow; $journal = $DB->get_record("journal", array("id" => $entrybyuser[$entry->userid]->journal)); $journal->cmidnumber = $cm->idnumber; journal_update_grades($journal, $entry->userid); } } // Trigger module feedback updated event. $event = \mod_journal\event\feedback_updated::create(array('objectid' => $journal->id, 'context' => $context)); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('journal', $journal); $event->trigger(); notify(get_string("feedbackupdated", "journal", "{$count}"), "notifysuccess"); } else { // Trigger module viewed event. $event = \mod_journal\event\entries_viewed::create(array('objectid' => $journal->id, 'context' => $context)); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('journal', $journal);
/** * Update journal grades in 1.9 gradebook * * @param object $journal if is null, all journals * @param int $userid if is false al users * @param boolean $nullifnone return null if grade does not exist */ function journal_update_grades($journal = null, $userid = 0, $nullifnone = true) { global $CFG, $DB; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once $CFG->libdir . '/gradelib.php'; } if ($journal != null) { if ($grades = journal_get_user_grades($journal, $userid)) { journal_grade_item_update($journal, $grades); } else { if ($userid && $nullifnone) { $grade = new object(); $grade->userid = $userid; $grade->rawgrade = NULL; journal_grade_item_update($journal, $grade); } else { journal_grade_item_update($journal); } } } else { $sql = "SELECT j.*, cm.idnumber as cmidnumber\n FROM {course_modules} cm\n JOIN {modules} m ON m.id = cm.module\n JOIN {journal} j ON cm.instance = j.id\n WHERE m.name = 'journal'"; if ($recordset = $DB->get_records_sql($sql)) { foreach ($recordset as $journal) { if ($journal->grade != false) { journal_update_grades($journal); } else { journal_grade_item_update($journal); } } } } }