. namespace core\event; /** * Section viewed event class. * * @package core * @copyright 2023 Amaia Anabitarte * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class section_viewed extends base { /** * Init method. * * @return void */ protected function init() { $this->data['objecttable'] = 'course_sections'; $this->data['crud'] = 'r'; $this->data['edulevel'] = self::LEVEL_PARTICIPATING; } /** * Returns non-localised description of what happened. * * @return string */ public function get_description() { return "The user with id '$this->userid' viewed the section with id '$this->objectid'."; } /** * Return localised event name. * * @return string */ public static function get_name() { return get_string('eventsectionviewed', 'core'); } /** * Get URL related to the action. * * @return \moodle_url|null */ public function get_url() { global $CFG, $DB; require_once($CFG->dirroot . '/course/lib.php'); try { $section = $DB->get_record($this->objecttable, ['id' => $this->objectid], '*', MUST_EXIST); return course_get_url($this->courseid, $section, ['navigation' => true]); } catch (\Exception $e) { return null; } } /** * Custom validation. * * @throws \coding_exception * @return void */ protected function validate_data() { parent::validate_data(); if ($this->contextlevel != CONTEXT_COURSE) { throw new \coding_exception('Context level must be CONTEXT_COURSE.'); } } /** * Used for mapping events on restore * * @return bool */ public static function get_other_mapping() { // No mapping required. return false; } }