对tag的处理分为两种:1、单个tag。2、相关tag
单个tag是直接从页面传来的参数中截取的。
相关tag是经过字符串函数的相关处理后,再进行序列化,然后才是进数据库的。
处理tag的函数主要有以下三个:
- //获取相关TAG
- function postgetincludetags($message, $tagnamearr) {
- global $_SGLOBAL;
-
- $postincludetags = '';
- if(!file_exists(S_ROOT.'./data/system/tag.cache.php')) {
- include_once(S_ROOT.'./include/cron/tagcontent.php');
- }
- @include_once(S_ROOT.'./data/system/tag.cache.php');
- if(empty($_SGLOBAL['tagcontent'])) $_SGLOBAL['tagcontent'] = '';
- $tagtext = implode('|', $tagnamearr).'|'.$_SGLOBAL['tagcontent'];
- $postincludetags = getincluetags($message, $tagtext);
- return $postincludetags;
- }
- //获取内容中包含的TAG
- function getincluetags($text, $tagtext) {
- $resultarr = array();
- $tagtext = str_replace('/', '\/', $tagtext);
- preg_match_all("/($tagtext)/", $text, $matches);
- if(!empty($matches[1]) && is_array($matches[1])) {
- foreach ($matches[1] as $value) {
- if(strlen($value)>2) $resultarr[$value] = $value;
- }
- }
- return implode("\t", $resultarr);
- }
- //信息TAG关联处理
- function postspacetag($op, $type, $itemid, $tagarr) {
- global $_SGLOBAL;
- $colnumname = "space{$type}num";
- $deletetagidarr = $addtagidarr = $spacetagidarr = array();
- if($op == 'add') {
- if(!empty($tagarr['existsid'])) {
- $addtagidarr = $tagarr['existsid'];
- $_SGLOBAL['db']->query('UPDATE '.tname('tags').' SET '.$colnumname.'='.$colnumname.'+1 WHERE tagid IN ('.simplode($tagarr['existsid']).')');
- }
- } else {
- $query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('spacetags').' WHERE itemid=\''.$itemid.'\'');
- while ($spacetag = $_SGLOBAL['db']->fetch_array($query)) {
- if(!empty($tagarr['existsid']) && in_array($spacetag['tagid'], $tagarr['existsid'])) {
- $spacetagidarr[] = $spacetag['tagid'];
- } else {
- $deletetagidarr[] = $spacetag['tagid'];
- }
- }
- foreach ($tagarr['existsid'] as $etagid) {
- if(!empty($spacetagidarr) && in_array($etagid, $spacetagidarr)) {
- } else {
- $addtagidarr[] = $etagid;
- }
- }
- if(!empty($deletetagidarr)) {
- $_SGLOBAL['db']->query('DELETE FROM '.tname('spacetags').' WHERE itemid='.$itemid.' AND tagid IN ('.simplode($deletetagidarr).')');
- $_SGLOBAL['db']->query('UPDATE '.tname('tags').' SET '.$colnumname.'='.$colnumname.'-1 WHERE tagid IN ('.simplode($deletetagidarr).')');
- }
- if(!empty($addtagidarr)) {
- $_SGLOBAL['db']->query('UPDATE '.tname('tags').' SET '.$colnumname.'='.$colnumname.'+1 WHERE tagid IN ('.simplode($addtagidarr).')');
- }
- }
- //TAG
- if(!empty($tagarr['nonename'])) {
- foreach ($tagarr['nonename'] as $posttagname) {
- $insertsqlarr = array(
- 'tagname' => $posttagname,
- 'uid' => $_SGLOBAL['supe_uid'],
- 'username' => $_SGLOBAL['supe_username'],
- 'dateline' => $_SGLOBAL['timestamp'],
- $colnumname => 1
- );
- $addtagidarr[] = inserttable('tags', $insertsqlarr, 1);
- }
- }
- if(!empty($addtagidarr)) {
- $insertstr = $comma = '';
- foreach ($addtagidarr as $tagid) {
- $insertstr .= $comma.'(\''.$itemid.'\',\''.$tagid.'\',\''.$_SGLOBAL['timestamp'].'\',\''.$type.'\')';
- $comma = ',';
- }
- $_SGLOBAL['db']->query('REPLACE INTO '.tname('spacetags').' (itemid, tagid, dateline, type) VALUES '.$insertstr);
- }
- }
复制代码 |