Source for file ChildDivisions.class.php
Documentation is available at ChildDivisions.class.php
* Содержит класс ChildDivisions
* @copyright Energine 2006
* Класс передназначен для вівода дочерних разделов текущего раздела
* @todo класс необходимо переписать поскольку используется разный принцип получения данных для страниц и разделов
* Переменная содержащая идентификатор раздела для которого нужно выводить потомков
* Идентификатор указывающий на то что нужно исепользовать в качестве идентфикатора id родительской страниц
public function __construct($name, $module, Document $document, array $params = null) {
parent::__construct($name, $module, $document, $params);
//$this->setParam('recordsPerPage', false);
if($this->getParam('id') == self::PARENT_ID){
final protected function getID() {
final protected function setID($id) {
* Добавлен параметр id - идентификатор страницы
* Устанавливаем перечень полей
* @return DataDescription
$result->addFieldDescription($field);
$result->addFieldDescription($field);
$result->addFieldDescription($field);
$result->addFieldDescription($field);
$result->addFieldDescription($field);
$field = new Field('AttachedFiles');
$result->addField($field);
//Делаем выборку из таблицы дополнительных файлов
if($result->getFieldByName('Id')){
$res = $this->dbh->selectRequest('
LEFT JOIN share_sitemap_uploads ssu on ssu.upl_id = upl.upl_id
WHERE smap_id IN ('. implode(',', $result->getFieldByName('Id')->getData()). ')
//конвертируем результат запроса в удобный формат
$smapID = $row['smap_id'];
if(!isset ($uplData[$smapID])){
$uplData[$smapID] = array();
foreach ($result->getFieldByName('Id') as $index => $smapID) {
if(!empty($uplData[$smapID])){
$data->load($attachedFilesData);
$dataDescription->load($this->dbh->getColumnsInfo('share_uploads'));
foreach ($data->getFieldByName('upl_path') as $key => $row) {
$data->getFieldByName('upl_path')->setRowProperty($key, 'width', $width);
$data->getFieldByName('upl_path')->setRowProperty($key, 'height', $height);
return $builder->getResult();
* Переопределенный метод загрузки данных
$data = (empty($data))? false: $data;
if ($this->getParam('recordsPerPage')) {
if ($this->pager->getCurrentPage()> 1) {
$this->document->componentManager->getComponentByName('breadCrumbs')->addCrumb();
$limit = $this->pager->getLimit();
$data = array_slice($data, $limit[0], $limit[1], true);
foreach ($data as $id => $current) {
'Id' => (isset ($current['Id']))? $current['Id']: $id,
'Segment' => $current['Segment'],
'Name' => $current['Name'],
'DescriptionRtf' => $current['DescriptionRtf']
* Callback функция для фильтрации массива данных о дочерних страницах(не разделах) по правам
* Callback функция для генерации полного URL дл страниц
|