Merge branch 'wip-mdl-41266' of https://github.com/rajeshtaneja/moodle
[moodle.git] / lib / classes / event / course_module_created.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Event to be triggered when a new course module is created.
19  *
20  * @property-read array $other {
21  *      Extra information about event.
22  *
23  *      @type string modulename name of module created.
24  *      @type string name title of module.
25  *      @type string instanceid id of module instance.
26  * }
27  *
28  * @package    core
29  * @copyright  2013 Ankit Agarwal
30  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
31  */
33 namespace core\event;
34 defined('MOODLE_INTERNAL') || die();
36 /**
37  * Class course_module_created
38  *
39  * Class for event to be triggered when a new course module is created.
40  *
41  * @package    core
42  * @copyright  2013 Ankit Agarwal
43  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
44  */
45 class course_module_created extends base {
47     /**
48      * Set basic properties for the event.
49      */
50     protected function init() {
51         $this->data['objecttable'] = 'course_modules';
52         $this->data['crud'] = 'c';
53         $this->data['edulevel'] = self::LEVEL_TEACHING;
54     }
56     /**
57      * Returns localised general event name.
58      *
59      * @return string
60      */
61     public static function get_name() {
62         return get_string('eventcoursemodulecreated', 'core');
63     }
65     /**
66      * Returns non-localised event description with id's for admin use only.
67      *
68      * @return string
69      */
70     public function get_description() {
71         return 'The '. $this->other['modulename'] . ' module with instance id ' . $this->other['instanceid'] .
72                 ' was created by user with id ' . $this->userid;
73     }
75     /**
76      * Returns relevant URL.
77      * @return \moodle_url
78      */
79     public function get_url() {
80         return new \moodle_url('/mod/' . $this->other['modulename'] . '/view.php', array('id' => $this->objectid));
81     }
83     /**
84      * Legacy event name.
85      *
86      * @return string legacy event name
87      */
88     public static function get_legacy_eventname() {
89         return 'mod_created';
90     }
92     /**
93      * Legacy event data.
94      *
95      * @return \stdClass
96      */
97     protected function get_legacy_eventdata() {
98         $eventdata = new \stdClass();
99         $eventdata->modulename = $this->other['modulename'];
100         $eventdata->name       = $this->other['name'];
101         $eventdata->cmid       = $this->objectid;
102         $eventdata->courseid   = $this->courseid;
103         $eventdata->userid     = $this->userid;
104         return $eventdata;
105     }
107     /**
108      * replace add_to_log() statement.
109      *
110      * @return array of parameters to be passed to legacy add_to_log() function.
111      */
112     protected function get_legacy_logdata() {
113         return array ($this->courseid, "course", "add mod", "../mod/" . $this->other['modulename'] . "/view.php?id=" .
114                 $this->objectid, $this->other['modulename'] . " " . $this->other['instanceid']);
115     }
117     /**
118      * custom validations
119      *
120      * Throw \coding_exception notice in case of any problems.
121      */
122     protected function validate_data() {
123         if (!isset($this->other['modulename'])) {
124             throw new \coding_exception("Field other['modulename'] cannot be empty");
125         }
126         if (!isset($this->other['instanceid'])) {
127             throw new \coding_exception("Field other['instanceid'] cannot be empty");
128         }
129         if (!isset($this->other['name'])) {
130             throw new \coding_exception("Field other['name'] cannot be empty");
131         }
132     }