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

namespace ConcreteCorePermission;

use 
Core;
use 
Database;
use 
ConcreteCoreFoundationObject;
use 
ConcreteCorePackagePackageList;

class 
Category extends Object
{
    protected static 
$categories;

    public static function 
getByID($pkCategoryID)
    {
        if (!
self::$categories) {
            
self::populateCategories();
        }

        return 
self::$categories[$pkCategoryID];
    }

    protected static function 
populateCategories()
    {
        
$db Database::get();
        
self::$categories = array();
        
$r $db->Execute('select pkCategoryID, pkCategoryHandle, pkgID from PermissionKeyCategories');
        while (
$row $r->FetchRow()) {
            
$pkc = new static();
            
$pkc->setPropertiesFromArray($row);
            
self::$categories[$pkc->getPermissionKeyCategoryID()] = $pkc;
            
self::$categories[$pkc->getPermissionKeyCategoryHandle()] = $pkc;
        }
    }

    public static function 
getByHandle($pkCategoryHandle)
    {
        if (!
self::$categories) {
            
self::populateCategories();
        }

        return 
array_key_exists($pkCategoryHandleself::$categories) ? self::$categories[$pkCategoryHandle] : null;
    }

    public function 
handleExists($pkHandle)
    {
        
$db Database::get();
        
$r $db->GetOne("select count(pkID) from PermissionKeys where pkHandle = ?", array($pkHandle));

        return 
$r 0;
    }

    public static function 
exportList($xml)
    {
        
$attribs self::getList();
        
$axml $xml->addChild('permissioncategories');
        foreach (
$attribs as $pkc) {
            
$acat $axml->addChild('category');
            
$acat->addAttribute('handle'$pkc->getPermissionKeyCategoryHandle());
            
$acat->addAttribute('package'$pkc->getPackageHandle());
        }
    }

    public static function 
getListByPackage($pkg)
    {
        
$db Database::get();
        
$list = array();
        
$r $db->Execute('select pkCategoryID from PermissionKeyCategories where pkgID = ? order by pkCategoryID asc', array($pkg->getPackageID()));
        while (
$row $r->FetchRow()) {
            
$list[] = static::getByID($row['pkCategoryID']);
        }
        
$r->Close();

        return 
$list;
    }

    public function 
getPermissionKeyClass()
    {
        
$className core_class('\Core\Permission\Key\'
            . Core::make("helper/text")->camelcase($this->pkCategoryHandle) . '
Key',
            $this->getPackageHandle()
        );
        return $className;
    }

    public function getPermissionKeyByHandle($pkHandle)
    {
        $ak = call_user_func(array($this->getPermissionKeyClass(), '
getByHandle'), $pkHandle);

        return $ak;
    }

    public function getPermissionKeyByID($pkID)
    {
        $ak = call_user_func(array($this->getPermissionKeyClass(), '
getByID'), $pkID);
        return $ak;
    }

    public function getToolsURL($task = false)
    {
        if (!$task) {
            $task = '
save_permission';
        }
        $uh = Core::make('
helper/concrete/urls');
        $akc = static::getByID($this->getPermissionKeyCategoryID());
        $url = $uh->getToolsURL('
permissions/categories/' . $this->pkCategoryHandle, $akc->getPackageHandle());
        $token = Core::make('
helper/validation/token')->getParameter($task);
        $url .= '
?' . $token . '&task=' . $task;

        return $url;
    }

    public function getPermissionKeyCategoryID()
    {
        return $this->pkCategoryID;
    }
    public function getPermissionKeyCategoryHandle()
    {
        return $this->pkCategoryHandle;
    }
    public function getPackageID()
    {
        return $this->pkgID;
    }
    public function getPackageHandle()
    {
        return PackageList::getHandle($this->pkgID);
    }

    public function delete()
    {
        $db = Database::get();
        $db->Execute('
delete from PermissionKeyCategories where pkCategoryID = ?', array($this->pkCategoryID));
    }

    public function associateAccessEntityType(ConcreteCorePermissionAccessEntityType $pt)
    {
        $db = Database::get();
        $r = $db->GetOne('
select petID from PermissionAccessEntityTypeCategories where petID = ? and pkCategoryID = ?', array(
            $pt->getAccessEntityTypeID(), $this->pkCategoryID,
        ));
        if (!$r) {
            $db->Execute('
insert into PermissionAccessEntityTypeCategories (petIDpkCategoryIDvalues (?, ?)', array(
                $pt->getAccessEntityTypeID(), $this->pkCategoryID,
            ));
        }
    }

    public function deassociateAccessEntityType(ConcreteCorePermissionAccessEntityType $pt)
    {
        $db = Database::get();
        $db->delete('
PermissionAccessEntityTypeCategories', array('petID' => $pt->getAccessEntityTypeID(), 'pkCategoryID' => $this->getPermissionKeyCategoryID()));
    }

    public function clearAccessEntityTypeCategories()
    {
        $db = Database::get();
        $db->Execute('
delete from PermissionAccessEntityTypeCategories where pkCategoryID = ?', $this->pkCategoryID);
    }

    public static function getList()
    {
        $db = Database::get();
        $cats = array();
        $r = $db->Execute('
select pkCategoryID from PermissionKeyCategories order by pkCategoryID asc');
        while ($row = $r->FetchRow()) {
            $cats[] = static::getByID($row['
pkCategoryID']);
        }

        return $cats;
    }

    public static function add($pkCategoryHandle, $pkg = false)
    {
        $db = Database::get();
        if (is_object($pkg)) {
            $pkgID = $pkg->getPackageID();
        } else {
            $pkgID = null;
        }
        $db->Execute('
insert into PermissionKeyCategories (pkCategoryHandlepkgIDvalues (?, ?)', array($pkCategoryHandle, $pkgID));
        $id = $db->Insert_ID();

        self::$categories = array();

        return static::getByID($id);
    }
}
Онлайн: 0
Реклама