MDL-44369 Calendar: add events for subscriptions
[moodle.git] / lib / classes / event / calendar_subscription_deleted.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  * calendar subscription deleted event.
19  *
20  * @package    core
21  * @copyright  2016 Stephen Bourget
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core\event;
26 defined('MOODLE_INTERNAL') || die();
28 /**
29  * Event triggered after a calendar subscription is deleted.
30  *
31  * @property-read array $other {
32  *      Extra information about the event.
33  *
34  *      - int courseid: The ID of the course (SITEID, User(0) or actual course)
35  * }
36  *
37  * @package    core
38  * @since      Moodle 3.2
39  * @copyright  2016 Stephen Bourget
40  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
41  */
42 class calendar_subscription_deleted extends base
43 {
45     /**
46      * Init method.
47      *
48      * @return void
49      */
50     protected function init() {
51         $this->data['crud'] = 'd';
52         $this->data['edulevel'] = self::LEVEL_OTHER;
53         $this->data['objecttable'] = 'event_subscriptions';
54     }
56     /**
57      * Returns localised general event name.
58      *
59      * @return string
60      */
61     public static function get_name() {
62         return get_string('eventsubscriptiondeleted', 'calendar');
63     }
65     /**
66      * Returns description of what happened.
67      *
68      * @return string
69      */
70     public function get_description() {
71         return "User {$this->userid} has deleted a calendar
72          subscription with id {$this->objectid}.";
73     }
75     /**
76      * Returns relevant URL.
77      *
78      * @return \moodle_url
79      */
80     public function get_url() {
81         if (($this->other['courseid'] == SITEID) || ($this->other['courseid'] == 0)) {
82             return new \moodle_url('calendar/managesubscriptions.php');
83         } else {
84             return new \moodle_url('calendar/managesubscriptions.php', array('course' => $this->other['courseid']));
85         }
86     }
88     /**
89      * Custom validations.
90      *
91      * @throws \coding_exception
92      * @return void
93      */
94     protected function validate_data() {
95         parent::validate_data();
96         if (!isset($this->context)) {
97             throw new \coding_exception('The \'context\' must be set.');
98         }
99         if (!isset($this->objectid)) {
100             throw new \coding_exception('The \'objectid\' must be set.');
101         }
102         if (!isset($this->other['courseid'])) {
103             throw new \coding_exception('The \'courseid\' value must be set in other.');
104         }
105     }
107     /**
108      * Returns mappings for restore
109      *
110      * @return array
111      */
112     public static function get_objectid_mapping() {
113         return array('db' => 'event_subscriptions', 'restore' => 'event_subscriptions');
114     }