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

/**
 * Controller for handling the users section and actions on users in the
 * admin control panel.
 *
 * @package XenForo_UserGroups
 */
class XenForo_ControllerAdmin_UserGroup extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('userGroup');
    }

    
/**
     * Displays a list of user groups.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$viewParams = array(
            
'userGroups' => $this->_getUserGroupModel()->getAllUserGroups()
        );

        return 
$this->responseView('XenForo_ViewAdmin_UserGroup_List''user_group_list'$viewParams);
    }

    
/**
     * Gets the add/edit controller response for user groups.
     *
     * @param array $userGroup
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getUserGroupAddEditResponse(array $userGroup)
    {
        
$permissionModel $this->_getPermissionModel();

        
$displayStyles = array(
            
'userBanner bannerHidden',
            
'userBanner bannerPrimary',
            
'userBanner bannerSecondary',
            
'userBanner bannerRed',
            
'userBanner bannerGreen',
            
'userBanner bannerOlive',
            
'userBanner bannerLightGreen',
            
'userBanner bannerBlue',
            
'userBanner bannerRoyalBlue',
            
'userBanner bannerSkyBlue',
            
'userBanner bannerGray',
            
'userBanner bannerSilver',
            
'userBanner bannerYellow',
            
'userBanner bannerOrange',
        );

        if (!
$userGroup['banner_css_class'])
        {
            
$userGroup['banner_css_class'] = 'userBanner bannerHidden';
        }

        
$viewParams = array(
            
'userGroup' => $userGroup,
            
'permissions' => $permissionModel->getUserCollectionPermissionsForInterface($userGroup['user_group_id']),
            
'permissionChoices' => $permissionModel->getPermissionChoices('userGroup'false),

            
'displayStyles' => $displayStyles,
            
'displayStylesOther' => !in_array($userGroup['banner_css_class'], $displayStyles),
        );

        return 
$this->responseView('XenForo_ViewAdmin_UserGroup_Edit''user_group_edit'$viewParams);
    }

    
/**
     * Displays a form to add a user group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        return 
$this->_getUserGroupAddEditResponse($this->_getUserGroupModel()->getDefaultUserGroup());
    }

    
/**
     * Displays a form to add a user group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$userGroupId $this->_input->filterSingle('user_group_id'XenForo_Input::UINT);
        
$userGroup $this->_getUserGroupOrError($userGroupId);

        return 
$this->_getUserGroupAddEditResponse($userGroup);
    }

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

        
$input $this->_input->filter(array(
            
'user_group_id' => XenForo_Input::UINT,

            
'title' => XenForo_Input::STRING,

            
'display_style_priority' => XenForo_Input::UINT,
            
'username_css' => XenForo_Input::STRING,
            
'user_title_override' => XenForo_Input::UINT,
            
'user_title' => XenForo_Input::STRING,
            
'banner_text' => XenForo_Input::STRING,
            
'banner_css_class' => XenForo_Input::STRING,

            
'permissions' => XenForo_Input::ARRAY_SIMPLE
        
));

        
$userGroupInfo = array(
            
'title' => $input['title'],
            
'display_style_priority' => $input['display_style_priority'],
            
'username_css' => $input['username_css'],
            
'user_title' => ($input['user_title_override'] ? $input['user_title'] : ''),
            
'banner_text' => $input['banner_text'],
            
'banner_css_class' => $input['banner_css_class'],
        );

        
$userGroupId $this->_getUserGroupModel()->updateUserGroupAndPermissions($input['user_group_id'], $userGroupInfo$input['permissions']);

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('user-groups') . $this->getLastHash($userGroupId)
        );
    }

    
/**
     * Deletes a user group.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_UserGroup''user_group_id',
                
XenForo_Link::buildAdminLink('user-groups')
            );
        }
        else 
// show confirmation dialog
        
{
            
$userGroupId $this->_input->filterSingle('user_group_id'XenForo_Input::UINT);

            
$dw XenForo_DataWriter::create('XenForo_DataWriter_UserGroup'XenForo_DataWriter::ERROR_EXCEPTION);
            
$dw->setExistingData($userGroupId);
            
$dw->preDelete();

            
$viewParams = array(
                
'userGroup' => $dw->getMergedData()
            );

            return 
$this->responseView('XenForo_ViewAdmin_UserGroup_Delete''user_group_delete'$viewParams);
        }
    }

    
/**
     * Gets the specified user group or throws an error.
     *
     * @param integer $userGroupId
     *
     * @return array
     */
    
protected function _getUserGroupOrError($userGroupId)
    {
        
$userGroup $this->_getUserGroupModel()->getUserGroupById($userGroupId);
        if (!
$userGroup)
        {
            throw 
$this->responseException($this->responseError(new XenForo_Phrase('requested_user_group_not_found'), 404));
        }

        return 
$userGroup;
    }

    
/**
     * Gets the user group model.
     *
     * @return XenForo_Model_UserGroup
     */
    
protected function _getUserGroupModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_UserGroup');
    }

    
/**
     * Gets the permission model.
     *
     * @return XenForo_Model_Permission
     */
    
protected function _getPermissionModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Permission');
    }
}
Онлайн: 0
Реклама