Example #1
0
 /**
  * Test the tag updated event.
  */
 public function test_tag_updated()
 {
     $this->setAdminUser();
     // Save the system context.
     $systemcontext = context_system::instance();
     // Create a tag we are going to update.
     $tag = $this->getDataGenerator()->create_tag();
     // Store the name before we change it.
     $oldname = $tag->name;
     // Trigger and capture the event when renaming a tag.
     $sink = $this->redirectEvents();
     tag_rename($tag->id, 'newname');
     $this->assertDebuggingCalled();
     // Update the tag's name since we have renamed it.
     $tag->name = 'newname';
     $events = $sink->get_events();
     $event = reset($events);
     // Check that the event data is valid.
     $this->assertInstanceOf('\\core\\event\\tag_updated', $event);
     $this->assertEquals($systemcontext, $event->get_context());
     $expected = array(SITEID, 'tag', 'update', 'index.php?id=' . $tag->id, $oldname . '->' . $tag->name);
     $this->assertEventLegacyLogData($expected, $event);
     // Trigger and capture the event when setting the type of a tag.
     $sink = $this->redirectEvents();
     tag_type_set($tag->id, 'official');
     $this->assertDebuggingCalled();
     $events = $sink->get_events();
     $event = reset($events);
     // Check that the event data is valid.
     $this->assertInstanceOf('\\core\\event\\tag_updated', $event);
     $this->assertEquals($systemcontext, $event->get_context());
     $expected = array(0, 'tag', 'update', 'index.php?id=' . $tag->id, $tag->name);
     $this->assertEventLegacyLogData($expected, $event);
     // Trigger and capture the event for setting the description of a tag.
     $sink = $this->redirectEvents();
     tag_description_set($tag->id, 'description', FORMAT_MOODLE);
     $this->assertDebuggingCalled();
     $events = $sink->get_events();
     $event = reset($events);
     // Check that the event data is valid.
     $this->assertInstanceOf('\\core\\event\\tag_updated', $event);
     $this->assertEquals($systemcontext, $event->get_context());
     $expected = array(0, 'tag', 'update', 'index.php?id=' . $tag->id, $tag->name);
     $this->assertEventLegacyLogData($expected, $event);
 }
Example #2
0
 } else {
     // They might be trying to change the rawname, make sure it's a change that doesn't affect name
     $norm = tag_normalize($tagnew->rawname, TAG_CASE_LOWER);
     $tagnew->name = array_shift($norm);
     if ($tag->name != $tagnew->name) {
         // The name has changed, let's make sure it's not another existing tag
         if (tag_get_id($tagnew->name)) {
             // Something exists already, so flag an error
             $errorstring = s($tagnew->rawname) . ': ' . get_string('namesalreadybeeingused', 'tag');
         }
     }
 }
 if (empty($errorstring)) {
     // All is OK, let's save it
     $tagnew = file_postupdate_standard_editor($tagnew, 'description', $editoroptions, $systemcontext, 'tag', 'description', $tag->id);
     tag_description_set($tag_id, $tagnew->description, $tagnew->descriptionformat);
     $tagnew->timemodified = time();
     if (has_capability('moodle/tag:manage', $systemcontext)) {
         // rename tag
         if (!tag_rename($tag->id, $tagnew->rawname)) {
             print_error('errorupdatingrecord', 'tag');
         }
     }
     //log tag changes activity
     //if tag name exist from form, renaming is allow.  record log action as rename
     //otherwise, record log action as update
     if (isset($tagnew->name) && $tag->name != $tagnew->name) {
         add_to_log($COURSE->id, 'tag', 'update', 'index.php?id=' . $tag->id, $tag->name . '->' . $tagnew->name);
     } elseif ($tag->description != $tagnew->description) {
         add_to_log($COURSE->id, 'tag', 'update', 'index.php?id=' . $tag->id, $tag->name);
     }
Example #3
0
    $options->filter = false;
    // convert and remove any XSS
    $tag->description = format_text($tag->description, $tag->descriptionformat, $options);
    $tag->descriptionformat = FORMAT_HTML;
}
$errorstring = '';
$tagform = new tag_edit_form();
if ($tag->tagtype == 'official') {
    $tag->tagtype = '1';
} else {
    $tag->tagtype = '0';
}
$tagform->set_data($tag);
// If new data has been sent, update the tag record
if ($tagnew = $tagform->get_data()) {
    tag_description_set($tag_id, stripslashes($tagnew->description), $tagnew->descriptionformat);
    if (has_capability('moodle/tag:manage', $systemcontext)) {
        if ($tag->tagtype != 'default' && (!isset($tagnew->tagtype) || $tagnew->tagtype != '1')) {
            tag_type_set($tag->id, 'default');
        } elseif ($tag->tagtype != 'official' && $tagnew->tagtype == '1') {
            tag_type_set($tag->id, 'official');
        }
    }
    if (!has_capability('moodle/tag:manage', $systemcontext) && !has_capability('moodle/tag:edit', $systemcontext)) {
        unset($tagnew->name);
        unset($tagnew->rawname);
    } else {
        // They might be trying to change the rawname, make sure it's a change that doesn't affect name
        $tagnew->name = array_shift(tag_normalize($tagnew->rawname, TAG_CASE_LOWER));
        if ($tag->name != $tagnew->name) {
            // The name has changed, let's make sure it's not another existing tag