MDL-39956 cohort: Convert to new events
authorDan Poltawski <dan@moodle.com>
Fri, 12 Jul 2013 06:21:37 +0000 (14:21 +0800)
committerFrederic Massart <fred@moodle.com>
Tue, 13 Aug 2013 09:30:58 +0000 (17:30 +0800)
* \core\event\cohort_created
* \core\event\cohort_updated
* \core\event\cohort_deleted
* \core\event\cohort_member_added
* \core\event\cohort_member_removed

cohort/lib.php
lib/classes/event/cohort_created.php [new file with mode: 0644]
lib/classes/event/cohort_deleted.php [new file with mode: 0644]
lib/classes/event/cohort_member_added.php [new file with mode: 0644]
lib/classes/event/cohort_member_removed.php [new file with mode: 0644]
lib/classes/event/cohort_updated.php [new file with mode: 0644]

index 61d56c9..6639639 100644 (file)
@@ -57,7 +57,12 @@ function cohort_add_cohort($cohort) {
 
     $cohort->id = $DB->insert_record('cohort', $cohort);
 
-    events_trigger('cohort_added', $cohort);
+    $event = \core\event\cohort_created::create(array(
+        'context' => context::instance_by_id($cohort->contextid),
+        'objectid' => $cohort->id,
+    ));
+    $event->add_record_snapshot('cohort', $cohort);
+    $event->trigger();
 
     return $cohort->id;
 }
@@ -76,7 +81,11 @@ function cohort_update_cohort($cohort) {
     $cohort->timemodified = time();
     $DB->update_record('cohort', $cohort);
 
-    events_trigger('cohort_updated', $cohort);
+    $event = \core\event\cohort_updated::create(array(
+        'context' => context::instance_by_id($cohort->contextid),
+        'objectid' => $cohort->id,
+    ));
+    $event->trigger();
 }
 
 /**
@@ -94,7 +103,12 @@ function cohort_delete_cohort($cohort) {
     $DB->delete_records('cohort_members', array('cohortid'=>$cohort->id));
     $DB->delete_records('cohort', array('id'=>$cohort->id));
 
-    events_trigger('cohort_deleted', $cohort);
+    $event = \core\event\cohort_deleted::create(array(
+        'context' => context::instance_by_id($cohort->contextid),
+        'objectid' => $cohort->id,
+    ));
+    $event->add_record_snapshot('cohort', $cohort);
+    $event->trigger();
 }
 
 /**
@@ -141,7 +155,15 @@ function cohort_add_member($cohortid, $userid) {
     $record->timeadded = time();
     $DB->insert_record('cohort_members', $record);
 
-    events_trigger('cohort_member_added', (object)array('cohortid'=>$cohortid, 'userid'=>$userid));
+    $cohort = $DB->get_record('cohort', array('id' => $cohortid), '*', MUST_EXIST);
+
+    $event = \core\event\cohort_member_added::create(array(
+        'context' => context::instance_by_id($cohort->contextid),
+        'objectid' => $cohortid,
+        'relateduserid' => $userid,
+    ));
+    $event->add_record_snapshot('cohort', $cohort);
+    $event->trigger();
 }
 
 /**
@@ -154,7 +176,15 @@ function cohort_remove_member($cohortid, $userid) {
     global $DB;
     $DB->delete_records('cohort_members', array('cohortid'=>$cohortid, 'userid'=>$userid));
 
-    events_trigger('cohort_member_removed', (object)array('cohortid'=>$cohortid, 'userid'=>$userid));
+    $cohort = $DB->get_record('cohort', array('id' => $cohortid), '*', MUST_EXIST);
+
+    $event = \core\event\cohort_member_removed::create(array(
+        'context' => context::instance_by_id($cohort->contextid),
+        'objectid' => $cohortid,
+        'relateduserid' => $userid,
+    ));
+    $event->add_record_snapshot('cohort', $cohort);
+    $event->trigger();
 }
 
 /**
diff --git a/lib/classes/event/cohort_created.php b/lib/classes/event/cohort_created.php
new file mode 100644 (file)
index 0000000..d97cc72
--- /dev/null
@@ -0,0 +1,79 @@
+<?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/>.
+
+namespace core\event;
+
+/**
+ * Cohort created event.
+ *
+ * @package    core
+ * @copyright  2013 Dan Poltawski <dan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+class cohort_created extends base {
+    protected function init() {
+        $this->data['crud'] = 'c';
+        $this->data['level'] = 50;
+        $this->data['objecttable'] = 'cohort';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string|\lang_string
+     */
+    public static function get_name() {
+        //TODO: localise
+        return 'Cohort created';
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string|\lang_string
+     */
+    public function get_description() {
+        //TODO: localise
+        return 'Cohort '.$this->objectid.' was created by '.$this->userid.' at context '.$this->contextid;
+    }
+
+    /**
+     * Returns relevant URL.
+     * @return \moodle_url
+     */
+    public function get_url() {
+        return new \moodle_url('/cohort/index.php', array('contextid' => $this->contextid));
+    }
+
+    /**
+     * Does this event replace legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public function get_legacy_eventname() {
+        return 'cohort_added';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    public function get_legacy_eventdata() {
+        return $this->get_record_snapshot('cohort', $this->objectid);
+    }
+}
diff --git a/lib/classes/event/cohort_deleted.php b/lib/classes/event/cohort_deleted.php
new file mode 100644 (file)
index 0000000..af5365a
--- /dev/null
@@ -0,0 +1,79 @@
+<?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/>.
+
+namespace core\event;
+
+/**
+ * Cohort deleted event.
+ *
+ * @package    core
+ * @copyright  2013 Dan Poltawski <dan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+class cohort_deleted extends base {
+    protected function init() {
+        $this->data['crud'] = 'd';
+        $this->data['level'] = 50;
+        $this->data['objecttable'] = 'cohort';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string|\lang_string
+     */
+    public static function get_name() {
+        //TODO: localise
+        return 'Cohort deleted';
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string|\lang_string
+     */
+    public function get_description() {
+        //TODO: localise
+        return 'Cohort '.$this->objectid.' was deleted by '.$this->userid.' from context '.$this->contextid;
+    }
+
+    /**
+     * Returns relevant URL.
+     * @return \moodle_url
+     */
+    public function get_url() {
+        return new \moodle_url('/cohort/index.php', array('contextid' => $this->contextid));
+    }
+
+    /**
+     * Does this event replace legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public function get_legacy_eventname() {
+        return 'cohort_deleted';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    public function get_legacy_eventdata() {
+        return $this->get_record_snapshot('cohort', $this->objectid);
+    }
+}
diff --git a/lib/classes/event/cohort_member_added.php b/lib/classes/event/cohort_member_added.php
new file mode 100644 (file)
index 0000000..74e03f0
--- /dev/null
@@ -0,0 +1,82 @@
+<?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/>.
+
+namespace core\event;
+
+/**
+ * User added to a cohort
+ *
+ * @package    core
+ * @copyright  2013 Dan Poltawski <dan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+class cohort_member_added extends base {
+    protected function init() {
+        $this->data['crud'] = 'c';
+        $this->data['level'] = 50;
+        $this->data['objecttable'] = 'cohort';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string|\lang_string
+     */
+    public static function get_name() {
+        //TODO: localise
+        return 'User added to a cohort';
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string|\lang_string
+     */
+    public function get_description() {
+        //TODO: localise
+        return 'User '.$this->relateduserid.' was added to cohort '.$this->objectid.' by:'.$this->userid;
+    }
+
+    /**
+     * Returns relevant URL.
+     * @return \moodle_url
+     */
+    public function get_url() {
+        return new \moodle_url('/cohort/assign.php', array('id' => $this->objectid));
+    }
+
+    /**
+     * Does this event replace legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public function get_legacy_eventname() {
+        return 'cohort_member_added';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    public function get_legacy_eventdata() {
+        $data = new \stdClass();
+        $data->cohortid = $this->objectid;
+        $data->userid = $this->relateduserid;
+        return $data;
+    }
+}
diff --git a/lib/classes/event/cohort_member_removed.php b/lib/classes/event/cohort_member_removed.php
new file mode 100644 (file)
index 0000000..9282672
--- /dev/null
@@ -0,0 +1,82 @@
+<?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/>.
+
+namespace core\event;
+
+/**
+ * User removed from a cohort
+ *
+ * @package    core
+ * @copyright  2013 Dan Poltawski <dan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+class cohort_member_removed extends base {
+    protected function init() {
+        $this->data['crud'] = 'c';
+        $this->data['level'] = 50;
+        $this->data['objecttable'] = 'cohort';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string|\lang_string
+     */
+    public static function get_name() {
+        //TODO: localise
+        return 'User removed from a cohort';
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string|\lang_string
+     */
+    public function get_description() {
+        //TODO: localise
+        return 'User '.$this->relateduserid.' was removed from cohort '.$this->objectid.' by: '.$this->userid;
+    }
+
+    /**
+     * Returns relevant URL.
+     * @return \moodle_url
+     */
+    public function get_url() {
+        return new \moodle_url('/cohort/assign.php', array('id' => $this->objectid));
+    }
+
+    /**
+     * Does this event replace legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public function get_legacy_eventname() {
+        return 'cohort_member_removed';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    public function get_legacy_eventdata() {
+        $data = new \stdClass();
+        $data->cohortid = $this->objectid;
+        $data->userid = $this->relateduserid;
+        return $data;
+    }
+}
diff --git a/lib/classes/event/cohort_updated.php b/lib/classes/event/cohort_updated.php
new file mode 100644 (file)
index 0000000..cf33411
--- /dev/null
@@ -0,0 +1,79 @@
+<?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/>.
+
+namespace core\event;
+
+/**
+ * Cohort updated event.
+ *
+ * @package    core
+ * @copyright  2013 Dan Poltawski <dan@moodle.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+class cohort_updated extends base {
+    protected function init() {
+        $this->data['crud'] = 'u';
+        $this->data['level'] = 50;
+        $this->data['objecttable'] = 'cohort';
+    }
+
+    /**
+     * Returns localised general event name.
+     *
+     * @return string|\lang_string
+     */
+    public static function get_name() {
+        //TODO: localise
+        return 'Cohort updated';
+    }
+
+    /**
+     * Returns localised description of what happened.
+     *
+     * @return string|\lang_string
+     */
+    public function get_description() {
+        //TODO: localise
+        return 'Cohort '.$this->objectid.' was updated by '.$this->userid.' at context '.$this->contextid;
+    }
+
+    /**
+     * Returns relevant URL.
+     * @return \moodle_url
+     */
+    public function get_url() {
+        return new \moodle_url('/cohort/edit.php', array('id' => $this->objectid));
+    }
+
+    /**
+     * Does this event replace legacy event?
+     *
+     * @return null|string legacy event name
+     */
+    public function get_legacy_eventname() {
+        return 'cohort_updated';
+    }
+
+    /**
+     * Legacy event data if get_legacy_eventname() is not empty.
+     *
+     * @return mixed
+     */
+    public function get_legacy_eventdata() {
+        return $this->get_record_snapshot('cohort', $this->objectid);
+    }
+}