// Attendance savepoint reached.
upgrade_mod_savepoint(true, 2017071802, 'attendance');
}
+
+ if ($oldversion < 2017082200) {
+ // Warnings idnumber field should use attendanceid instead of cmid.
+ $sql = "SELECT cm.id, cm.instance
+ FROM {course_modules} cm
+ JOIN {modules} md ON md.id = cm.module AND md.name = 'attendance'";
+ $idnumbers = $DB->get_records_sql_menu($sql);
+ $warnings = $DB->get_recordset('attendance_warning');
+ foreach ($warnings as $warning) {
+ if (!empty($warning->idnumber) && !empty($idnumbers[$warning->idnumber])) {
+ $warning->idnumber = $idnumbers[$warning->idnumber];
+ $DB->update_record("attendance_warning", $warning);
+ }
+ }
+ $warnings->close();
+
+ // Attendance savepoint reached.
+ upgrade_mod_savepoint(true, 2017082200, 'attendance');
+ }
return $result;
}
/**
* Add default set of warnings to the new attendance.
*
- * @param int $attid - id of attendance instance.
+ * @param int $id - id of attendance instance.
*/
-function attendance_add_default_warnings($cmid) {
+function attendance_add_default_warnings($id) {
global $DB, $CFG;
require_once($CFG->dirroot.'/mod/attendance/locallib.php');
array('idnumber' => 0), 'id');
foreach ($warnings as $n) {
$rec = $n;
- $rec->idnumber = $cmid;
+ $rec->idnumber = $id;
$DB->insert_record('attendance_warning', $rec);
}
$warnings->close();
att_add_default_statuses($attendance->id);
- attendance_add_default_warnings($attendance->coursemodule);
+ attendance_add_default_warnings($attendance->id);
attendance_grade_item_update($attendance);
JOIN {attendance_log} atl ON (atl.sessionid = ats.id)
JOIN {user} u ON (u.id = atl.studentid)
JOIN {attendance_statuses} stg ON (stg.id = atl.statusid AND stg.deleted = 0 AND stg.visible = 1)
- JOIN {attendance_warning} n ON n.idnumber = cm.id
+ JOIN {attendance_warning} n ON n.idnumber = a.id
LEFT JOIN {attendance_warning_done} ns ON ns.notifyid = n.id AND ns.userid = atl.studentid
JOIN (SELECT attendanceid, setnumber, MAX(grade) AS maxgrade
FROM {attendance_statuses}
*/
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2017072100;
+$plugin->version = 2017082200;
$plugin->requires = 2017042100;
$plugin->release = '3.3.11';
$plugin->maturity = MATURITY_ALPHA;
if (empty($id)) {
$notify->idnumber = 0;
} else {
- $notify->idnumber = $cm->id;
+ $notify->idnumber = $att->id;
}
$notify->warningpercent = $data->warningpercent;
} else {
$notify = $DB->get_record('attendance_warning', array('id' => $data->notid));
- if (!empty($id) && $data->idnumber != $id) {
+ if (!empty($id) && $data->idnumber != $att->id) {
// Someone is trying to update a record for a different attendance.
print_error('invalidcoursemodule');
} else {
$params = array('id' => $notid);
if (!empty($id)) {
// Add id/level to array.
- $params['idnumber'] = $cm->id;
+ $params['idnumber'] = $id;
}
$DB->delete_records('attendance_warning', $params);
echo $OUTPUT->notification(get_string('warningdeleted', 'mod_attendance'), 'success');
'warningpercent');
} else {
$existingnotifications = $DB->get_records('attendance_warning',
- array('idnumber' => $cm->id),
+ array('idnumber' => $att->id),
'warningpercent');
}
if (!empty($existingnotifications)) {