<?php
/**
* æ ç¾ç®¡ç
* @copyright (c) Emlog All Rights Reserved
* $Id: class.tag.php 1732 2010-06-04 15:37:57Z hide@address.com $
*/
class emTag {
/**
* å
鍿°æ®å¯¹è±¡
* @var MySql
*/
private $db;
function __construct()
{
$this->db = MySql::getInstance();
}
/**
* è·åæ ç¾
*
* @param int $gid
* @return array
*/
function getTag($blogId = '')
{
$tags = array();
$condition = $blogId ? "WHERE gid LIKE '%,$blogId,%'" : '';
$query = $this->db->query("select tagname,tid from ".DB_PREFIX."tag $condition");
while($row = $this->db->fetch_array($query))
{
$row['tagname'] = htmlspecialchars($row['tagname']);
$row['tid'] = intval($row['tid']);
$tags[] = $row;
}
return $tags;
}
function getOneTag($tagId)
{
$tag = array();
$row = $this->db->once_fetch_array("SELECT tagname,tid FROM ".DB_PREFIX."tag WHERE tid=$tagId");
$tag['tagname'] = htmlspecialchars(trim($row['tagname']));
$tag['tagid'] = intval($row['tid']);
return $tag;
}
function getTagByName($tagName)
{
$tag = array();
$row = $this->db->once_fetch_array("SELECT tagname,gid FROM ".DB_PREFIX."tag WHERE tagname='$tagName'");
if(empty($row))
{
return false;
}
$blogIdStr = substr(trim($row['gid']),1,-1);
return $blogIdStr;
}
function getTagById($tagId)
{
$tag = array();
$row = $this->db->once_fetch_array("SELECT tagname,gid FROM ".DB_PREFIX."tag WHERE tid=$tagId");
if(empty($row))
{
return false;
}
$blogIdStr = substr(trim($row['gid']),1,-1);
return $blogIdStr;
}
/**
* æ·»å æ ç¾
*
* @param string $tagStr
*/
function addTag($tagStr, $blogId)
{
$tag = !empty($tagStr) ? explode(',', $tagStr) : array();
$tag = array_filter(array_unique($tag));
foreach ($tag as $tagName)
{
$result = $this->db->once_fetch_array("SELECT tagname FROM ".DB_PREFIX."tag WHERE tagname='$tagName'");
if(empty($result)) {
$query="INSERT INTO ".DB_PREFIX."tag (tagname,gid) VALUES('".$tagName."',',$blogId,')";
$this->db->query($query);
}else{
$query="UPDATE ".DB_PREFIX."tag SET gid=concat(gid,'$blogId,') where tagname = '$tagName'";
$this->db->query($query);
}
}
}
/**
* æ´æ°æ ç¾
*
* @param string $tagStr
* @param int $blogId
*/
function updateTag($tagStr, $blogId)
{
$tag = !empty($tagStr) ? explode(',', $tagStr) : array();
$query = $this->db->query("SELECT tagname FROM ".DB_PREFIX."tag WHERE gid LIKE '%".$blogId."%' ");
$old_tag = array();
while($row = $this->db->fetch_array($query))
{
$old_tag[] = addslashes($row['tagname']);
}
if(empty($old_tag))
{
$old_tag = array('');
}
$dif_tag = findArray(array_filter(array_unique($tag)),$old_tag);
for($n = 0; $n < count($dif_tag); $n++)
{
$a = 0;
for($j=0 ; $j<count($old_tag);$j++)
{
if($dif_tag[$n] == $old_tag[$j])
{
$this->db->query("UPDATE ".DB_PREFIX."tag SET gid= REPLACE(gid,',$blogId,',',') WHERE tagname='".$dif_tag[$n]."' ");
$this->db->query("DELETE FROM ".DB_PREFIX."tag WHERE gid=',' ");
break;
}elseif($j == count($old_tag)-1){
$result = $this->db->once_fetch_array("SELECT tagname FROM ".DB_PREFIX."tag WHERE tagname='".trim($dif_tag[$n])."' ");
if(empty($result))
{
$query="INSERT INTO ".DB_PREFIX."tag (tagname,gid) VALUES('".$dif_tag[$n]."',',$blogId,')";
$this->db->query($query);
}else{
$query="UPDATE ".DB_PREFIX."tag SET gid=concat(gid,'$blogId,') where tagname = '".$dif_tag[$n]."' ";
$this->db->query($query);
}
}
}
}
}
function updateTagName($tagId, $tagName)
{
$sql="UPDATE ".DB_PREFIX."tag SET tagname='$tagName' WHERE tid=$tagId";
$this->db->query($sql);
}
function deleteTag($tagId)
{
$this->db->query("DELETE FROM ".DB_PREFIX."tag where tid=$tagId");
}
}