fdc729ea57
While restoring event context might not be present (deleted) So before using context api's check context or use event properties
102 lines
2.9 KiB
PHP
102 lines
2.9 KiB
PHP
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
/**
|
|
* Course module viewed event.
|
|
*
|
|
* @package core
|
|
* @copyright 2013 onwards Ankit Agarwal
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
namespace core\event;
|
|
defined('MOODLE_INTERNAL') || die();
|
|
|
|
/**
|
|
* Abstract Course module viewed event class.
|
|
*
|
|
* Class for event to be triggered when a course module is viewed.
|
|
*
|
|
* @package core
|
|
* @copyright 2013 onwards Ankit Agarwal
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
abstract class course_module_viewed extends base {
|
|
|
|
/**
|
|
* Init method.
|
|
*
|
|
* Please override this in extending class and specify objecttable.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function init() {
|
|
$this->data['crud'] = 'r';
|
|
$this->data['edulevel'] = self::LEVEL_PARTICIPATING;
|
|
}
|
|
|
|
/**
|
|
* Returns description of what happened.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_description() {
|
|
return "User with id '$this->userid' viewed course module '$this->objecttable' with instance id '$this->objectid'";
|
|
}
|
|
|
|
/**
|
|
* Return localised event name.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function get_name() {
|
|
return get_string('eventcoursemoduleviewed', 'core');
|
|
}
|
|
|
|
/**
|
|
* Get URL related to the action.
|
|
*
|
|
* @return \moodle_url
|
|
*/
|
|
public function get_url() {
|
|
return new \moodle_url("/mod/$this->objecttable/view.php", array('id' => $this->contextinstanceid));
|
|
}
|
|
|
|
/**
|
|
* Return the legacy event log data.
|
|
*
|
|
* @return array|null
|
|
*/
|
|
protected function get_legacy_logdata() {
|
|
return array($this->courseid, $this->objecttable, 'view', 'view.php?id=' . $this->contextinstanceid, $this->objectid,
|
|
$this->contextinstanceid);
|
|
}
|
|
|
|
/**
|
|
* Custom validation.
|
|
*
|
|
* @throws \coding_exception
|
|
* @return void
|
|
*/
|
|
protected function validate_data() {
|
|
// Make sure this class is never used without proper object details.
|
|
if (empty($this->objectid) || empty($this->objecttable)) {
|
|
throw new \coding_exception('course_module_viewed event must define objectid and object table.');
|
|
}
|
|
}
|
|
|
|
}
|