protected static function init() { if (self::$_isInit) { return; } $prices = K_TreeQuery::gOne('/payment/accountscost/', 'prices'); self::$_adminCost = $prices['admin_cost']; self::$_userCost = $prices['user_cost']; self::$_isInit = true; }
/** preRouter дополнительный роутинг который проверяет ссылки первого уровня */ private function preRouter($link) { // Новость $oneNode = K_TreeQuery::gOne('/news' . $link, 'news'); if (!empty($oneNode)) { K_Registry::write('one', $oneNode); K_Seo::set($oneNode); return $link = '/system-pages/one/'; } // Вакансия $oneNode = K_TreeQuery::gOne('/vacancies' . $link, 'vacancy'); if (!empty($oneNode)) { K_Registry::write('one', $oneNode); K_Seo::set($oneNode); return $link = '/system-pages/onevacancy/'; } //******************** Статья отдельно. $articleNode = K_TreeQuery::gOne('/articles' . $link, 'articles'); if (!empty($articleNode)) { // если есть статья с такой ссылкой переходим на неё K_Registry::write('articles', $articleNode); K_Seo::set($articleNode); return $link = '/system-pages/article/'; } return false; }
Returns data for client-side tree var data = [ { label: 'Тест', children: [ { label: 'child1' }, { label: 'child2' } ] }, { label: 'Тест 2', children: [ { label: 'child3' } ] } ]; */ public function getAction() { $this->disableRender = true; $query = new K_Db_Query(); $treeStructure = array(); $treeElements = array(); if ($this->getParam('pid')) { $nodeId = $this->getParam('pid'); } else { $nodeId = 0; } // Прийдётся лезть в тип списка $pidType = K_TreeQuery::gOne((int) $nodeId); //var_dump($pidType); if ($pidType['sorted'] == "По алфавиту") { $order = "`t1`.`tree_title`"; } else { $order = "`t1`.`tree_lkey`"; } $sql = 'SELECT `t1`.*, COUNT(`t2`.`tree_id`) as subElements FROM `tree` as `t1` LEFT JOIN `tree` as `t2` ON `t2`.`tree_pid` = `t1`.`tree_id` WHERE `t1`.`tree_pid`=' . (int) $nodeId . ' GROUP BY `t1`.`tree_id`, `t1`.`tree_pid`, `t1`.`tree_title` ORDER BY ' . $order; $treeElements = $query->q($sql); foreach ($treeElements as $key => $column) { $treeElements[$key] = $column->toArray(); } if ($nodeId != '0') { $nodeArr = K_tree::getParents($nodeId); // выбираем всех родителей ноды $nodeArr[] = $nodeId; // добовляем id самой ноды // проверяем на доступ ноду со всеми её родителями к которой запрашиваються потомки /* foreach ( $pid_node_perents as $v ) { if ( is_string( $v ) ) { $resourse_arr[] = $v; $resourse = 't:' . implode( '/', $resourse_arr ); // echo $resourse; try { $access = K_Access::acl()->isAllowed( K_Auth::getRoles(), $resourse, 'view' ); // var_dump($access); } catch ( exception $e ) { $access = $allow_trigger; } $allow_trigger = $access; } }*/ //строим ресур запрашиваемой ноды если нода не равна 0 $allowTrigger = false; $access = false; $_nodeArr = $nodeArr; for ($i = count($_nodeArr); $i > 0; $i--) { $resourse = implode('/', $_nodeArr); array_pop($_nodeArr); $access = K_Access::aclTree()->isAllowed(K_Auth::getRoles(), $resourse, true); if (K_Access::aclTree()->lastResource) { break; } } $allowTrigger = $access;
public function one() { return K_TreeQuery::gOne($this->nid); }