$string['errortagfrontpage'] = 'Tagging the site main page is not allowed';
$string['errorupdatingrecord'] = 'Error updating tag record';
$string['eventitemtagged'] = 'Item tagged';
+$string['eventtagcreated'] = 'Tag created';
$string['eventtagdeleted'] = 'Tag deleted';
$string['eventtagflagged'] = 'Tag flagged';
$string['eventtagunflagged'] = 'Tag unflagged';
--- /dev/null
+<?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/>.
+
+/**
+ * Tag created event.
+ *
+ * @property-read array $other {
+ * Extra information about event.
+ *
+ * - string name: the name of the tag.
+ * - string rawname: the raw name of the tag.
+ * }
+ *
+ * @package core
+ * @copyright 2014 Mark Nelson <markn@moodle.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+namespace core\event;
+
+defined('MOODLE_INTERNAL') || die();
+
+class tag_created extends base {
+
+ /**
+ * Initialise the event data.
+ */
+ protected function init() {
+ $this->data['objecttable'] = 'tag';
+ $this->data['crud'] = 'c';
+ $this->data['edulevel'] = self::LEVEL_OTHER;
+ }
+
+ /**
+ * Returns localised general event name.
+ *
+ * @return string
+ */
+ public static function get_name() {
+ return get_string('eventtagcreated', 'tag');
+ }
+
+ /**
+ * Returns non-localised description of what happened.
+ *
+ * @return string
+ */
+ public function get_description() {
+ return 'The tag with the id ' . $this->objectid . ' was created by the user with the id ' . $this->userid;
+ }
+
+ /**
+ * Custom validation.
+ *
+ * @throws \coding_exception
+ * @return void
+ */
+ protected function validate_data() {
+ parent::validate_data();
+
+ if (!isset($this->other['name'])) {
+ throw new \coding_exception('The name must be set in $other.');
+ }
+
+ if (!isset($this->other['rawname'])) {
+ throw new \coding_exception('The rawname must be set in $other.');
+ }
+ }
+}
$tag_object->name = $tag_name_lc;
//var_dump($tag_object);
$tags_ids[$tag_name_lc] = $DB->insert_record('tag', $tag_object);
+
+ $event = \core\event\tag_created::create(array(
+ 'objectid' => $tags_ids[$tag_name_lc],
+ 'relateduserid' => $tag_object->userid,
+ 'context' => context_system::instance(),
+ 'other' => array(
+ 'name' => $tag_object->name,
+ 'rawname' => $tag_object->rawname
+ )
+ ));
+ $event->trigger();
}
}
$sink = $this->redirectEvents();
tag_set('course', $course->id, array('A tag'), 'core', context_course::instance($course->id)->id);
$events = $sink->get_events();
- $event = reset($events);
+ $event = $events[1];
// Check that the course was tagged and that the event data is valid.
$this->assertEquals(1, $DB->count_records('tag_instance', array('component' => 'core')));
$this->assertEquals(context_system::instance(), $event->get_context());
}
}
+
+ /**
+ * Test the tag created event.
+ */
+ public function test_tag_created() {
+ global $DB;
+
+ // Trigger and capture the event for creating a tag.
+ $sink = $this->redirectEvents();
+ tag_add('A really awesome tag!');
+ $events = $sink->get_events();
+ $event = reset($events);
+
+ // Check that the tag was created and the event data is valid.
+ $this->assertEquals(1, $DB->count_records('tag'));
+ $this->assertInstanceOf('\core\event\tag_created', $event);
+ $this->assertEquals(context_system::instance(), $event->get_context());
+ }
}