/** * Add tag group * * @param string $name * @param string $url * @param string $template * @param array $metadata */ public function add_tag_group($name, $url, $template, $tag_template, $metadata, $return_id_if_exists = false, $new_tags = '') { if (!vivvo_hooks_manager::call('tag_addGroup', array(&$name, &$url, &$template, &$tag_template, &$metadata, &$return_id_if_exists, &$new_tags))) { return vivvo_hooks_manager::get_status(); } $sm = vivvo_lite_site::get_instance(); $user = $sm->user; if ($user && $user->can('MANAGE_TAGS')) { $tag_group_list = new TagsGroups_list(); $tag_group = new TagsGroups(); if (!$tag_group->set_name($name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'))) { $this->set_error_code(12, vivvo_lang::get_instance()->get_value('LNG_DB_tags_groups_name')); return false; } if ($existing_group = $tag_group_list->get_group_by_name($name)) { if (!$return_id_if_exists) { $this->set_error_code(2417); return false; } return $existing_group->get_id(); } $um = $sm->get_url_manager(); if (empty($url)) { $url = make_sefriendly($name); } else { $url = make_sefriendly($url); } $um->set_param('TAG_GROUP_url', $url); $sefriendly = secure_sql($url); $sql = 'SELECT id FROM ' . VIVVO_DB_PREFIX . "categories WHERE sefriendly = '{$sefriendly}' LIMIT 1 UNION\n\t\t\t\t\t\tSELECT id FROM " . VIVVO_DB_PREFIX . "tags_groups WHERE url = '{$sefriendly}' LIMIT 1"; if (($res = $sm->get_db()->query($sql)) && $res->numRows() > 0) { $this->set_error_code(2418); return false; } $tag_group->set_url($url); $tag_group->set_template($template); $tag_group->set_tag_template($tag_template); $tag_group->set_metadata($metadata); $this->_post_master->set_data_object($tag_group); if (!$this->_post_master->sql_insert()) { $this->set_error_code(2412); return false; } $work_id = $this->_post_master->get_work_id(); $um->register_url(urlencode($url), 'lib/vivvo/url_handlers/topic.php', 'topic_url_handler', 'topic_content_handler'); $um->set_param('search_id', $work_id); if ($new_tags) { $this->add_tag_names_to_topic($new_tags, $work_id); } admin_log($user->get_username(), 'Added topic #' . $work_id); return $work_id; } $this->set_error_code(2410); return false; }