Source for file TagManager.class.php

Documentation is available at TagManager.class.php

  1.  
  2. /**
  3.  * Содержит класс TagManager
  4.  *
  5.  * @package energine
  6.  * @subpackage core
  7.  * @author dr.Pavka
  8.  * @copyright ColoCall 2007
  9.  * @version $Id: fsource_energine_core_frameworkTagManager.class.php.html,v 1.1 2007/09/17 14:32:35 pavka Exp $
  10.  */
  11.  
  12. require_once('core/framework/DBWorker.class.php');
  13.  
  14. /**
  15.  * Класс - синглтон для работы с тэгами
  16.  *
  17.  * @package energine
  18.  * @subpackage core
  19.  */
  20. class TagManager extends DBWorker {
  21.     /**
  22.      * Имя таблицы тегов
  23.      *
  24.      */
  25.     const TABLE_NAME = 'share_Tags';
  26.  
  27.     /**
  28.      * Имя таблицы связи тегов и разделов
  29.      *
  30.      */
  31.     const MAP_TABLE_NAME = 'share_TagMap';
  32.  
  33.     /**
  34.      * @access private
  35.      * @static
  36.      * @var TagManager единый для всей системы экземпляр класса TagManager
  37.      */
  38.     private static $instance;
  39.  
  40.     /**
  41.      * Конструктор класса
  42.      *
  43.      * @return void 
  44.      */
  45.     public function __construct({
  46.         parent::__construct();
  47.     }
  48.  
  49.     /**
  50.      * Возвращает единый для всей системы экземпляр класса TagManager
  51.      *
  52.      * @access public
  53.      * @static
  54.      * @return TagManager 
  55.      */
  56.     public static function getInstance({
  57.         if (!isset(self::$instance)) {
  58.             self::$instance new TagManager();
  59.         }
  60.         return self::$instance;
  61.     }
  62.  
  63.     /**
  64.      * Проверяет существует ли тег с таким именем
  65.      *
  66.      * @return bool 
  67.      * @access public
  68.      */
  69.  
  70.     public function tagExists($tagName{
  71.         return (bool)simplifyDBResult($this->dbh->select(self::TABLE_NAME'count(tag_id) as cnt'array('tag_name'=>$tagName))'cnt'true);
  72.     }
  73.  
  74.     /**
  75.      * Возвращает идентификатор тега
  76.      *
  77.      * @return int 
  78.      * @access private
  79.      */
  80.  
  81.     private function getTagID($tagName{
  82.         $result =  simplifyDBResult($this->dbh->select(self::TABLE_NAME'tag_id'array('tag_name'=>$tagName))'tag_id'true);
  83.         if (empty($result)) {
  84.             $result false;
  85.         }
  86.  
  87.         return $result;
  88.     }
  89.  
  90.     /**
  91.      * Создает новый тег
  92.      *
  93.      * @param string 
  94.      * @return Tag 
  95.      * @access public
  96.      */
  97.  
  98.     public function createTag($tagName{
  99.         return $this->dbh->modify(QAL::INSERTself::TABLE_NAMEarray('tag_name'=>$tagName'tag_text'=>$tagName));
  100.     }
  101.  
  102.     /**
  103.      * Добавляет тег к странице
  104.      *
  105.      * @return bool 
  106.      * @access public
  107.      */
  108.  
  109.     public function addTagToPage($tagName$pageID{
  110.         if (!$this->tagExists($tagName)) {
  111.             $tagID $this->createTag($tagName);
  112.         }
  113.         else {
  114.             $tagID $this->getTagID($tagName);
  115.         }
  116.  
  117.  
  118.         $condition array('smap_id'=>$pageID'tag_id'=>$tagID);
  119.  
  120.         $this->dbh->modify(QAL::DELETEself::MAP_TABLE_NAMEnull$condition);
  121.         $this->dbh->modify(QAL::INSERTself::MAP_TABLE_NAME$condition);
  122.     }
  123.  
  124.     /**
  125.      * Возвращает все теги страницы
  126.      *
  127.      * @return array 
  128.      * @access public
  129.      */
  130.  
  131.     public function getPageTags($pageID{
  132.         $result simplifyDBResult(
  133.             $this->dbh->selectRequest('SELECT tag_name FROM '.self::MAP_TABLE_NAME.' map '.
  134.             'LEFT JOIN '.self::TABLE_NAME.' tags ON tags.tag_id=map.tag_id '.
  135.             'WHERE smap_id = '.$pageID
  136.             )'tag_name');
  137.  
  138.         if (!$result{
  139.             $result array();
  140.         }
  141.  
  142.         return $result;
  143.     }
  144.  
  145.     /**
  146.      * Убирает все теги страницы
  147.      *
  148.      * @return void 
  149.      * @access public
  150.      */
  151.  
  152.     public function clearPageTags($pageID{
  153.         $this->dbh->modify(QAL::DELETEself::MAP_TABLE_NAMEnullarray('smap_id'=>$pageID));
  154.     }
  155.  
  156.     /**
  157.      * Убирает тєг из страницы
  158.      *
  159.      * @return bool 
  160.      * @access public
  161.      */
  162.  
  163.     public function removeTagFromPage($pageID{
  164.  
  165.     }
  166. }

Documentation generated on Mon, 17 Sep 2007 13:32:20 +0300 by phpDocumentor 1.4.0a2