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

class XenForo_ControllerAdmin_Warning extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('warning');
    }

    public function 
actionIndex()
    {
        
$warningModel $this->_getWarningModel();

        
$viewParams = array(
            
'warnings' => $warningModel->prepareWarningDefinitions($warningModel->getWarningDefinitions()),
            
'warningActions' => $warningModel->getWarningActions()
        );
        return 
$this->responseView('XenForo_ViewAdmin_Warning_List''warning_list'$viewParams);
    }

    protected function 
_getWarningAddEditResponse(array $warning)
    {
        
$userGroupOptions $this->getModelFromCache('XenForo_Model_UserGroup')->getUserGroupOptions(
            
$warning['extra_user_group_ids']
        );

        if (!empty(
$warning['warning_definition_id']))
        {
            
$masterValues $this->_getWarningModel()->getWarningDefinitionMasterPhraseValues($warning['warning_definition_id']);
        }
        else
        {
            
$masterValues = array(
                
'title' => '',
                
'conversationTitle' => '',
                
'conversationText' => ''
            
);
        }

        
$viewParams = array(
            
'warning' => $warning,
            
'userGroupOptions' => $userGroupOptions,

            
'masterTitle' => $masterValues['title'],
            
'masterConversationTitle' => $masterValues['conversationTitle'],
            
'masterConversationText' => $masterValues['conversationText'],
        );
        return 
$this->responseView('XenForo_ViewAdmin_Warning_Edit''warning_edit'$viewParams);
    }

    public function 
actionAdd()
    {
        return 
$this->_getWarningAddEditResponse(array(
            
'points_default' => 1,
            
'expiry_type' => 'never',
            
'expiry_default' => 0,
            
'extra_user_group_ids' => '',
            
'is_editable' => 1
        
));
    }

    public function 
actionEdit()
    {
        
$warningDefinitionId $this->_input->filterSingle('warning_definition_id'XenForo_Input::UINT);
        
$warning $this->_getWarningDefinitionOrError($warningDefinitionId);

        return 
$this->_getWarningAddEditResponse($warning);
    }

    public function 
actionSave()
    {
        
$warningDefinitionId $this->_input->filterSingle('warning_definition_id'XenForo_Input::UINT);
        
$dwInput $this->_input->filter(array(
            
'points_default' => XenForo_Input::UINT,
            
'expiry_type' => XenForo_Input::STRING,
            
'expiry_default' => XenForo_Input::UINT,
            
'extra_user_group_ids' => array(XenForo_Input::UINT'array' => true),
            
'is_editable' => XenForo_Input::UINT
        
));
        
$phrases $this->_input->filter(array(
            
'title' => XenForo_Input::STRING,
            
'conversationTitle' => XenForo_Input::STRING,
            
'conversationText' => XenForo_Input::STRING
        
));

        if (
$this->_input->filterSingle('expiry_type_base'XenForo_Input::STRING) == 'never')
        {
            
$dwInput['expiry_type'] = 'never';
        }

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_WarningDefinition');
        if (
$warningDefinitionId)
        {
            
$dw->setExistingData($warningDefinitionId);
        }
        
$dw->bulkSet($dwInput);
        
$dw->setExtraData(XenForo_DataWriter_WarningDefinition::DATA_TITLE$phrases['title']);
        
$dw->setExtraData(XenForo_DataWriter_WarningDefinition::DATA_CONVERSATION_TITLE$phrases['conversationTitle']);
        
$dw->setExtraData(XenForo_DataWriter_WarningDefinition::DATA_CONVERSATION_TEXT$phrases['conversationText']);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('warnings') . '#_warning-' $dw->get('warning_definition_id')
        );
    }

    
/**
     * Deletes a warning.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_WarningDefinition''warning_definition_id',
                
XenForo_Link::buildAdminLink('warnings')
            );
        }
        else
        {
            
$warningDefinitionId $this->_input->filterSingle('warning_definition_id'XenForo_Input::UINT);
            
$warning $this->_getWarningDefinitionOrError($warningDefinitionId);

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

            return 
$this->responseView('XenForo_ViewAdmin_Warning_Delete''warning_delete'$viewParams);
        }
    }

    protected function 
_getActionAddEditResponse(array $action)
    {
        
$userGroupOptions $this->getModelFromCache('XenForo_Model_UserGroup')->getUserGroupOptions(
            
$action['extra_user_group_ids']
        );

        
$viewParams = array(
            
'action' => $action,
            
'userGroupOptions' => $userGroupOptions
        
);
        return 
$this->responseView('XenForo_ViewAdmin_Warning_ActionEdit''warning_action_edit'$viewParams);
    }

    public function 
actionActionAdd()
    {
        return 
$this->_getActionAddEditResponse(array(
            
'points' => 1,
            
'action' => 'groups',
            
'action_length_type' => 'permanent',
            
'action_length' => 0,
            
'extra_user_group_ids' => ''
        
));
    }

    public function 
actionActionEdit()
    {
        
$warningActionId $this->_input->filterSingle('warning_action_id'XenForo_Input::UINT);
        
$action $this->_getWarningActionOrError($warningActionId);

        return 
$this->_getActionAddEditResponse($action);
    }

    public function 
actionActionSave()
    {
        
$warningActionId $this->_input->filterSingle('warning_action_id'XenForo_Input::UINT);

        
$dwInput $this->_input->filter(array(
            
'points' => XenForo_Input::UINT,
            
'action' => XenForo_Input::STRING,
            
'extra_user_group_ids' => array(XenForo_Input::UINT'array' => true)
        ));

        
$actionTypeBase $this->_input->filterSingle('action_length_type_base'XenForo_Input::STRING);
        if (
$actionTypeBase == 'temporary')
        {
            
$dwInput['action_length_type'] = $this->_input->filterSingle('action_length_type'XenForo_Input::STRING);
            
$dwInput['action_length'] = $this->_input->filterSingle('action_length'XenForo_Input::UINT);
        }
        else
        {
            
$dwInput['action_length_type'] = $actionTypeBase;
            
$dwInput['action_length'] = 0;
        }

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_WarningAction');
        if (
$warningActionId)
        {
            
$dw->setExistingData($warningActionId);
        }
        
$dw->bulkSet($dwInput);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('warnings') . '#_action-' $dw->get('warning_action_id')
        );
    }

    
/**
     * Deletes a warning action.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionActionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_WarningAction''warning_action_id',
                
XenForo_Link::buildAdminLink('warnings')
            );
        }
        else
        {
            
$warningActionId $this->_input->filterSingle('warning_action_id'XenForo_Input::UINT);
            
$action $this->_getWarningActionOrError($warningActionId);

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

            return 
$this->responseView('XenForo_ViewAdmin_Warning_ActionDelete''warning_action_delete'$viewParams);
        }
    }

    
/**
     * Gets the specified warning def or throws an exception.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getWarningDefinitionOrError($id)
    {
        
$result $this->getRecordOrError(
            
$id$this->_getWarningModel(), 'getWarningDefinitionById',
            
'requested_warning_not_found'
        
);

        return 
$this->_getWarningModel()->prepareWarningDefinition($result);
    }

    
/**
     * Gets the specified warning action or throws an exception.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getWarningActionOrError($id)
    {
        
$result $this->getRecordOrError(
            
$id$this->_getWarningModel(), 'getWarningActionById',
            
'requested_warning_action_not_found'
        
);

        return 
$result;
    }

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