<?php
/**
* СодеÑÐ¶Ð¸Ñ ÐºÐ»Ð°ÑÑ TagLibrary
*
* @package energine
* @subpackage share
* @author dr.Pavka
* @copyright ColoCall 2007
* @version $Id: TagList.class.php,v 1.4 2007/12/17 14:16:14 pavka Exp $
*/
//require_once('core/modules/share/components/DataSet.class.php');
//require_once('core/framework/TagManager.class.php');
/**
* ÐÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ ÑеализÑÑÑий ÑабоÑÑ Ñ Ñегами
*
* @package energine
* @subpackage share
*/
class TagList extends DataSet {
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа
*
* @param string $name
* @param string $module
* @param Document $document
* @param array $params
* @access public
*/
public function __construct($name, $module, Document $document, array $params = null) {
parent::__construct($name, $module, $document, $params);
}
/**
* ÐобавленÑ:
* ÐаÑамеÑÑ current
*
* @return array
* @access protected
*/
protected function defineParams() {
return array_merge(
parent::defineParams(),
array(
'current' => true
)
);
}
/**
* Создаем ÐпиÑание даннÑÑ
*
* @return DataDescription
* @access protected
*/
protected function createDataDescription() {
$result = new DataDescription();
$tagField = new FieldDescription('tag_name');
$tagField->setType(FieldDescription::FIELD_TYPE_STRING);
$result->addFieldDescription($tagField);
$smapNameField = new FieldDescription('smap_name');
$smapNameField->setType(FieldDescription::FIELD_TYPE_STRING);
$result->addFieldDescription($smapNameField);
$smapURLField = new FieldDescription('smap_url');
$smapURLField->setType(FieldDescription::FIELD_TYPE_STRING);
$result->addFieldDescription($smapURLField);
return $result;
}
/**
* ÐагÑÑжаем даннÑе
*
* @return mixed
* @access protected
*/
protected function loadData() {
$result = false;
$condition = '';
if ($this->getParam('current')) {
$condition = 'AND map.tag_id in (SELECT tag_id From share_tag_map WHERE smap_id = '.$this->document->getID().') '.
'AND smap_id != '. $this->document->getID().' ';
}
$request = 'SELECT tag_name, smap_id '.
'FROM `share_tags` tag '.
'LEFT JOIN share_tag_map map ON map.tag_id=tag.tag_id '.
'WHERE smap_id is not null '.
$condition.
'ORDER by tag_name DESC';
$res = $this->dbh->selectRequest($request);
if (is_array($res)) {
$sitemap = Sitemap::getInstance();
//иÑполÑзован foreach вмеÑÑо array_map поÑÐ¾Ð¼Ñ ÑÑо нÑжно ÑдалÑÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑ Ð¼Ð°ÑÑива
foreach ($res as $data) {
if ($sitemap->getDocumentRights($data['smap_id']) != ACCESS_NONE) {
$pageInfo = $sitemap->getDocumentInfo($data['smap_id']);
$result[] = array(
'smap_url' => $sitemap->getURLByID($data['smap_id']),
'smap_name' => $pageInfo['Name'],
'tag_name' => $data['tag_name']
);
}
}
}
return $result;
}
}