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/>. 16 17 /** 18 * Class represents a single subscription. 19 * 20 * @package tool_monitor 21 * @copyright 2014 onwards Ankit Agarwal <ankit.agrr@gmail.com> 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 namespace tool_monitor; 26 27 defined('MOODLE_INTERNAL') || die(); 28 29 /** 30 * Class represents a single subscription instance (i.e with all the subscription info). 31 * 32 * @since Moodle 2.8 33 * @package tool_monitor 34 * @copyright 2014 onwards Ankit Agarwal <ankit.agrr@gmail.com> 35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 36 */ 37 class subscription { 38 /** 39 * @var \stdClass 40 */ 41 protected $subscription; 42 43 /** 44 * Constructor. 45 * 46 * use {@link \tool_monitor\subscription_manager::get_subscription} to get an instance instead of directly calling this method. 47 * 48 * @param \stdClass $subscription 49 */ 50 public function __construct($subscription) { 51 $this->subscription = $subscription; 52 } 53 54 /** 55 * Magic get method. 56 * 57 * @param string $prop property to get. 58 * @return mixed 59 * @throws \coding_exception 60 */ 61 public function __get($prop) { 62 if (isset($this->subscription->$prop)) { 63 return $this->subscription->$prop; 64 } 65 throw new \coding_exception('Property "' . $prop . '" doesn\'t exist'); 66 } 67 68 /** 69 * Magic isset method. 70 * 71 * @param string $prop the property to get. 72 * @return bool true if the property is set, false otherwise. 73 */ 74 public function __isset($prop) { 75 return property_exists($this->subscription, $prop); 76 } 77 78 /** 79 * Get a human readable name for instances associated with this subscription. 80 * 81 * @return string 82 * @throws \coding_exception 83 */ 84 public function get_instance_name() { 85 if ($this->plugin === 'core') { 86 $string = get_string('allevents', 'tool_monitor'); 87 } else { 88 if ($this->cmid == 0) { 89 $string = get_string('allmodules', 'tool_monitor'); 90 } else { 91 $cms = get_fast_modinfo($this->courseid); 92 $cms = $cms->get_cms(); 93 if (isset($cms[$this->cmid])) { 94 $string = $cms[$this->cmid]->get_formatted_name(); // Instance name. 95 } else { 96 // Something is wrong, instance is not present anymore. 97 $string = get_string('invalidmodule', 'tool_monitor'); 98 } 99 } 100 } 101 102 return $string; 103 } 104 105 /** 106 * Method to get event name. 107 * 108 * @return string 109 * @throws \coding_exception 110 */ 111 public function get_event_name() { 112 $eventclass = $this->eventname; 113 if (class_exists($eventclass)) { 114 return $eventclass::get_name_with_info(); 115 } 116 return get_string('eventnotfound', 'tool_monitor'); 117 } 118 119 /** 120 * Get filter description. 121 * 122 * @return string 123 */ 124 public function get_filters_description() { 125 $a = new \stdClass(); 126 $a->freq = $this->frequency; 127 $mins = $this->timewindow / MINSECS; // Convert seconds to minutes. 128 $a->mins = $mins; 129 return get_string('freqdesc', 'tool_monitor', $a); 130 } 131 132 /** 133 * Get properly formatted name of the rule associated. 134 * 135 * @param \context $context context where this name would be displayed. 136 * @return string Formatted name of the rule. 137 */ 138 public function get_name(\context $context) { 139 return format_text($this->name, FORMAT_HTML, array('context' => $context)); 140 } 141 142 /** 143 * Get properly formatted description of the rule associated. 144 * 145 * @param \context $context context where this description would be displayed. 146 * @return string Formatted description of the rule. 147 */ 148 public function get_description(\context $context) { 149 return format_text($this->description, $this->descriptionformat, array('context' => $context)); 150 } 151 152 /** 153 * Get name of the plugin associated with this rule 154 * 155 * @return string Plugin name. 156 */ 157 public function get_plugin_name() { 158 if ($this->plugin === 'core') { 159 $string = get_string('core', 'tool_monitor'); 160 } else if (get_string_manager()->string_exists('pluginname', $this->plugin)) { 161 $string = get_string('pluginname', $this->plugin); 162 } else { 163 $string = $this->plugin; 164 } 165 return $string; 166 } 167 168 /** 169 * Get properly formatted name of the course associated. 170 * 171 * @param \context $context context where this name would be displayed. 172 * @return string Formatted name of the rule. 173 */ 174 public function get_course_name(\context $context) { 175 $courseid = $this->courseid; 176 if (empty($courseid)) { 177 return get_string('site'); 178 } else { 179 try { 180 $course = get_course($courseid); 181 return format_string($course->fullname, true, array('context' => $context)); 182 } catch (\dml_exception $e) { 183 return '-'; 184 } 185 } 186 } 187 188 /** 189 * Can the current user manage the rule associate with this subscription? 190 * 191 * @return bool true if the current user can manage this rule, else false. 192 */ 193 public function can_manage_rule() { 194 $courseid = $this->rulecourseid; 195 $context = empty($courseid) ? \context_system::instance() : \context_course::instance($courseid); 196 return has_capability('tool/monitor:managerules', $context); 197 } 198 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body