plugin.tag.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 114 行

PHP
114
字号
<?php
/**
 * Tag info
 *
 * @copyright	The XOOPS project http://www.xoops.org/
 * @license		http://www.fsf.org/copyleft/gpl.html GNU public license
 * @author		Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
 * @since		1.00
 * @version		$Id$
 * @package		module::tag
 */
if (!defined('XOOPS_ROOT_PATH')){ exit(); }

/**
 * Get item fileds:
 * title
 * content
 * time
 * link
 * uid
 * uname
 * tags
 *
 * @var		array	$items	associative array of items: [modid][catid][itemid]
 *
 * @return	boolean
 * 
 */
if (!defined('XOOPS_ROOT_PATH')){ exit(); }

include dirname(__FILE__)."/vars.php";

IF(!function_exists($GLOBALS["artdirname"]."_tag_iteminfo")):

mod_loadFunctions("parse", $GLOBALS["artdirname"]);

art_parse_function('
function [DIRNAME]_tag_iteminfo(&$items)
{
	if(empty($items) || !is_array($items)){
		return false;
	}
	
	$items_id = array();
	foreach(array_keys($items) as $cat_id){
		// Some handling here to build the link upon catid
			// catid is not used in article, so just skip it
		foreach(array_keys($items[$cat_id]) as $item_id){
			// In article, the item_id is "art_id"
			$items_id[] = intval($item_id);
		}
	}
	$item_handler =& xoops_getmodulehandler("article", $GLOBALS["artdirname"]);
	$items_obj = $item_handler->getObjects(new Criteria("art_id", "(".implode(", ", $items_id).")", "IN"), true);
	art_define_url_delimiter();
	
	foreach(array_keys($items) as $cat_id){
		foreach(array_keys($items[$cat_id]) as $item_id){
			if(!$item_obj =& $items_obj[$item_id]) {
				continue;
			}
			$items[$cat_id][$item_id] = array(
				"title"		=> $item_obj->getVar("art_title"),
				"uid"		=> $item_obj->getVar("uid"),
				"link"		=> "view.article.php".URL_DELIMITER."article={$item_id}",
				"time"		=> $item_obj->getVar("art_time_publish"),
				"tags"		=> tag_parse_tag($item_obj->getVar("art_keywords", "n")),
				"content"	=> "",
				);
		}
	}
	unset($items_obj);	
}

/**
 * Remove orphan tag-item links
 *
 * @return	boolean
 * 
 */
function [DIRNAME]_tag_synchronization($mid)
{
	$item_handler =& xoops_getmodulehandler("article", $GLOBALS["artdirname"]);
	$link_handler =& xoops_getmodulehandler("link", "tag");
        
	/* clear tag-item links */
	if($link_handler->mysql_major_version() >= 4):
    $sql =	"	DELETE FROM {$link_handler->table}".
    		"	WHERE ".
    		"		tag_modid = {$mid}".
    		"		AND ".
    		"		( tag_itemid NOT IN ".
    		"			( SELECT DISTINCT {$item_handler->keyName} ".
    		"				FROM {$item_handler->table} ".
    		"				WHERE {$item_handler->table}.art_time_publish > 0".
    		"			) ".
    		"		)";
    else:
    $sql = 	"	DELETE {$link_handler->table} FROM {$link_handler->table}".
    		"	LEFT JOIN {$item_handler->table} AS aa ON {$link_handler->table}.tag_itemid = aa.{$item_handler->keyName} ".
    		"	WHERE ".
    		"		tag_modid = {$mid}".
    		"		AND ".
    		"		( aa.{$item_handler->keyName} IS NULL".
    		"			OR aa.art_time_publish < 1".
    		"		)";
	endif;
    if (!$result = $link_handler->db->queryF($sql)) {
        //xoops_error($link_handler->db->error());
  	}
}
');
ENDIF;
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?