Fixes #265 create calendar events when restoring an attendance.
authorDan Marsden <dan@danmarsden.com>
Tue, 13 Jun 2017 23:13:20 +0000 (11:13 +1200)
committerDan Marsden <dan@danmarsden.com>
Tue, 13 Jun 2017 23:13:20 +0000 (11:13 +1200)
also add sanity check if restored session doesn't have a calendar event.

backup/moodle2/restore_attendance_stepslib.php
classes/structure.php

index 97bd5ed..ba6b6fd 100644 (file)
@@ -120,7 +120,11 @@ class restore_attendance_activity_structure_step extends restore_activity_struct
         $data->caleventid = $this->get_mappingid('event', $data->caleventid);
 
         $newitemid = $DB->insert_record('attendance_sessions', $data);
+        $data->id = $newitemid;
         $this->set_mapping('attendance_session', $oldid, $newitemid, true);
+
+        // Create Calendar event.
+        attendance_create_calendar_event($data);
     }
 
     /**
index bf461bf..c271091 100644 (file)
@@ -513,8 +513,12 @@ class mod_attendance_structure {
 
         $sess->timemodified = time();
         $DB->update_record('attendance_sessions', $sess);
-
-        attendance_update_calendar_event($sess->caleventid, $sess->duration, $sess->sessdate);
+        if (empty($sess->caleventid)) {
+             // This shouldn't really happen, but just in case to prevent fatal error.
+            attendance_create_calendar_event($sess);
+        } else {
+            attendance_update_calendar_event($sess->caleventid, $sess->duration, $sess->sessdate);
+        }
 
         $info = construct_session_full_date_time($sess->sessdate, $sess->duration);
         $event = \mod_attendance\event\session_updated::create(array(