PageRenderTime 23ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/src/include/model/tag_model.php

http://emlog.googlecode.com/
PHP | 148 lines | 114 code | 12 blank | 22 comment | 10 complexity | 116a4ca904db8b5e839675620698cbf6 MD5 | raw file
  1. <?php
  2. /**
  3. * ????
  4. * @copyright (c) Emlog All Rights Reserved
  5. * $Id: tag_model.php 2018 2011-08-29 16:02:06Z emloog $
  6. */
  7. class Tag_Model {
  8. private $db;
  9. function __construct()
  10. {
  11. $this->db = MySql::getInstance();
  12. }
  13. /**
  14. * ????
  15. *
  16. * @param int $blogId
  17. * @return array
  18. */
  19. function getTag($blogId = '')
  20. {
  21. $tags = array();
  22. $condition = $blogId ? "WHERE gid LIKE '%,$blogId,%'" : '';
  23. $query = $this->db->query("select tagname,tid from ".DB_PREFIX."tag $condition");
  24. while($row = $this->db->fetch_array($query))
  25. {
  26. $row['tagname'] = htmlspecialchars($row['tagname']);
  27. $row['tid'] = intval($row['tid']);
  28. $tags[] = $row;
  29. }
  30. return $tags;
  31. }
  32. function getOneTag($tagId)
  33. {
  34. $tag = array();
  35. $row = $this->db->once_fetch_array("SELECT tagname,tid FROM ".DB_PREFIX."tag WHERE tid=$tagId");
  36. $tag['tagname'] = htmlspecialchars(trim($row['tagname']));
  37. $tag['tagid'] = intval($row['tid']);
  38. return $tag;
  39. }
  40. function getTagByName($tagName)
  41. {
  42. $tag = array();
  43. $row = $this->db->once_fetch_array("SELECT tagname,gid FROM ".DB_PREFIX."tag WHERE tagname='$tagName'");
  44. if(empty($row))
  45. {
  46. return false;
  47. }
  48. $blogIdStr = substr(trim($row['gid']),1,-1);
  49. return $blogIdStr;
  50. }
  51. function getTagById($tagId)
  52. {
  53. $tag = array();
  54. $row = $this->db->once_fetch_array("SELECT tagname,gid FROM ".DB_PREFIX."tag WHERE tid=$tagId");
  55. if(empty($row))
  56. {
  57. return false;
  58. }
  59. $blogIdStr = substr(trim($row['gid']),1,-1);
  60. return $blogIdStr;
  61. }
  62. /**
  63. * ????
  64. *
  65. * @param string $tagStr
  66. */
  67. function addTag($tagStr, $blogId)
  68. {
  69. $tag = !empty($tagStr) ? explode(',', $tagStr) : array();
  70. $tag = array_filter(array_unique($tag));
  71. foreach ($tag as $tagName)
  72. {
  73. $result = $this->db->once_fetch_array("SELECT tagname FROM ".DB_PREFIX."tag WHERE tagname='$tagName'");
  74. if(empty($result)) {
  75. $query="INSERT INTO ".DB_PREFIX."tag (tagname,gid) VALUES('".$tagName."',',$blogId,')";
  76. $this->db->query($query);
  77. }else{
  78. $query="UPDATE ".DB_PREFIX."tag SET gid=concat(gid,'$blogId,') where tagname = '$tagName'";
  79. $this->db->query($query);
  80. }
  81. }
  82. }
  83. /**
  84. * ????
  85. *
  86. * @param string $tagStr
  87. * @param int $blogId
  88. */
  89. function updateTag($tagStr, $blogId)
  90. {
  91. $tag = !empty($tagStr) ? explode(',', $tagStr) : array();
  92. $query = $this->db->query("SELECT tagname FROM ".DB_PREFIX."tag WHERE gid LIKE '%".$blogId."%' ");
  93. $old_tag = array();
  94. while($row = $this->db->fetch_array($query))
  95. {
  96. $old_tag[] = addslashes($row['tagname']);
  97. }
  98. if(empty($old_tag))
  99. {
  100. $old_tag = array('');
  101. }
  102. $dif_tag = findArray(array_filter(array_unique($tag)),$old_tag);
  103. for($n = 0; $n < count($dif_tag); $n++)
  104. {
  105. $a = 0;
  106. for($j=0 ; $j<count($old_tag);$j++)
  107. {
  108. if($dif_tag[$n] == $old_tag[$j])
  109. {
  110. $this->db->query("UPDATE ".DB_PREFIX."tag SET gid= REPLACE(gid,',$blogId,',',') WHERE tagname='".$dif_tag[$n]."' ");
  111. $this->db->query("DELETE FROM ".DB_PREFIX."tag WHERE gid=',' ");
  112. break;
  113. }elseif($j == count($old_tag)-1){
  114. $result = $this->db->once_fetch_array("SELECT tagname FROM ".DB_PREFIX."tag WHERE tagname='".trim($dif_tag[$n])."' ");
  115. if(empty($result))
  116. {
  117. $query="INSERT INTO ".DB_PREFIX."tag (tagname,gid) VALUES('".$dif_tag[$n]."',',$blogId,')";
  118. $this->db->query($query);
  119. }else{
  120. $query="UPDATE ".DB_PREFIX."tag SET gid=concat(gid,'$blogId,') where tagname = '".$dif_tag[$n]."' ";
  121. $this->db->query($query);
  122. }
  123. }
  124. }
  125. }
  126. }
  127. function updateTagName($tagId, $tagName)
  128. {
  129. $sql="UPDATE ".DB_PREFIX."tag SET tagname='$tagName' WHERE tid=$tagId";
  130. $this->db->query($sql);
  131. }
  132. function deleteTag($tagId)
  133. {
  134. $this->db->query("DELETE FROM ".DB_PREFIX."tag where tid=$tagId");
  135. }
  136. }