MDL-36088 questions: Add new events
[moodle.git] / lib / classes / event / question_category_base.php
index dce12b0..fa1ffc7 100644 (file)
@@ -18,7 +18,7 @@
  * Base class for question category events.
  *
  * @package    core
- * @copyright  2016 Stephen Bourget
+ * @copyright  2019 Stephen Bourget
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
@@ -30,11 +30,11 @@ defined('MOODLE_INTERNAL') || die();
  * Base class for question category events
  *
  * @package    core
- * @since      Moodle 3.6
- * @copyright  2016 Stephen Bourget
+ * @since      Moodle 3.7
+ * @copyright  2019 Stephen Bourget
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-class question_category_base extends base {
+abstract class question_category_base extends base {
 
     /**
      * Init method.
@@ -53,20 +53,43 @@ class question_category_base extends base {
         if ($this->courseid) {
             $cat = $this->objectid . ',' . $this->contextid;
             if ($this->contextlevel == CONTEXT_MODULE) {
-                return new \moodle_url('/question/edit.php', array('cmid' => $this->contextinstanceid, 'cat' => $cat));
+                return new \moodle_url('/question/edit.php', ['cmid' => $this->contextinstanceid, 'cat' => $cat]);
             }
-            return new \moodle_url('/question/edit.php', array('courseid' => $this->courseid, 'cat' => $cat));
+            return new \moodle_url('/question/edit.php', ['courseid' => $this->courseid, 'cat' => $cat]);
         }
         // Lets try viewing from the frontpage for contexts above course.
-        return new \moodle_url('/question/category.php', array('courseid' => SITEID, 'edit' => $this->objectid));
+        return new \moodle_url('/question/category.php', ['courseid' => SITEID, 'edit' => $this->objectid]);
     }
 
     /**
      * Returns DB mappings used with backup / restore.
+     *
      * @return array
      */
     public static function get_objectid_mapping() {
-        return array('db' => 'question_categories', 'restore' => 'question_categories');
+        return ['db' => 'question_categories', 'restore' => 'question_categories'];
+    }
+
+    /**
+     * Create a event from question category object
+     *
+     * @param object $category
+     * @param object|null $context
+     * @return base
+     * @throws \coding_exception
+     */
+    public static function create_from_question_category_instance($category, $context = null) {
+
+        $params = ['objectid' => $category->id];
+
+        if (!empty($category->contextid)) {
+            $params['contextid'] = $category->contextid;
+        }
+
+        $params['context'] = $context;
+
+        $event = self::create($params);
+        return $event;
     }
 }