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

/**
 * Controller for managing admin permissions.
 *
 * @package XenForo_Admin
 */
class XenForo_ControllerAdmin_AdminPermission extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertDebugMode();

        
$this->assertAdminPermission('dev');
    }

    
/**
     * Displays a list of admin permissions.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$adminModel $this->_getAdminModel();
        
$permissions =  $adminModel->prepareAdminPermissions($adminModel->getAllAdminPermissions());

        
$viewParams = array(
            
'adminPermissions' => $permissions
        
);

        return 
$this->responseView('XenForo_ViewAdmin_AdminPermission_List''admin_permission_list'$viewParams);
    }

    
/**
     * Gets the response for the permission add/edit form.
     *
     * @param array $adminPermission
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getAdminPermissionAddEditResponse(array $adminPermission)
    {
        
$addOnModel $this->_getAddOnModel();

        
$masterTitle $this->_getAdminModel()->getAdminPermissionMasterTitlePhraseValue(
            
$adminPermission['admin_permission_id']
        );

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

        return 
$this->responseView('XenForo_ViewAdmin_AdminPemission_Edit''admin_permission_edit'$viewParams);
    }

    
/**
     * Displays a form to add an admin permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        return 
$this->_getAdminPermissionAddEditResponse(array(
            
'admin_permission_id' => '',
            
'display_order' => 1,
            
'addon_id' => null
        
));
    }

    
/**
     * Displays a form to edit an admin permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$adminPermissionId $this->_input->filterSingle('admin_permission_id'XenForo_Input::STRING);

        
$adminPermission $this->_getAdminModel()->getAdminPermissionById($adminPermissionId);
        if (!
$adminPermission)
        {
            return 
$this->responseError(new XenForo_Phrase('requested_permission_not_found'), 404);
        }

        return 
$this->_getAdminPermissionAddEditResponse($adminPermission);
    }

    
/**
     * Inserts or updates an admin permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionSave()
    {
        
$this->_assertPostOnly();

        
$input $this->_input->filter(array(
            
'admin_permission_id' => XenForo_Input::STRING,
            
'new_admin_permission_id' => XenForo_Input::STRING,
            
'title' => XenForo_Input::STRING,
            
'display_order' => XenForo_Input::UINT,
            
'addon_id' => XenForo_Input::STRING
        
));

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_AdminPermission');
        if (
$input['admin_permission_id'])
        {
            
$dw->setExistingData($input['admin_permission_id']);
        }
        
$dw->setExtraData(XenForo_DataWriter_AdminPermission::DATA_TITLE$input['title']);
        
$dw->bulkSet(array(
            
'admin_permission_id' => $input['new_admin_permission_id'],
            
'display_order' => $input['display_order'],
            
'addon_id' => $input['addon_id']
        ));
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('admin-permissions') . $this->getLastHash($input['new_admin_permission_id'])
        );
    }

    
/**
     * Deletes an admin permission.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_AdminPermission''admin_permission_id',
                
XenForo_Link::buildAdminLink('admin-permissions')
            );
        }
        else 
// show confirmation dialog
        
{
            
$adminPermissionId $this->_input->filterSingle('admin_permission_id'XenForo_Input::STRING);

            
$dw XenForo_DataWriter::create('XenForo_DataWriter_AdminPermission'XenForo_DataWriter::ERROR_EXCEPTION);
            
$dw->setExistingData($adminPermissionId);
            
$dw->preDelete();

            
$viewParams = array(
                
'adminPermission' => $this->_getAdminModel()->prepareAdminPermission($dw->getMergedData())
            );

            return 
$this->responseView('XenForo_ViewAdmin_AdminPermission_Delete''admin_permission_delete'$viewParams);
        }
    }

    
/**
     * @return XenForo_Model_Admin
     */
    
protected function _getAdminModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Admin');
    }

    
/**
     * @return XenForo_Model_AddOn
     */
    
protected function _getAddOnModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_AddOn');
    }
}
Онлайн: 1
Реклама