Вход Регистрация
Файл: library/XenForo/ControllerAdmin/Permission.php
Строк: 1257
<?php

/**
 * Controller to manage the permission splash page and other actions that deal with
 * permissions themselves (editing permission definitions, etc).
 *
 * @package XenForo_Permissions
 */
class XenForo_ControllerAdmin_Permission extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        switch (
strtolower($action))
        {
            case 
'test':
            case 
'analyze':
                break;

            default:
                
$this->assertDebugMode();
                
$this->assertAdminPermission('dev');
        }
    }

    public function 
actionTest()
    {
        
$this->assertAdminPermission('user');
        
$this->_routeMatch->setSections('testPermissions');

        
$class XenForo_Application::resolveDynamicClass('XenForo_Session');
        
$publicSession = new $class();
        
$publicSession->start();
        if (
$publicSession->get('user_id') != XenForo_Visitor::getUserId())
        {
            return 
$this->responseError(new XenForo_Phrase('please_login_via_public_login_page_before_testing_permissions'));
        }

        if (
$this->_request->isPost())
        {
            
$username $this->_input->filterSingle('username'XenForo_Input::STRING);

            
/* @var $userModel XenForo_Model_User */
            
$userModel $this->getModelFromCache('XenForo_Model_User');
            
$user $userModel->getUserByName($username);
            if (!
$user)
            {
                return 
$this->responseError(new XenForo_Phrase('requested_user_not_found'), 404);
            }

            
$publicSession->set('permissionTest', array(
                
'user_id' => $user['user_id'],
                
'username' => $user['username']
            ));
            
$publicSession->save();

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
XenForo_Link::buildPublicLink('index')
            );
        }
        else
        {
            return 
$this->responseView('XenForo_ViewAdmin_Permission_Test''permission_test');
        }
    }

    public function 
actionAnalyze()
    {
        
$this->assertAdminPermission('user');
        
$this->_routeMatch->setSections('analyzePermissions');

        
$permissionModel $this->_getPermissionModel();

        
$contentId $this->_input->filterSingle('content_id'XenForo_Input::UINT);

        
/* @var $nodeModel XenForo_Model_Node */
        
$nodeModel XenForo_Model::create('XenForo_Model_Node');
        
$nodeOptions $nodeModel->getNodeOptionsArray($nodeModel->getAllNodes(), $contentId);

        
$username $this->_input->filterSingle('username'XenForo_Input::STRING);
        
$type $this->_input->filterSingle('type'XenForo_Input::STRING);

        
$user false;
        
$userGroups $this->getModelFromCache('XenForo_Model_UserGroup')->getAllUserGroups();
        
$showResults false;
        
$results = array();
        
$interfaceGroups = array();

        if (
$this->isConfirmedPost())
        {
            
$permissions $permissionModel->getAllPermissionsGrouped();

            
$user $this->getModelFromCache('XenForo_Model_User')->getUserByName($username);
            if (
$user)
            {
                
$combination $permissionModel->getPermissionCombinationById($user['permission_combination_id']);
                
$permEntries $permissionModel->getAllPermissionEntriesGrouped();

                
$userGroupIds explode(','$combination['user_group_list']);
                
$userId $combination['user_id'];

                
$groupEntries = array();
                foreach (
$userGroupIds AS $userGroupId)
                {
                    if (isset(
$permEntries['userGroups'][$userGroupId]))
                    {
                        
$groupEntries[$userGroupId] = $permEntries['userGroups'][$userGroupId];
                    }
                }

                if (
$userId && isset($permEntries['users'][$userId]))
                {
                    
$userEntries $permEntries['users'][$userId];
                }
                else
                {
                    
$userEntries = array();
                }

                
$systemEntries $permEntries['system'];

                
$permCache $permissionModel->buildPermissionCacheForCombination(
                    
$permissions$systemEntries$groupEntries$userEntries
                
);
                
$finalPermCache $permissionModel->canonicalizePermissionCache($permCache);

                
$typeSetup $this->_getPermissionAnalysisTypeData($type);
                
$interfaceGroups $typeSetup['displayPerms'];
                
$choiceTerms $typeSetup['choiceTerms'];
                
$globalChoiceTerms $permissionModel->getPermissionChoices('userGroup'false);

                foreach (
$interfaceGroups AS $interfaceGroup)
                {
                    foreach (
$interfaceGroup['permissions'] AS $permission)
                    {
                        
$permissionGroupId $permission['permission_group_id'];
                        
$permissionId $permission['permission_id'];

                        
$groups = array();
                        foreach (
$userGroupIds AS $userGroupId)
                        {
                            
$value =
                                isset(
$groupEntries[$userGroupId][$permissionGroupId][$permissionId])
                                ? 
$groupEntries[$userGroupId][$permissionGroupId][$permissionId]
                                : (
$permission['permission_type'] == 'integer' 'unset');

                            
$groups[$userGroupId] = $this->_resolvePermissionValueTerm(
                                
$value$permission$globalChoiceTerms
                            
);
                        }

                        
$systemValue $this->_resolvePermissionValueTerm(
                            isset(
$systemEntries[$permissionGroupId][$permissionId]) ? $systemEntries[$permissionGroupId][$permissionId] : false,
                            
$permission$globalChoiceTerms
                        
);
                        
$userValue $this->_resolvePermissionValueTerm(
                            isset(
$userEntries[$permissionGroupId][$permissionId]) ? $userEntries[$permissionGroupId][$permissionId] : false,
                            
$permission$globalChoiceTerms
                        
);

                        if (
$typeSetup['handler'])
                        {
                            
$contentPerms $typeSetup['handler']->getContentPermissionDetails(
                                
$permissionModel$userGroupIds$userId$contentId$permission,
                                
$permissions$permCache
                            
);
                            if (!isset(
$contentPerms[$contentId]) || !isset($contentPerms[$contentId]['final']))
                            {
                                continue;
                            }

                            
$finalDisplay $contentPerms[$contentId]['final'];
                            foreach (
$contentPerms AS &$content)
                            {
                                
$content['user'] = $this->_resolvePermissionValueTerm(
                                    
$content['user'], $permission$choiceTerms
                                
);
                                
$content['content'] = $this->_resolvePermissionValueTerm(
                                    
$content['content'], $permission$choiceTerms
                                
);
                                foreach (
$content['groups'] AS &$group)
                                {
                                    
$group $this->_resolvePermissionValueTerm(
                                        
$group$permission$choiceTerms
                                    
);
                                }
                                
$content['final'] = $this->_resolveFinalPermissionValueTerm($content['final'], $permission);
                            }
                        }
                        else
                        {
                            
$contentPerms false;
                            
$finalDisplay $finalPermCache[$permissionGroupId][$permissionId];
                        }

                        
$permission $permissionModel->preparePermission($permission);

                        
$results[$permission['interface_group_id']][] = array(
                            
'title' => $permission['title'],
                            
'interfaceTitle' => $interfaceGroup['title'],
                            
'type' => $permission['permission_type'],
                            
'global' => array(
                                
'groups' => $groups,
                                
'user' => $userValue,
                                
'system' => $systemValue,
                                
'final' => $this->_resolveFinalPermissionValueTerm($finalPermCache[$permissionGroupId][$permissionId], $permission)
                            ),
                            
'content' => $contentPerms,
                            
'final' => $this->_resolveFinalPermissionValueTerm($finalDisplay$permission)
                        );
                        
$showResults true;
                    }
                }
            }
        }

        
$globalChoices $permissionModel->getPermissionChoices('userGroup'false);

        
$viewParams = array(
            
'username' => $username,
            
'user' => $user,

            
'type' => $type $type 'global',
            
'contentId' => $contentId,

            
'userGroups' => $userGroups,
            
'nodeOptions' => $nodeOptions,
            
'interfaceGroups' => $interfaceGroups,

            
'showResults' => $showResults,
            
'results' => $results,
            
'globalChoices' => $globalChoices,
            
'contentChoices' => $permissionModel->getPermissionChoices('userGroup'true) + $globalChoices,
        );
        return 
$this->responseView('XenForo_ViewAdmin_Permission_Analyze''permission_analyze'$viewParams);
    }

    protected function 
_resolvePermissionValueTerm($value, array $permission, array $choiceTerms)
    {
        if (
$value === false)
        {
            return 
'';
        }

        if (
$permission['permission_type'] == 'integer')
        {
            if (
strval($value) === '-1')
            {
                return new 
XenForo_Phrase('unlimited');
            }
            else
            {
                return 
strval($value);
            }
        }
        else
        {
            return isset(
$choiceTerms[$value]) ? $choiceTerms[$value] : '';
        }
    }

    protected function 
_resolveFinalPermissionValueTerm($value, array $permission)
    {
        if (
$permission['permission_type'] == 'integer')
        {
            if (
strval($value) === '-1')
            {
                return new 
XenForo_Phrase('unlimited');
            }
            else
            {
                return 
strval($value);
            }
        }
        else
        {
            return 
$value ? new XenForo_Phrase('yes') : new XenForo_Phrase('no');
        }
    }

    protected function 
_getPermissionAnalysisTypeData($type)
    {
        
$permissionModel $this->_getPermissionModel();
        
$globalChoices $permissionModel->getPermissionChoices('userGroup'false);

        if (
$type != 'global')
        {
            
$handlers $permissionModel->getContentPermissionTypeHandlers();
            
$handler = isset($handlers[$type]) ? $handlers[$type] : false;
            
$displayPerms = array();
            
$choiceTerms $permissionModel->getPermissionChoices('userGroup'true) + $globalChoices;

            if (
$type == 'node')
            {
                
$viewNodePermission $permissionModel->preparePermission(
                    
$permissionModel->getViewNodeContentPermission(000)
                );
                
$displayPerms['generalPermissions'] = array(
                    
'title' => '',
                    
'interface_group_id' => 'generalPermissions',
                    
'permissions' => array($viewNodePermission)
                );

                
$nodeTypePermissionGroups $this->getModelFromCache('XenForo_Model_Node')->getNodeTypesGroupedByPermissionGroup();
                
$nodeInterfaceGroups $permissionModel->getUserCollectionContentPermissionsForGroupedInterface(
                    
'node'0array_keys($nodeTypePermissionGroups), 00
                
);
                foreach (
$nodeInterfaceGroups AS $interfaceGroups)
                {
                    
$displayPerms array_merge($displayPerms$interfaceGroups);
                }
            }
        }
        else
        {
            
$handler false;
            
$displayPerms $permissionModel->getUserCollectionPermissionsForInterface(00);
            
$choiceTerms $globalChoices;
        }

        return array(
            
'handler' => $handler,
            
'displayPerms' => $displayPerms,
            
'choiceTerms' => $choiceTerms
        
);
    }

    
/**
     * Shows the permission, permission group, and interface group definitions.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDefinitions()
    {
        
$permissionModel $this->_getPermissionModel();

        
$permissionGroups $permissionModel->preparePermissionGroups($permissionModel->getAllPermissionGroups());
        
$interfaceGroups $permissionModel->preparePermissionInterfaceGroups($permissionModel->getAllPermissionInterfaceGroups());

        
$permissions $permissionModel->preparePermissions($permissionModel->getAllPermissions());
        
$permissionsGrouped = array();
        
$permissionsUngrouped = array();
        foreach (
$permissions AS $permission)
        {
            if (isset(
$interfaceGroups[$permission['interface_group_id']]))
            {
                
$permissionsGrouped[$permission['interface_group_id']][] = $permission;
            }
            else
            {
                
$permissionsUngrouped[] = $permission;
            }
        }

        
$viewParams = array(
            
'permissionGroups' => $permissionGroups,
            
'permissionsGrouped' => $permissionsGrouped,
            
'permissionsUngrouped' => $permissionsUngrouped,
            
'interfaceGroups' => $interfaceGroups,
            
'totalPermissions' => count($permissions),
        );

        return 
$this->responseView('XenForo_ViewAdmin_Permission_Definition''permission_definition'$viewParams);
    }

    
/**
     * Helper function to handle displaying the permission add/edit form.
     *
     * @param array $permission Array of information about the permission being editor (or the default set if adding)
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getPermissionAddEditResponse(array $permission)
    {
        
$permissionModel $this->_getPermissionModel();
        
$addOnModel $this->_getAddOnModel();

        
$masterTitle $permissionModel->getPermissionMasterTitlePhraseValue(
            
$permission['permission_group_id'], $permission['permission_id']
        );

        
$viewParams = array(
            
'permission' => $permission,
            
'masterTitle' => $masterTitle,
            
'permissionGroups' => $permissionModel->getPermissionGroupNames(),
            
'interfaceGroups' => $permissionModel->getPermissionInterfaceGroupNames(),
            
'addOnOptions' => $addOnModel->getAddOnOptionsListIfAvailable(),
            
'addOnSelected' => (isset($permission['addon_id']) ? $permission['addon_id'] : $addOnModel->getDefaultAddOnId())
        );

        return 
$this->responseView('XenForo_ViewAdmin_Permission_PermissionEdit''permission_permission_edit'$viewParams);
    }

    
/**
     * Form to create a new permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionAdd()
    {
        return 
$this->_getPermissionAddEditResponse($this->_getPermissionModel()->getDefaultPermission());
    }

    
/**
     * Form to edit an existing permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionEdit()
    {
        
$permissionGroupId $this->_input->filterSingle('permission_group_id'XenForo_Input::STRING);
        
$permissionId $this->_input->filterSingle('permission_id'XenForo_Input::STRING);

        
$permission $this->_getValidPermissionOrError($permissionGroupId$permissionId);
        return 
$this->_getPermissionAddEditResponse($permission);
    }

    
/**
     * Inserts a new permission or updates an existing one.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionSave()
    {
        
$this->_assertPostOnly();

        
$originalPermissionId $this->_input->filterSingle('original_permission_id'XenForo_Input::STRING);
        
$originalPermissionGroupId $this->_input->filterSingle('original_permission_group_id'XenForo_Input::STRING);

        
$dwInput $this->_input->filter(array(
            
'permission_id' => XenForo_Input::STRING,
            
'permission_group_id' => XenForo_Input::STRING,
            
'depend_permission_id' => XenForo_Input::STRING,
            
'permission_type' => XenForo_Input::STRING,
            
'default_value' => array(XenForo_Input::STRING'default' => 'unset'),
            
'default_value_int' => XenForo_Input::INT,
            
'interface_group_id' => XenForo_Input::STRING,
            
'display_order' => XenForo_Input::UINT,
            
'addon_id' => XenForo_Input::STRING
        
));
        
$titleValue $this->_input->filterSingle('title'XenForo_Input::STRING);

        
// these have been removed from the form - just force them to this
        
$dwInput['default_value'] = 'unset';
        
$dwInput['default_value_int'] = 0;

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_Permission');
        if (
$originalPermissionId && $originalPermissionGroupId)
        {
            
$dw->setExistingData(array($originalPermissionGroupId$originalPermissionId));
        }
        
$dw->bulkSet($dwInput);
        
$dw->setExtraData(XenForo_DataWriter_Permission::DATA_TITLE$titleValue);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('permissions/definitions') . $this->getLastHash($dwInput['permission_group_id'] . '_' $dwInput['permission_id'])
        );
    }

    
/**
     * Deletes a permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionDelete()
    {
        
$permissionGroupId $this->_input->filterSingle('permission_group_id'XenForo_Input::STRING);
        
$permissionId $this->_input->filterSingle('permission_id'XenForo_Input::STRING);

        if (
$this->isConfirmedPost())
        {
            
$dw XenForo_DataWriter::create('XenForo_DataWriter_Permission');
            
$dw->setExistingData(array($permissionGroupId$permissionId));
            
$dw->delete();

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
XenForo_Link::buildAdminLink('permissions/definitions')
            );
        }
        else 
// show confirmation dialog
        
{
            
$permission $this->_getValidPermissionOrError($permissionGroupId$permissionId);

            
$viewParams = array(
                
'permission' => $permission
            
);

            return 
$this->responseView('XenForo_ViewAdmin_Permission_PermissionDelete''permission_permission_delete'$viewParams);
        }
    }

    
/**
     * Helper to get the permission group add/edit form controller response.
     *
     * @param array $permissionGroup
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getPermissionGroupAddEditResponse(array $permissionGroup)
    {
        
$addOnModel $this->_getAddOnModel();

        
$masterTitle $this->_getPermissionModel()->getPermissionGroupMasterTitlePhraseValue($permissionGroup['permission_group_id']);

        
$viewParams = array(
            
'permissionGroup' => $permissionGroup,
            
'masterTitle' => $masterTitle,
            
'addOnOptions' => $addOnModel->getAddOnOptionsListIfAvailable(),
            
'addOnSelected' => (isset($permissionGroup['addon_id']) ? $permissionGroup['addon_id'] : $addOnModel->getDefaultAddOnId())
        );

        return 
$this->responseView('XenForo_ViewAdmin_Permission_PermissionGroupEdit''permission_permission_group_edit'$viewParams);
    }

    
/**
     * Form to create a new permission group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionGroupAdd()
    {
        return 
$this->_getPermissionGroupAddEditResponse(
            
$this->_getPermissionModel()->getDefaultPermissionGroup()
        );
    }

    
/**
     * Form to edit an existing permission group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionGroupEdit()
    {
        
$permissionGroupId $this->_input->filterSingle('permission_group_id'XenForo_Input::STRING);
        
$permissionGroup $this->_getValidPermissionGroupOrError($permissionGroupId);

        return 
$this->_getPermissionGroupAddEditResponse($permissionGroup);
    }

    
/**
     * Inserts a new permission group or updates an existing one.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionGroupSave()
    {
        
$this->_assertPostOnly();

        
$originalPermissionGroupId $this->_input->filterSingle('original_permission_group_id'XenForo_Input::STRING);

        
$dwInput $this->_input->filter(array(
            
'permission_group_id' => XenForo_Input::STRING,
            
'addon_id' => XenForo_Input::STRING
        
));
        
$titleValue $this->_input->filterSingle('title'XenForo_Input::STRING);

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_PermissionGroup');
        if (
$originalPermissionGroupId)
        {
            
$dw->setExistingData($originalPermissionGroupId);
        }
        
$dw->bulkSet($dwInput);
        
$dw->setExtraData(XenForo_DataWriter_PermissionGroup::DATA_TITLE$titleValue);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('permissions/definitions') . $this->getLastHash("group_{$dwInput['permission_group_id']}")
        );
    }

    
/**
     * Deletes a permission group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionPermissionGroupDelete()
    {
        
$permissionGroupId $this->_input->filterSingle('permission_group_id'XenForo_Input::STRING);

        if (
$this->isConfirmedPost())
        {
            
$dw XenForo_DataWriter::create('XenForo_DataWriter_PermissionGroup');
            
$dw->setExistingData($permissionGroupId);
            
$dw->delete();

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
XenForo_Link::buildAdminLink('permissions/definitions')
            );
        }
        else 
// show confirmation dialog
        
{
            
$permissionGroup $this->_getValidPermissionGroupOrError($permissionGroupId);

            
$viewParams = array(
                
'permissionGroup' => $permissionGroup
            
);

            return 
$this->responseView('XenForo_ViewAdmin_Permission_PermissionGroupDelete''permission_permission_group_delete'$viewParams);
        }
    }

    protected function 
_getInterfaceGroupAddEditResponse(array $interfaceGroup)
    {
        
$addOnModel $this->_getAddOnModel();

        
$masterTitle $this->_getPermissionModel()->getPermissionInterfaceGroupMasterTitlePhraseValue(
            
$interfaceGroup['interface_group_id']
        );

        
$viewParams = array(
            
'interfaceGroup' => $interfaceGroup,
            
'masterTitle' => $masterTitle,
            
'addOnOptions' => $addOnModel->getAddOnOptionsListIfAvailable(),
            
'addOnSelected' => (isset($interfaceGroup['addon_id']) ? $interfaceGroup['addon_id'] : $addOnModel->getDefaultAddOnId())
        );

        return 
$this->responseView('XenForo_ViewAdmin_Permission_InterfaceGroupEdit''permission_interface_group_edit'$viewParams);
    }

    
/**
     * Displays a form to add a new permission interface group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionInterfaceGroupAdd()
    {
        return 
$this->_getInterfaceGroupAddEditResponse(
            
$this->_getPermissionModel()->getDefaultPermissionInterfaceGroup()
        );
    }

    
/**
     * Displays a form to edit an existing permission interface group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionInterfaceGroupEdit()
    {
        
$interfaceGroupId $this->_input->filterSingle('interface_group_id'XenForo_Input::STRING);
        
$interfaceGroup $this->_getValidPermissionInterfaceGroupOrError($interfaceGroupId);

        return 
$this->_getInterfaceGroupAddEditResponse($interfaceGroup);
    }

    
/**
     * Inserts a new permission interface group or updates an existing one.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionInterfaceGroupSave()
    {
        
$this->_assertPostOnly();

        
$originalInterfaceGroupId $this->_input->filterSingle('original_interface_group_id'XenForo_Input::STRING);

        
$dwInput $this->_input->filter(array(
            
'interface_group_id' => XenForo_Input::STRING,
            
'display_order' => XenForo_Input::UINT,
            
'addon_id' => XenForo_Input::STRING
        
));
        
$titleValue $this->_input->filterSingle('title'XenForo_Input::STRING);

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_PermissionInterfaceGroup');
        if (
$originalInterfaceGroupId)
        {
            
$dw->setExistingData($originalInterfaceGroupId);
        }
        
$dw->bulkSet($dwInput);
        
$dw->setExtraData(XenForo_DataWriter_PermissionInterfaceGroup::DATA_TITLE$titleValue);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('permissions/definitions') . $this->getLastHash("igroup_{$dwInput['interface_group_id']}")
        );
    }

    
/**
     * Deletes a permission interface group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionInterfaceGroupDelete()
    {
        
$interfaceGroupId $this->_input->filterSingle('interface_group_id'XenForo_Input::STRING);

        if (
$this->isConfirmedPost())
        {
            
$dw XenForo_DataWriter::create('XenForo_DataWriter_PermissionInterfaceGroup');
            
$dw->setExistingData($interfaceGroupId);
            
$dw->delete();

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
XenForo_Link::buildAdminLink('permissions/definitions')
            );
        }
        else 
// show confirm dialog
        
{
            
$interfaceGroup $this->_getValidPermissionInterfaceGroupOrError($interfaceGroupId);

            
$viewParams = array(
                
'interfaceGroup' => $interfaceGroup
            
);

            return 
$this->responseView('XenForo_ViewAdmin_Permission_InterfaceGroupDelete''permission_interface_group_delete'$viewParams);
        }
    }

    
/**
     * Gets a valid permission record or raises a controller response exception.
     *
     * @param string $groupId
     * @param string $permissionId
     *
     * @return array
     */
    
protected function _getValidPermissionOrError($groupId$permissionId)
    {
        
$info $this->_getPermissionModel()->getPermissionByGroupAndId($groupId$permissionId);
        if (!
$info)
        {
            throw 
$this->responseException($this->responseError(new XenForo_Phrase('requested_permission_not_found'), 404));
        }

        return 
$this->_getPermissionModel()->preparePermission($info);
    }

    
/**
     * Gets a valid permission group record or raises a controller response exception.
     *
     * @param string $permissionGroupId
     *
     * @return array
     */
    
protected function _getValidPermissionGroupOrError($permissionGroupId)
    {
        
$permissionGroup $this->_getPermissionModel()->getPermissionGroupById($permissionGroupId);
        if (!
$permissionGroup)
        {
            throw 
$this->responseException($this->responseError(new XenForo_Phrase('requested_permission_group_not_found'), 404));
        }

        return 
$this->_getPermissionModel()->preparePermissionGroup($permissionGroup);
    }

    
/**
     * Gets a valid permission interface group record or raises a controller response exception.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getValidPermissionInterfaceGroupOrError($id)
    {
        
$info $this->_getPermissionModel()->getPermissionInterfaceGroupById($id);
        if (!
$info)
        {
            throw 
$this->responseException($this->responseError(new XenForo_Phrase('requested_permission_interface_group_not_found'), 404));
        }

        return 
$this->_getPermissionModel()->preparePermissionInterfaceGroup($info);
    }

    
/**
     * Gets the permission model.
     *
     * @return XenForo_Model_Permission
     */
    
protected function _getPermissionModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Permission');
    }

    
/**
     * Get the add-on model.
     *
     * @return XenForo_Model_AddOn
     */
    
protected function _getAddOnModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_AddOn');
    }
}
Онлайн: 0
Реклама