Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Tree/Type/Topic.php
Строк: 130
<?php

namespace ConcreteCoreTreeType;

use 
ConcreteCoreTreeTree;
use 
ConcreteCoreTreeNodeTypeTopicCategory as TopicCategoryTreeNode;
use 
Database;
use 
Group as UserGroup;
use 
ConcreteCorePermissionAccessEntityGroupEntity as GroupPermissionAccessEntity;
use 
ConcreteCorePermissionKeyTopicCategoryTreeNodeKey as TopicCategoryTreeNodePermissionKey;
use 
PermissionAccess;

class 
Topic extends Tree
{
    
/** Returns the standard name for this tree
     * @return string
     */
    
public function getTreeName()
    {
        return 
$this->topicTreeName;
    }

    
/** Returns the display name for this tree (localized and escaped accordingly to $format)
     * @param  string $format = 'html' Escape the result in html format (if $format is 'html'). If $format is 'text' or any other value, the display name won't be escaped.
     *
     * @return string
     */
    
public function getTreeDisplayName($format 'html')
    {
        
$value tc('TreeName'$this->topicTreeName);
        switch (
$format) {
            case 
'html':
                return 
h($value);
            case 
'text':
            default:
                return 
$value;
        }
    }

    public static function 
getDefault()
    {
        
$db Database::connection();
        
$treeID $db->GetOne('select treeID from TopicTrees order by treeID asc');

        return 
Tree::getByID($treeID);
    }

    protected function 
deleteDetails()
    {
        
$db Database::connection();
        
$db->Execute('delete from TopicTrees where treeID = ?', array($this->treeID));
    }

    public static function 
getByName($name)
    {
        
$db Database::connection();
        
$treeID $db->GetOne('select treeID from TopicTrees where topicTreeName = ?', array($name));

        return 
Tree::getByID($treeID);
    }

    public static function 
add($name)
    {
        
// copy permissions from the other node.
        
$rootNode TopicCategoryTreeNode::add();
        
$treeID parent::create($rootNode);
        
$tree self::getByID($treeID);
        
$tree->setTopicTreeName($name);

        
// by default, topic trees are viewable by all
        
$guestGroupEntity GroupPermissionAccessEntity::getOrCreate(UserGroup::getByID(GUEST_GROUP_ID));
        
$pk TopicCategoryTreeNodePermissionKey::getByHandle('view_topic_category_tree_node');
        
$pk->setPermissionObject($rootNode);
        
$pa PermissionAccess::create($pk);
        
$pa->addListItem($guestGroupEntity);
        
$pt $pk->getPermissionAssignmentObject();
        
$pt->assignPermissionAccess($pa);

        return 
$tree;
    }

    public function 
exportDetails(SimpleXMLElement $sx)
    {
        
$default self::getDefault();
        if (
is_object($default) && $default->getTreeID() == $this->getTreeID()) {
            
$sx->addAttribute('default'1);
        }
    }

    public static function 
importDetails(SimpleXMLElement $sx)
    {
        
$isDefault = (string) $sx['default'];
        if (
$isDefault) {
            return static::
getDefault();
        } else {
            
$name = (string) $sx['name'];
            
$tree = static::getByName($name);
            if (
is_object($tree)) {
                
// We already have a tree. But we know we're going to have sub-nodes of this tree in the import, so let's keep the same
                // tree so that pointers to attributes work, but let's clear it out.
                
$root $tree->getRootTreeNodeObject();
                
$root->populateChildren();
                
$children $root->getChildNodes();
                foreach (
$children as $child) {
                    
$child->delete();
                }

                return static::
getByName($name);
            } else {
                return static::
add($name);
            }
        }
    }

    protected function 
loadDetails()
    {
        
$db Database::connection();
        
$row $db->GetRow('select treeID, topicTreeName from TopicTrees where treeID = ?', array($this->treeID));
        if (!empty(
$row)) {
            
$this->setPropertiesFromArray($row);

            return 
$this;
        }
    }

    public function 
setTopicTreeName($name)
    {
        
$db Database::connection();
        
$db->Replace('TopicTrees', array('treeID' => $this->getTreeID(), 'topicTreeName' => $name), array('treeID'), true);
        
$this->topicTreeName $name;
    }

    public static function 
getList()
    {
        
$db Database::connection();
        
$treeIDs $db->GetCol('select TopicTrees.treeID from TopicTrees inner join Trees on TopicTrees.treeID = Trees.treeID order by treeDateAdded asc');
        
$trees = array();
        foreach (
$treeIDs as $treeID) {
            
$tree self::getByID($treeID);
            if (
is_object($tree)) {
                
$trees[] = $tree;
            }
        }

        return 
$trees;
    }
}
Онлайн: 0
Реклама