MDL-57878 mod_*: added inclusion of completion event and callbacks

Part of MDL-55611 epic.
This commit is contained in:
Mark Nelson 2017-03-16 14:02:53 +08:00 committed by Damyon Wiese
parent 88d14007b3
commit b3bd7a66a0
12 changed files with 487 additions and 5 deletions

View file

@ -109,6 +109,10 @@ function resource_add_instance($data, $mform) {
// we need to use context now, so we need to make sure all needed info is already in db
$DB->set_field('course_modules', 'instance', $data->id, array('id'=>$cmid));
resource_set_mainfile($data);
$completiontimeexpected = !empty($data->completionexpected) ? $data->completionexpected : null;
\core_completion\api::update_completion_date_event($cmid, 'resource', $data->id, $completiontimeexpected);
return $data->id;
}
@ -129,6 +133,10 @@ function resource_update_instance($data, $mform) {
$DB->update_record('resource', $data);
resource_set_mainfile($data);
$completiontimeexpected = !empty($data->completionexpected) ? $data->completionexpected : null;
\core_completion\api::update_completion_date_event($data->coursemodule, 'resource', $data->id, $completiontimeexpected);
return true;
}
@ -172,6 +180,9 @@ function resource_delete_instance($id) {
return false;
}
$cm = get_coursemodule_from_instance('resource', $id);
\core_completion\api::update_completion_date_event($cm->id, 'resource', $id, null);
// note: all context files are deleted automatically
$DB->delete_records('resource', array('id'=>$resource->id));
@ -535,3 +546,32 @@ function resource_check_updates_since(cm_info $cm, $from, $filter = array()) {
$updates = course_check_module_updates_since($cm, $from, array('content'), $filter);
return $updates;
}
/**
* Handles creating actions for events.
*
* @param \core_calendar\event $event
* @param \core_calendar\action_factory $factory
* @return \core_calendar\local\event\value_objects\action|\core_calendar\local\interfaces\action_interface|null
*/
function mod_resource_core_calendar_provide_event_action(\core_calendar\event $event,
\core_calendar\action_factory $factory) {
$cm = get_fast_modinfo($event->courseid)->instances['resource'][$event->instance];
$course = new stdClass();
$course->id = $event->courseid;
$completion = new \completion_info($course);
$completiondata = $completion->get_data($cm, false);
if ($completiondata->completionstate != COMPLETION_INCOMPLETE) {
return null;
}
return $factory->create_instance(
get_string('view'),
new \moodle_url('/mod/resource/view.php', ['id' => $cm->id]),
1,
true
);
}