$existing_tagtypes['default'] = get_string('tagtype_default', 'tag'); switch ($action) { case 'delete': if (!data_submitted() or !confirm_sesskey()) { break; } $str_tagschecked = implode(', ', tag_get_name($tagschecked)); tag_delete($tagschecked); $notice = $str_tagschecked . ' -- ' . get_string('deleted', 'tag'); break; case 'reset': if (!data_submitted() or !confirm_sesskey()) { break; } $str_tagschecked = implode(', ', tag_get_name($tagschecked)); tag_unset_flag($tagschecked); $notice = $str_tagschecked . ' -- ' . get_string('reset', 'tag'); break; case 'changetype': if (!data_submitted() or !confirm_sesskey()) { break; } $changed = array(); foreach ($tagschecked as $tag_id) { if (!array_key_exists($tagtypes[$tag_id], $existing_tagtypes)) { //can not add new types here!! continue; } // update tag type; if (tag_type_set($tag_id, $tagtypes[$tag_id])) { $changed[] = $tag_id;
/** * Test the tag unflagged event. */ public function test_tag_unflagged() { global $DB; $this->setAdminUser(); // Create tags we are going to unflag. $tag = $this->getDataGenerator()->create_tag(); $tag2 = $this->getDataGenerator()->create_tag(); // Flag it. tag_set_flag($tag->id); // Trigger and capture the event for unsetting the flag of a tag. $sink = $this->redirectEvents(); tag_unset_flag($tag->id); $events = $sink->get_events(); $event = reset($events); // Check that the flag was updated. $tag = $DB->get_record('tag', array('id' => $tag->id)); $this->assertEquals(0, $tag->flag); // Check that the event data is valid. $this->assertInstanceOf('\\core\\event\\tag_unflagged', $event); $this->assertEquals(context_system::instance(), $event->get_context()); // Set the flag back for both. tag_set_flag(array($tag->id, $tag2->id)); // Trigger and capture the event for unsetting the flag for multiple tags. $sink = $this->redirectEvents(); tag_unset_flag(array($tag->id, $tag2->id)); $events = $sink->get_events(); // Check that the flags were updated. $tag = $DB->get_record('tag', array('id' => $tag->id)); $this->assertEquals(0, $tag->flag); $tag2 = $DB->get_record('tag', array('id' => $tag2->id)); $this->assertEquals(0, $tag2->flag); // Confirm the events. $event = $events[0]; $this->assertInstanceOf('\\core\\event\\tag_unflagged', $event); $this->assertEquals(context_system::instance(), $event->get_context()); $event = $events[1]; $this->assertInstanceOf('\\core\\event\\tag_unflagged', $event); $this->assertEquals(context_system::instance(), $event->get_context()); }
case 'delete': require_sesskey(); if (!$tagschecked && $tagid) { $tagschecked = array($tagid); } tag_delete($tagschecked); redirect(new moodle_url($PAGE->url, array('notice' => 'deleted'))); break; case 'setflag': require_sesskey(); tag_set_flag($tagid); redirect(new moodle_url($PAGE->url, array('notice' => 'flagged'))); break; case 'resetflag': require_sesskey(); tag_unset_flag($tagid); redirect(new moodle_url($PAGE->url, array('notice' => 'resetflag'))); break; case 'changetype': require_sesskey(); if ($tagtype === 'official' || $tagtype === 'default') { if (tag_type_set($tagid, $tagtype)) { redirect(new moodle_url($PAGE->url, array('notice' => 'typechanged'))); } } redirect($PAGE->url); break; case 'addofficialtag': require_sesskey(); $otagsadd = optional_param('otagsadd', '', PARAM_RAW); $newtags = preg_split('/\\s*,\\s*/', trim($otagsadd), -1, PREG_SPLIT_NO_EMPTY);