示例#1
0
 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;
 }
示例#2
0
 /** 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;
 }
示例#3
0
    
    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;
示例#4
0
 public function one()
 {
     return K_TreeQuery::gOne($this->nid);
 }