예제 #1
0
$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());
 }
예제 #3
0
 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);