timemodified = time(); $exp360->timecreated = time(); // Process standard intro fields. $exp360->introformat = FORMAT_HTML; $exp360->intro = ''; return $DB->insert_record('exp360', $exp360); } function exp360_update_instance($exp360) { global $DB; $exp360->timemodified = time(); $exp360->id = $exp360->instance; // Process standard intro fields. $exp360->introformat = FORMAT_HTML; $exp360->intro = ''; return $DB->update_record('exp360', $exp360); } function exp360_delete_instance($id) { global $DB; if (!$exp360 = $DB->get_record('exp360', array('id' => $id))) { return false; } $DB->delete_records('exp360', array('id' => $exp360->id)); return true; } function mod_exp360_cm_info_dynamic(cm_info $cm) { global $PAGE; if ($cm->modname !== 'exp360') { return; } $renderer = $PAGE->get_renderer('mod_exp360'); $modals = $renderer->render_modals(); $script = $renderer->render_activity($cm->id); $cm->set_no_view_link(); $cm->set_content($script . $modals); } /** * Event observer for mod_exp360. */ function mod_exp360_event_observer($event) { global $PAGE, $DB; // Get the course ID from the event. $courseid = $event->courseid; // Check if the course contains any instances of the exp360 activity. $sql = "SELECT COUNT(*) FROM {course_modules} cm JOIN {modules} m ON cm.module = m.id JOIN {exp360} e ON cm.instance = e.id WHERE cm.course = :courseid AND m.name = 'exp360'"; $params = ['courseid' => $courseid]; $count = $DB->count_records_sql($sql, $params); // If the course contains at least one instance of exp360, inject the JavaScript. if ($count > 0) { $PAGE->requires->js('/mod/exp360/global.js'); } } /** * Returns the list of event observers. * * @return array */ function mod_exp360_get_event_observers() { return [ [ 'eventname' => '\core\event\course_viewed', 'callback' => 'mod_exp360_event_observer', ], ]; }