MDL-20700 coding style cleanup - cvs keywords removed, closign php tag removed, trail...
[moodle.git] / tag / edit.php
1 <?php
3 require_once('../config.php');
4 require_once('lib.php');
5 require_once('edit_form.php');
7 $tag_id = optional_param('id', 0, PARAM_INT);
8 $tag_name = optional_param('tag', '', PARAM_TAG);
10 require_login();
12 if (empty($CFG->usetags)) {
13     print_error('tagsaredisabled', 'tag');
14 }
16 //Editing a tag requires moodle/tag:edit capability
17 $systemcontext   = get_context_instance(CONTEXT_SYSTEM);
18 require_capability('moodle/tag:edit', $systemcontext);
20 if ($tag_name) {
21     $tag = tag_get('name', $tag_name, '*');
22 } else if ($tag_id) {
23     $tag = tag_get('id', $tag_id, '*');
24 }
26 if (empty($tag)) {
27     redirect($CFG->wwwroot.'/tag/search.php');
28 }
30 $PAGE->set_url('tag/index.php', array('id' => $tag->id));
31 $PAGE->set_subpage($tag->id);
32 $PAGE->set_context($systemcontext);
33 $PAGE->set_blocks_editing_capability('moodle/tag:editblocks');
34 $PAGE->set_generaltype('form');
36 $PAGE->requires->yui_lib('animation');
37 $PAGE->requires->yui_lib('autocomplete');
39 $tagname = tag_display_name($tag);
41 // set the relatedtags field of the $tag object that will be passed to the form
42 $tag->relatedtags = tag_get_related_tags_csv(tag_get_related_tags($tag->id, TAG_RELATED_MANUAL), TAG_RETURN_TEXT);
44 if (can_use_html_editor()) {
45     $options = new object();
46     $options->smiley = false;
47     $options->filter = false;
49     // convert and remove any XSS
50     $tag->description       = format_text($tag->description, $tag->descriptionformat, $options);
51     $tag->descriptionformat = FORMAT_HTML;
52 }
54 $errorstring = '';
56 $tagform = new tag_edit_form();
57 if ( $tag->tagtype == 'official' ) {
58     $tag->tagtype = '1';
59 } else {
60     $tag->tagtype = '0';
61 }
62 $tagform->set_data($tag);
64 // If new data has been sent, update the tag record
65 if ($tagnew = $tagform->get_data()) {
67     tag_description_set($tag_id, $tagnew->description, $tagnew->descriptionformat);
69     if (has_capability('moodle/tag:manage', $systemcontext)) {
70         if (($tag->tagtype != 'default') && (!isset($tagnew->tagtype) || ($tagnew->tagtype != '1'))) {
71             tag_type_set($tag->id, 'default');
73         } elseif (($tag->tagtype != 'official') && ($tagnew->tagtype == '1')) {
74             tag_type_set($tag->id, 'official');
75         }
76     }
78     if (!has_capability('moodle/tag:manage', $systemcontext) && !has_capability('moodle/tag:edit', $systemcontext)) {
79         unset($tagnew->name);
80         unset($tagnew->rawname);
82     } else {  // They might be trying to change the rawname, make sure it's a change that doesn't affect name
83         $tagnew->name = array_shift(tag_normalize($tagnew->rawname, TAG_CASE_LOWER));
85         if ($tag->name != $tagnew->name) {  // The name has changed, let's make sure it's not another existing tag
86             if (tag_get_id($tagnew->name)) {   // Something exists already, so flag an error
87                 $errorstring = s($tagnew->rawname).': '.get_string('namesalreadybeeingused', 'tag');
88             }
89         }
90     }
92     if (empty($errorstring)) {    // All is OK, let's save it
94         $tagnew->timemodified = time();
96         if (has_capability('moodle/tag:manage', $systemcontext)) {
97             // rename tag
98             if(!tag_rename($tag->id, $tagnew->rawname)) {
99                 print_error('errorupdatingrecord', 'tag');
100             }
101         }
103         //log tag changes activity
104         //if tag name exist from form, renaming is allow.  record log action as rename
105         //otherwise, record log action as update
106         if (isset($tagnew->name) && ($tag->name != $tagnew->name)){
107             add_to_log($COURSE->id, 'tag', 'update', 'index.php?id='. $tag->id, $tag->name . '->'. $tagnew->name);
109         } elseif ($tag->description != $tagnew->description) {
110             add_to_log($COURSE->id, 'tag', 'update', 'index.php?id='. $tag->id, $tag->name);
111         }
113         //updated related tags
114         tag_set('tag', $tagnew->id, explode(',', trim($tagnew->relatedtags)));
115         //print_object($tagnew); die();
117         redirect($CFG->wwwroot.'/tag/index.php?tag='.rawurlencode($tag->name)); // must use $tag here, as the name isn't in the edit form
118     }
121 $PAGE->navbar->add(get_string('tags', 'tag'), new moodle_url($CFG->wwwroot.'/tag/search.php'));
122 $PAGE->navbar->add($tagname);
123 $PAGE->set_title(get_string('tag', 'tag') . ' - '. $tagname);
124 echo $OUTPUT->header();
125 echo $OUTPUT->heading($tagname, 2);
127 if (!empty($errorstring)) {
128     echo $OUTPUT->notification($errorstring);
131 $tagform->display();
133 if (ajaxenabled()) {
134     $PAGE->requires->js('tag/tag.js');
135     $PAGE->requires->js_function_call('init_tag_autocomplete')->on_dom_ready();
137 echo $OUTPUT->footer();