Source for file TagList.class.php

Documentation is available at TagList.class.php

  1. /**
  2.  * Содержит класс TagLibrary
  3.  *
  4.  * @package energine
  5.  * @subpackage share
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2007
  8.  * @version $Id: fsource_energine_share_modulessharecomponentsTagList.class.php.html,v 1.1 2007/09/17 14:32:36 pavka Exp $
  9.  */
  10.  
  11. require_once('core/modules/share/components/DataSet.class.php');
  12. require_once('core/framework/TagManager.class.php');
  13.  
  14. /**
  15.  * Компонент реализующий работу с тегами
  16.  *
  17.  * @package energine
  18.  * @subpackage share
  19.  */
  20. class TagList extends DataSet {
  21.     /**
  22.      * Конструктор класса
  23.      *
  24.      * @param string $name 
  25.      * @param string $module 
  26.      * @param Document $document 
  27.      * @param array $params 
  28.      * @access public
  29.      */
  30.     public function __construct($name$moduleDocument $documentarray $params null{
  31.         parent::__construct($name$module$document$params);
  32.     }
  33.  
  34.     /**
  35.      * Добавлены:
  36.      * Параметр current
  37.      *
  38.      * @return array 
  39.      * @access protected
  40.      */
  41.     protected function defineParams({
  42.         return array_merge(
  43.         parent::defineParams(),
  44.         array(
  45.         'current' => true
  46.         )
  47.         );
  48.     }
  49.  
  50.     /**
  51.      * Создаем Описание данных
  52.      *
  53.      * @return DataDescription 
  54.      * @access protected
  55.      */
  56.  
  57.     protected function createDataDescription({
  58.         $result new DataDescription();
  59.         $tagField new FieldDescription('tag_name');
  60.         $tagField->setType(FieldDescription::FIELD_TYPE_STRING);
  61.         $result->addFieldDescription($tagField);
  62.  
  63.         $smapNameField new FieldDescription('smap_name');
  64.         $smapNameField->setType(FieldDescription::FIELD_TYPE_STRING);
  65.         $result->addFieldDescription($smapNameField);
  66.  
  67.         $smapURLField new FieldDescription('smap_url');
  68.         $smapURLField->setType(FieldDescription::FIELD_TYPE_STRING);
  69.         $result->addFieldDescription($smapURLField);
  70.  
  71.         return $result;
  72.     }
  73.  
  74.     /**
  75.      * Загружаем данные
  76.      *
  77.      * @return mixed 
  78.      * @access protected
  79.      */
  80.  
  81.     protected function loadData({
  82.         $result false;
  83.  
  84.         $condition '';
  85.  
  86.         if ($this->getParam('current')) {
  87.             $condition 'AND map.tag_id in (SELECT tag_id From share_TagMap WHERE smap_id = '.$this->document->getID().') '.
  88.             'AND smap_id != '$this->document->getID().' ';
  89.         }
  90.  
  91.         $request 'SELECT tag_name, smap_id '.
  92.             'FROM `share_Tags` tag '.
  93.             'LEFT JOIN share_TagMap map ON map.tag_id=tag.tag_id '.
  94.             'WHERE smap_id is not null '.
  95.             $condition.
  96.             'ORDER by tag_name DESC';
  97.  
  98.         $res $this->dbh->selectRequest($request);
  99.         if (is_array($res)) {
  100.             $sitemap Sitemap::getInstance();
  101.             //использован foreach вместо array_map потому что нужно удалять елементы массива
  102.             foreach ($res as $data{
  103.                 if ($sitemap->getDocumentRights($data['smap_id']!= ACCESS_NONE{
  104.                     $pageInfo $sitemap->getDocumentInfo($data['smap_id']);
  105.                     $result[array(
  106.                         'smap_url' => $sitemap->getURLByID($data['smap_id']),
  107.                         'smap_name' => $pageInfo['Name'],
  108.                         'tag_name' => $data['tag_name']
  109.                     );
  110.                 }
  111.             }
  112.         }
  113.  
  114.         return $result;
  115.     }
  116. }

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