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

/**
 * Controller for trophies in the admin control panel.
 *
 * @package XenForo_Trophy
 */
class XenForo_ControllerAdmin_Trophy extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('trophy');
    }

    
/**
     * Lists all available trophies, grouped by level.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$trophyModel $this->_getTrophyModel();

        
$viewParams = array(
            
'trophies' => $trophyModel->prepareTrophies($trophyModel->getAllTrophies())
        );

        return 
$this->responseView('XenForo_ViewAdmin_Trophy_List''trophy_list'$viewParams);
    }

    
/**
     * Gets the add/edit form response for a trophy.
     *
     * @param array $trophy
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getTrophyAddEditResponse(array $trophy)
    {
        
$trophyModel $this->_getTrophyModel();

        
$viewParams = array(
            
'trophy' => $trophy,
            
'masterTitle' => $trophyModel->getTrophyMasterTitlePhraseValue($trophy['trophy_id']),
            
'masterDescription' => $trophyModel->getTrophyMasterDescriptionPhraseValue($trophy['trophy_id']),
            
'userCriteria' => XenForo_Helper_Criteria::prepareCriteriaForSelection($trophy['user_criteria']),
            
'userCriteriaData' => XenForo_Helper_Criteria::getDataForUserCriteriaSelection()
        );

        return 
$this->responseView('XenForo_ViewAdmin_Trophy_Edit''trophy_edit'$viewParams);
    }

    
/**
     * Displays a form to add a new trophy.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        return 
$this->_getTrophyAddEditResponse($this->_getTrophyModel()->getDefaultTrophy());
    }

    
/**
     * Displays a form to edit an existing trophy.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$trophyId $this->_input->filterSingle('trophy_id'XenForo_Input::UINT);
        
$trophy $this->_getTrophyOrError($trophyId);

        return 
$this->_getTrophyAddEditResponse($trophy);
    }

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

        
$trophyId $this->_input->filterSingle('trophy_id'XenForo_Input::UINT);
        
$dwData $this->_input->filter(array(
            
'trophy_points' => XenForo_Input::UINT,
            
'user_criteria' => XenForo_Input::ARRAY_SIMPLE
        
));
        
$titlePhrase $this->_input->filterSingle('title'XenForo_Input::STRING);
        
$descriptionPhrase $this->_input->filterSingle('description'XenForo_Input::STRING);

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_Trophy');
        if (
$trophyId)
        {
            
$dw->setExistingData($trophyId);
        }
        
$dw->bulkSet($dwData);
        
$dw->setExtraData(XenForo_DataWriter_Trophy::DATA_TITLE$titlePhrase);
        
$dw->setExtraData(XenForo_DataWriter_Trophy::DATA_DESCRIPTION$descriptionPhrase);
        
$dw->save();

        
$trophyId $dw->get('trophy_id');

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('trophies') . $this->getLastHash($trophyId)
        );
    }

    public function 
actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_Trophy''trophy_id',
                
XenForo_Link::buildAdminLink('trophies')
            );
        }
        else
        {
            
$trophyId $this->_input->filterSingle('trophy_id'XenForo_Input::UINT);
            
$trophy $this->_getTrophyOrError($trophyId);

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

            return 
$this->responseView('XenForo_ViewAdmin_Trophy_Delete''trophy_delete'$viewParams);
        }
    }

    
/**
     * Gets the specified trophy or throws an exception.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getTrophyOrError($id)
    {
        
$trophyModel $this->_getTrophyModel();

        return 
$trophyModel->prepareTrophy(
            
$this->getRecordOrError(
                
$id$trophyModel'getTrophyById',
                
'requested_trophy_not_found'
            
)
        );
    }

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