Exemple #1
0
 public static function f_loadTypes($params = array())
 {
     $result = array();
     $typesTable = new K_Tree_Types_Model();
     $types = $typesTable->select()->fetchArray();
     $typeClass = 'Type_Controller_' . ucfirst($params['tree_type']);
     if ($params['tree_type'] == 'list') {
         $list = K_CupItems::getItems($params['tree_id'], $params['tree_type']);
         $listTypes = array_map('trim', explode(',', $list[0]['types']));
         for ($i = 0, $j = 0; $i < sizeof($types); $i++) {
             if (in_array($types[$i]['type_name'], $listTypes)) {
                 $result[$j] = new stdClass();
                 $result[$j]->value = $types[$i]['type_name'];
                 $result[$j]->baseline = 'undefined';
                 $j++;
             }
         }
     } else {
         for ($i = 0, $j = 0; $i < sizeof($types); $i++) {
             if (isset($typeClass::$allowedChildren[0])) {
                 if ($typeClass::$allowedChildren[0] == 'all' && sizeof($typeClass::$allowedChildren) == 1 || $typeClass::$allowedChildren[0] == 'all' && !in_array($types[$i]['type_name'], $typeClass::$allowedChildren) || $typeClass::$allowedChildren[0] != 'all' && in_array($types[$i]['type_name'], $typeClass::$allowedChildren)) {
                     $result[$j] = new stdClass();
                     $result[$j]->value = $types[$i]['type_name'];
                     $result[$j]->baseline = 'undefined';
                     $j++;
                 }
             }
         }
     }
     return $result;
 }
 public function editAction()
 {
     $this->disableLayout = true;
     $commentId = intval($_GET['commentid']);
     $commentModel = new Admin_Model_Comment();
     $commenRow = $commentModel->select('*, UNIX_TIMESTAMP(comment_date) comment_date')->where('comment_id="' . $commentId . '"')->fetchAll();
     $this->view->commentRow = K_CupItems::stripFields($commenRow, 'comment');
     $this->view->commentRow = $this->view->commentRow[0];
     $this->render('edit');
 }
Exemple #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;