/** * Display tag list * * @var array $tags array of tag string * OR * @var integer $itemid * @var integer $catid * @var integer $modid * * @return array (subject language, array of linked tags) */ function tagBar($tags, $catid = 0, $modid = 0) { static $loaded, $delimiter; if (empty($tags)) { return array(); } if (!isset($loaded)) { include XOOPS_ROOT_PATH . "/modules/tag/include/vars.php"; include_once XOOPS_ROOT_PATH . "/modules/tag/include/functions.php"; tag_define_url_delimiter(); if (!is_object($GLOBALS["xoopsModule"]) || "tag" != $GLOBALS["xoopsModule"]->getVar("dirname")) { if (function_exists("xoops_load_lang_file")) { xoops_load_lang_file("main", "tag"); } else { $path = XOOPS_ROOT_PATH . "/modules/tag/language"; if (!@(include_once "{$path}/{$GLOBALS['xoopsConfig']['language']}/main.php")) { $ret = @(include_once "{$path}/english/main.php"); } } } $loaded = 1; $delimiter = @file_exists(XOOPS_ROOT_PATH . "/modules/tag/images/delimiter.gif") ? "<img src=\"" . XOOPS_URL . "/modules/tag/images/delimiter.gif\" alt=\"\" />" : "<img src=\"" . XOOPS_URL . "/images/pointer.gif\" alt=\"\" />"; } // itemid if (is_numeric($tags)) { if (empty($modid) && is_object($GLOBALS["xoopsModule"])) { $modid = $GLOBALS["xoopsModule"]->getVar("mid"); } $tag_handler =& xoops_getmodulehandler("tag", "tag"); if (!($tags = $tag_handler->getByItem($tags, $modid, $catid))) { return array(); } // if ready, do nothing } elseif (is_array($tags)) { // parse } elseif (!($tags = tag_parse_tag($tags))) { return array(); } $tags_data = array(); foreach ($tags as $tag) { $tags_data[] = "<a href=\"" . XOOPS_URL . "/modules/" . $GLOBALS["xoopsModule"]->getVar("dirname") . "/view.tag.php" . URL_DELIMITER . urlencode($tag) . "\" title=\"" . htmlspecialchars($tag) . "\">" . htmlspecialchars($tag) . "</a>"; } return array("title" => TAG_MD_TAGS, "delimiter" => $delimiter, "tags" => $tags_data); }
exit; } $tag_obj =& $tags_obj[0]; $tag_id = $tag_obj->getVar("tag_id"); } if (!empty($tag_desc)) { $page_title = $tag_desc; } else { $module_name = "tag" == $xoopsModule->getVar("dirname") ? $xoopsConfig["sitename"] : $xoopsModule->getVar("name"); $page_title = sprintf(TAG_MD_TAGVIEW, htmlspecialchars($tag_term), $module_name); } $xoopsOption["template_main"] = "tag_view.html"; $xoopsOption["xoops_pagetitle"] = strip_tags($page_title); include XOOPS_ROOT_PATH . "/header.php"; $tag_config = tag_load_config(); tag_define_url_delimiter(); $limit = empty($tag_config["items_perpage"]) ? 10 : $tag_config["items_perpage"]; $sort = "time"; $order = "DESC"; $criteria = new CriteriaCompo(new Criteria("o.tag_id", $tag_id)); $criteria->setSort($sort); $criteria->setOrder($order); $criteria->setStart($start); $criteria->setLimit($limit); if (!empty($modid)) { $criteria->add(new Criteria("o.tag_modid", $modid)); if ($catid >= 0) { $criteria->add(new Criteria("o.tag_catid", $catid)); } } $items = $tag_handler->getItems($criteria);
function tag_block_top_show($options, $dirname = "", $catid = 0) { global $xoopsDB; if (empty($dirname)) { $modid = 0; } elseif (isset($GLOBALS["xoopsModule"]) && is_object($GLOBALS["xoopsModule"]) && $GLOBALS["xoopsModule"]->getVar("dirname") == $dirname) { $modid = $GLOBALS["xoopsModule"]->getVar("mid"); } else { $module_handler =& xoops_gethandler("module"); $module = $module_handler->getByDirname($dirname); $modid = $module->getVar("mid"); } $block = array(); $tag_handler =& xoops_getmodulehandler("tag", "tag"); tag_define_url_delimiter(); $criteria = new CriteriaCompo(); $sort = $options[2] == "a" || $options[2] == "alphabet" ? "count" : $options[2]; $criteria->setSort("count"); $criteria->setOrder("DESC"); $criteria->setLimit($options[0]); $criteria->add(new Criteria("o.tag_status", 0)); if (!empty($options[1])) { $criteria->add(new Criteria("l.tag_time", time() - $options[1] * 24 * 3600, ">")); } if (!empty($modid)) { $criteria->add(new Criteria("l.tag_modid", $modid)); if ($catid >= 0) { $criteria->add(new Criteria("l.tag_catid", $catid)); } } if (!($tags = $tag_handler->getByLimit($criteria, empty($options[1])))) { return $block; } $count_max = 0; $count_min = 0; $tags_sort = array(); foreach (array_keys($tags) as $key) { if ($tags[$key]["count"] > $count_max) { $count_max = $tags[$key]["count"]; } if ($tags[$key]["count"] < $count_min) { $count_min = $tags[$key]["count"]; } if ($options[2] == "a" || $options[2] == "alphabet") { $tags_sort[] = strtolower($tags[$key]["term"]); } } $count_interval = $count_max - $count_min; /* $font_max = $options[1]; $font_min = $options[2]; $font_ratio = ($count_interval) ? ($font_max - $font_min) / $count_interval : 1; */ if (!empty($tags_sort)) { array_multisort($tags_sort, SORT_ASC, $tags); } $tags_data = array(); foreach (array_keys($tags) as $key) { $tags_data[] = array("id" => $tags[$key]["id"], "term" => $tags[$key]["term"], "count" => $tags[$key]["count"]); } unset($tags, $tags_term); $block["tags"] =& $tags_data; $block["tag_dirname"] = "tag"; if (!empty($modid)) { $module_handler =& xoops_gethandler('module'); if ($module_obj =& $module_handler->get($modid)) { $block["tag_dirname"] = $module_obj->getVar("dirname"); } } return $block; }
function tag_block_cumulus_show($options, $dirname = "", $catid = 0) { global $xoopsDB; if (empty($dirname)) { $modid = 0; } elseif (isset($GLOBALS["xoopsModule"]) && is_object($GLOBALS["xoopsModule"]) && $GLOBALS["xoopsModule"]->getVar("dirname") == $dirname) { $modid = $GLOBALS["xoopsModule"]->getVar("mid"); } else { $module_handler =& xoops_gethandler("module"); $module = $module_handler->getByDirname($dirname); $modid = $module->getVar("mid"); } $block = array(); $tag_handler =& xoops_getmodulehandler("tag", "tag"); tag_define_url_delimiter(); $criteria = new CriteriaCompo(); $criteria->setSort("count"); $criteria->setOrder("DESC"); $criteria->setLimit($options[0]); $criteria->add(new Criteria("o.tag_status", 0)); if (!empty($modid)) { $criteria->add(new Criteria("l.tag_modid", $modid)); if ($catid >= 0) { $criteria->add(new Criteria("l.tag_catid", $catid)); } } if (!($tags = $tag_handler->getByLimit($criteria, empty($options[1])))) { return $block; } $count_max = 0; $count_min = 0; $tags_term = array(); foreach (array_keys($tags) as $key) { if ($tags[$key]["count"] > $count_max) { $count_max = $tags[$key]["count"]; } if ($tags[$key]["count"] < $count_min || $count_min == 0) { $count_min = $tags[$key]["count"]; } $tags_term[] = strtolower($tags[$key]["term"]); } array_multisort($tags_term, SORT_ASC, $tags); $count_interval = $count_max - $count_min; $level_limit = 5; $font_max = $options[2]; $font_min = $options[3]; $font_ratio = $count_interval ? ($font_max - $font_min) / $count_interval : 1; $tags_data = array(); foreach (array_keys($tags) as $key) { $tags_data[] = array("id" => $tags[$key]["id"], "font" => $count_interval ? floor(($tags[$key]["count"] - $count_min) * $font_ratio + $font_min) : 12, "level" => empty($count_max) ? 0 : floor(($tags[$key]["count"] - $count_min) * $level_limit / $count_max), "term" => $tags[$key]["term"], "count" => $tags[$key]["count"]); } unset($tags, $tags_term); $block["tags"] =& $tags_data; $block["tag_dirname"] = "tag"; if (!empty($modid)) { $module_handler =& xoops_gethandler('module'); if ($module_obj =& $module_handler->get($modid)) { $block["tag_dirname"] = $module_obj->getVar("dirname"); } } $flash_params = array('flash_url' => XOOPS_URL . "/modules/cumulus/include/cumulus.swf", 'width' => $options[4], 'height' => $options[5], 'background' => preg_replace('/(#)/ie', '', $options[6]), 'tcolor' => "0x" . preg_replace('/(#)/ie', '', $options[8]), 'hicolor' => "0x" . preg_replace('/(#)/ie', '', $options[9]), 'tcolor2' => "0x" . preg_replace('/(#)/ie', '', $options[10]), 'speed' => $options[11]); $output = '<tags>'; $xoops_url = XOOPS_URL; foreach ($tags_data as $term) { // assign font size $output .= <<<EOT <a href='{$xoops_url}/modules/tag/view.tag.php?{$term['id']}' style='{$term['font']}'>{$term['term']}</a> EOT; } $output .= '</tags>'; $flash_params['tags_formatted_flash'] = $output; if ($options[7] === "transparent") { $flash_params['transparency'] = 'widget_so.addParam("wmode", "transparent");'; } $block["flash_params"] = $flash_params; return $block; }