function tags_validate(&$datahandler) { global $mybb, $db, $thread, $lang; if ($mybb->settings['tags_enabled'] == 0 || tags_in_disforum($datahandler->fid) || $mybb->settings['tags_groups'] != -1 && !is_member($mybb->settings['tags_groups'])) { return; } $lang->load('tags'); $mybb->settings['tags_max_thread'] = (int) $mybb->settings['tags_max_thread']; if ($mybb->get_input('tags') != '' && ($datahandler->action == 'thread' || is_array($thread) && $datahandler->data['pid'] == $thread['firstpost'])) { $tags_value = $mybb->get_input('tags'); $tags_value = tags_string2tag($tags_value); $tags = explode(',', $tags_value); if (count($tags) > $mybb->settings['tags_max_thread'] && $mybb->settings['tags_max_thread'] > 0) { $lang->many_tags = $lang->sprintf($lang->many_tags, $mybb->settings['tags_max_thread']); $datahandler->set_error($lang->many_tags); return; } foreach ($tags as $tag) { if (my_strlen($tag) > 0 && my_strlen($tag) < $mybb->settings['tags_minchars']) { $datahandler->set_error($lang->tags_too_short); return; } elseif (my_strlen($tag) > $mybb->settings['tags_maxchars'] && $mybb->settings['tags_maxchars'] > 0) { $datahandler->set_error($lang->tags_too_long); return; } } } }
function tags_editpost_end() { global $mybb, $db, $lang, $templates, $thread, $post, $tags, $tags_value; if ($mybb->settings['tags_enabled'] == 0 || tags_in_disforum($thread['fid']) || $mybb->settings['tags_groups'] != -1 && !is_member($mybb->settings['tags_groups'])) { return; } $lang->load('tags'); if ($thread['firstpost'] != $mybb->get_input('pid', 1)) { return; } $tags_value = $mybb->get_input('tags'); if (!$tags_value) { $bad_tags = tags_getbads(true, false); $query = $db->simple_select('tags', '*', "tid='{$thread['tid']}'{$bad_tags}"); $thread['tags'] = array(); while ($tag = $db->fetch_array($query)) { if (!in_array($tag['name'], $thread['tags']) && $tag['name'] != '') { array_push($thread['tags'], $tag['name']); } } $tags_value = implode(',', $thread['tags']); } $tags_value = htmlspecialchars_uni(tags_string2tag($tags_value)); eval('$tags = "' . $templates->get('tags_input') . '";'); }
function tags_getbads($and = true, $prefix = true) { global $mybb; $b = $mybb->settings['tags_bad']; $b = str_replace(array("\r\n", "\n", "\r"), ',', $b); $b = tags_string2tag($b); $tags = explode(',', $b); $tags_hash = array(); foreach ($tags as $tag) { if ($tag == '') { continue; } if ($tag && !in_array("'" . md5($tag) . "'", $tags_hash)) { array_push($tags_hash, "'" . md5($tag) . "'"); } } $r = ''; if ($and) { $r .= ' AND '; } if ($prefix) { $r .= 'tags.'; } $r .= 'hash NOT IN (' . implode(', ', $tags_hash) . ')'; if (count($tags_hash)) { return $r; } else { return ''; } }
function tags_newthread_start() { global $mybb, $db, $templates, $tags, $tags_value, $lang, $fid; if ($mybb->settings['tags_enabled'] == 0 || tags_in_disforum($fid) || $mybb->settings['tags_groups'] != -1 && !is_member($mybb->settings['tags_groups'])) { return; } $lang->load('tags'); $tags_value = $mybb->get_input('tags'); $tags_value = htmlspecialchars_uni(tags_string2tag($tags_value)); eval('$tags = "' . $templates->get('tags_input') . '";'); }
function tags_showthread() { global $mybb, $db, $theme, $lang, $templates, $thread, $tags, $collapsedimg, $collapsed; if ($mybb->settings['tags_enabled'] == 0 || tags_in_disforum($thread['fid'])) { return; } $lang->load('tags'); $subject = $thread['subject']; $tid = $thread['tid']; $thread['tags'] = array(); $query = DBTags::get("*", "threads.tid = '{$tid}'"); while ($tag = $db->fetch_array($query)) { if ($tag['name'] && !in_array($tag['name'], $thread['tags'])) { array_push($thread['tags'], $tag['name']); } } if ($db->num_rows($query) == 0) { $subject = tags_string2tag($subject); $tags = explode(',', $subject); $tags_insert = array(); foreach ($tags as $tag) { if ($tag && !in_array(array('tid' => $tid, 'name' => $db->escape_string($tag), 'hash' => md5($tag)), $tags_insert)) { array_push($tags_insert, array('tid' => $tid, 'name' => $db->escape_string($tag), 'hash' => md5($tag))); } } if (count($tags_insert) > 0) { $db->delete_query("tags", "tid={$tid}"); $db->insert_query_multiple("tags", $tags_insert); } $thread['tags'] = $tags; } $tags = ''; $comma = ''; $i = 0; foreach ($thread['tags'] as $tag) { if ($tag == '' || $i >= 25) { continue; } $tag = htmlspecialchars_uni($tag); $tag_link = get_tag_link($tag); eval('$tags .= "' . $templates->get('tags_box_tag') . '";'); $comma = $lang->comma; $i++; } $thread['tags_meta'] = htmlspecialchars_uni(implode(', ', $thread['tags'])); if ($tags != '') { eval('$tags = "' . $templates->get('tags_box') . '";'); } }
</url> EOT; } header('Content-type: text/xml'); echo <<<EOT <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> {$sitemaps} </urlset> EOT; exit; } $page = $mybb->get_input('page', 1); $name = $mybb->get_input('name'); $name = $parser->parse_badwords($name); $name = tags_string2tag($name); $name = htmlspecialchars_uni($name); $url_name = urlencode(str_replace(',', '-', $name)); $names = explode(',', $name); $hash = array(); foreach ($names as $n) { array_push($hash, "'" . md5($n) . "'"); } $hash = implode(', ', $hash); $mybb->settings['tags_per_page'] = (int) $mybb->settings['tags_per_page']; if ($mybb->settings['tags_per_page'] <= 0 || $mybb->settings['tags_per_page'] >= 100) { $mybb->settings['tags_per_page'] = 10; } add_breadcrumb($lang->tags, get_tag_link()); $tag_link = get_tag_link(); if ($name && $mybb->settings['tags_seo'] && $mybb->settings['tags_forceseo'] && tags_current_url() != $mybb->settings['bburl'] . '/' . get_tag_link($url_name) && tags_current_url() != $mybb->settings['bburl'] . '/' . get_tag_link($url_name) . "?page={$page}") {