$data->customtitles = 0;
}
- return $DB->insert_record('book', $data);
+ $id = $DB->insert_record('book', $data);
+
+ $completiontimeexpected = !empty($data->completionexpected) ? $data->completionexpected : null;
+ \core_completion\api::update_completion_date_event($data->coursemodule, 'book', $id, $completiontimeexpected);
+
+ return $id;
}
/**
$book = $DB->get_record('book', array('id'=>$data->id));
$DB->set_field('book', 'revision', $book->revision+1, array('id'=>$book->id));
+ $completiontimeexpected = !empty($data->completionexpected) ? $data->completionexpected : null;
+ \core_completion\api::update_completion_date_event($data->coursemodule, 'book', $book->id, $completiontimeexpected);
+
return true;
}
return false;
}
+ $cm = get_coursemodule_from_instance('book', $id);
+ \core_completion\api::update_completion_date_event($cm->id, 'book', $id, null);
+
$DB->delete_records('book_chapters', array('bookid'=>$book->id));
$DB->delete_records('book', array('id'=>$book->id));
'mod_book:nav_exit' => 'fa-arrow-up',
];
}
+
+/**
+ * Handles creating actions for events.
+ *
+ * @param 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_book_core_calendar_provide_event_action(calendar_event $event,
+ \core_calendar\action_factory $factory) {
+ $cm = get_fast_modinfo($event->courseid)->instances['book'][$event->instance];
+ $context = context_module::instance($cm->id);
+
+ if (!has_capability('mod/book:read', $context)) {
+ return null;
+ }
+
+ $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/book/view.php', ['id' => $cm->id]),
+ 1,
+ true
+ );
+}
\ No newline at end of file