Вход Регистрация
Файл: core/authorization.php
Строк: 144
<?php

class PEEP_Authorization
{
    
/**
     * @var BOL_AuthorizationService
     */
    
private $service;

    
/**
     * Constructor.
     */
    
private function __construct()
    {
        
$this->service BOL_AuthorizationService::getInstance();
    }
    
/**
     * Singleton instance.
     *
     * @var PEEP_EventManager
     */
    
private static $classInstance;

    
/**
     * Returns an instance of class (singleton pattern implementation).
     *
     * @return PEEP_EventManager
     */
    
public static function getInstance()
    {
        if ( 
self::$classInstance === null )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    
/**
     * Adds new group.
     *
     * @param string $name
     * @param boolean $moderated
     */
    
public function addGroup$name$moderated true )
    {
        if ( 
$this->service->findGroupByName($name) !== null )
        {
            
trigger_error('Cant add group `' $name '`! Duplicate entry!'E_NOTICE);
            return;
        }

        
$group = new BOL_AuthorizationGroup();
        
$group->name $name;
        
$group->moderated $moderated;

        
$this->service->saveGroup($group);
    }

    
/**
     * Adds new action to group.
     *
     * @param string $groupName
     * @param string $actionName
     * @param boolean $availableForGuest
     */
    
public function addAction$groupName$actionName$availableForGuest false )
    {
        
$group $this->service->findGroupByName($groupName);

        if ( 
$group === null )
        {
            
trigger_error('Cant add action `' $actionName '`! Empty group `' $groupName '`!');
            return;
        }

        if ( 
$this->service->findAction($groupName$actionName) !== null )
        {
            
trigger_error('Cant add action `' $actionName '` to group `' $groupName '`! Duplicate entry!');
            return;
        }

        
$action = new BOL_AuthorizationAction();
        
$action->groupId $group->id;
        
$action->name $actionName;
        
$action->availableForGuest $availableForGuest;

        
$this->service->saveAction($action);

        
$roles $this->service->getRoleList();
        foreach ( 
$roles as $role )
        {
            
$this->service->grantActionListToRole($role, array($action));
        }
    }

    
/**
     * Deletes group and all included actions.
     *
     * @param string $groupName
     */
    
public function deleteGroup$groupName )
    {
        
$this->service->deleteGroup($groupName);
    }

    
/**
     * Deletes action by group and action names.
     *
     * @param string $groupName
     * @param string $actionName
     */
    
public function deleteAction$groupName$actionName )
    {
        
$action $this->service->findAction($groupName$actionName);

        if ( 
$action !== null )
        {
            
$this->service->deleteAction($action->id);
        }
    }

    
/**
     * Checks if user authorized for group/action.
     *
     * @param integer $userId
     * @param string $groupName
     * @param string $actionName
     * @param array $extra
     * @return boolean
     */
    
public function isUserAuthorized$userId$groupName$actionName null$extra null )
    {
        if ( 
$extra !== null && !is_array($extra) )
        {
            
trigger_error("`ownerId` parameter has been deprecated, pass `extra` parameter instead");
        }

        return 
$this->service->isActionAuthorizedForUser($userId$groupName$actionName$extra);
    }
}
Онлайн: 1
Реклама