Ejemplo n.º 1
0
 /**
  * Edit tag group
  *
  * @param	int		$id
  * @param	string	$name
  * @param	string	$url
  * @param	string	$template
  * @param	array	$metadata
  */
 public function edit_tag_group($id, $name, $url, $template, $tag_template, $metadata, $new_tags = '')
 {
     if (!vivvo_hooks_manager::call('tag_editGroup', array(&$id, &$name, &$url, &$template, &$tag_template, &$metadata))) {
         return vivvo_hooks_manager::get_status();
     }
     $sm = vivvo_lite_site::get_instance();
     $user = $sm->user;
     if ($user && $user->can('MANAGE_TAGS')) {
         if (empty($url)) {
             $url = make_sefriendly($name);
         } else {
             $url = make_sefriendly($url);
         }
         $tag_group_list = new TagsGroups_list();
         $existing_group = $tag_group_list->get_group_by_name($name);
         $tag_group = $tag_group_list->get_group_by_id($id = (int) $id);
         if (is_object($existing_group) && $tag_group->id != $existing_group->id) {
             $this->set_error_code(2422);
             return false;
         }
         if ($tag_group) {
             $sefriendly = secure_sql($url);
             $sql = 'SELECT id FROM ' . VIVVO_DB_PREFIX . "categories WHERE sefriendly = '{$sefriendly}' LIMIT 1 UNION\n\t\t\t\t\t\t\tSELECT id FROM " . VIVVO_DB_PREFIX . "tags_groups WHERE url = '{$sefriendly}' AND id <> {$id} LIMIT 1";
             if (($res = $sm->get_db()->query($sql)) && $res->numRows() > 0) {
                 $this->set_error_code(2418);
                 return false;
             }
             $old_url = $tag_group->get_url();
             $tag_group->set_name(htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));
             $tag_group->set_url($url);
             $tag_group->set_template($template);
             $tag_group->set_tag_template($tag_template);
             $tag_group->set_metadata(array_merge($tag_group->get_meta(), $metadata));
             $this->_post_master->set_data_object($tag_group);
             if (!$this->_post_master->sql_update()) {
                 $this->set_error_code(2413);
                 return false;
             }
             if ($old_url != $url) {
                 $um = $sm->get_url_manager();
                 $um->unregister_url(urlencode($old_url));
                 $um->register_url(urlencode($url), 'lib/vivvo/url_handlers/topic.php', 'topic_url_handler', 'topic_content_handler');
             }
             if ($new_tags) {
                 $this->add_tag_names_to_topic($new_tags, $id);
             }
             admin_log($user->get_username(), 'Edited topic #' . $tag_group->id);
             return true;
         }
     }
     $this->set_error_code(2410);
     return false;
 }