'sorter'); var $cnt_rows = array(); var $totalIndex = 0; function exec(&$Doc) { $this->Doc = &$Doc; require_once 'class/DB/Lang/DLang.php'; $DLang = new DLang(); $list = $DLang->getList4Grid(); if ($list['num_rows'] > 1) { $parentAlias = $this->options['lang'].'/'; } else { $parentAlias = ''; } $site_map = $this->getSiteMap($parentAlias); //$cnt_total = array_sum($this->cnt_rows); $cnt_total = count($site_map); $Doc->addContent( array( 'tpl' => SiteMap::getPath('CMS/tpl/site_map/site_map.tpl'), 'siteMap' => $site_map , 'cnt_total' => $cnt_total, ) ); return true; } function getSiteMap($parentAlias = '', $id_parent = 0, $all = false, $deniedPages = array()) { require_once('class/DB/Lang/DLang.php'); $DLang = new DLang(); $this->opt['lang'] = $DLang->validName($this->options['lang']); $DocObj = SiteMap::getObj('CMS/Doc/DocObj.php', $id_parent); if (!$all) { if (!is_array($this->opt['addonWhere'])) { $this->opt['addonWhere'] = array(); } $this->opt['addonWhere']['system'] = 'n'; } if (is_array($deniedPages) && !empty($deniedPages)) { $this->opt['addonWhereSql'] = " AND {$DocObj->tableName}.id NOT IN (".implode(',', $deniedPages).") "; } // ДАНИЙ МЕТОД ПРАЦЮЄ ТІЛЬКИ ДЛЯ ОДНОМОВНОГО ПРОЕКТУ // вибираємо всі сторінки одним списком $_list = $DocObj->getList4SiteMap($this->opt); //vdie($this->Doc); //$this->Doc->checkAccess4SiteMap($_list, $_items); // групуємо по id_parent $list = array(); foreach($_list as $k=>$v) { $list[$v['id_parent']][] = $v; } // створюємо головну гілку $siteMap = $list[$id_parent]; unset($list[$id_parent]); // рекурсивно ставимо всі гілки по місцях if (is_array($siteMap) && !empty($siteMap)) { $this->_prepareSiteMap(&$siteMap, &$list, $parentAlias); } return $siteMap; } function _prepareSiteMap(&$siteMap, &$list, $parentAlias = '') { foreach ($siteMap as $k=>&$v) { $v['alias'] = rtrim($parentAlias, '/').(($parentAlias)?'/':'').$v['alias']; if (isset($list[$v['id']])) { $v['sub'] = $list[$v['id']]; $this->cnt_rows[$v['id']] = count($v['sub']); unset($list[$v['id']]); $this->_prepareSiteMap($v['sub'], &$list, $v['alias']); } } } } ?>