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

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

    
/**
     * Lists all BB codes.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$bbCodeModel $this->_getBbCodeModel();
        
$bbCodes $bbCodeModel->getAllBbCodes();

        
$viewParams = array(
            
'bbCodes' => $bbCodeModel->prepareBbCodes($bbCodes),
            
'exportView' => $this->_input->filterSingle('export'XenForo_Input::UINT)
        );
        return 
$this->responseView('XenForo_ViewAdmin_BbCode_List''bb_code_list'$viewParams);
    }

    
/**
     * Gets the BB code add/edit form response.
     *
     * @param array $bbCode
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getBbCodeAddEditResponse(array $bbCode)
    {
        
$addOnModel $this->getModelFromCache('XenForo_Model_AddOn');

        if (!empty(
$bbCode['bb_code_id']))
        {
            
$title $this->_getBbCodeModel()->getBbCodeMasterTitlePhraseValue($bbCode['bb_code_id']);
            
$description $this->_getBbCodeModel()->getBbCodeMasterDescriptionPhraseValue($bbCode['bb_code_id']);
        }
        else
        {
            
$title '';
            
$description '';
        }

        
$viewParams = array(
            
'bbCode' => $bbCode,
            
'title' => $title,
            
'description' => $description,
            
'addOnOptions' => $addOnModel->getAddOnOptionsListIfAvailable(),
            
'addOnSelected' => (isset($bbCode['addon_id']) ? $bbCode['addon_id'] : $addOnModel->getDefaultAddOnId())
        );
        return 
$this->responseView('XenForo_ViewAdmin_BbCode_Edit''bb_code_edit'$viewParams);
    }

    
/**
     * Displays a form to create a new BB code.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        return 
$this->_getBbCodeAddEditResponse(array(
            
'bb_code_mode' => 'replace',
            
'has_option' => 'no',
            
'allow_signature' => 1,
            
'active' => 1
        
));
    }

    
/**
     * Displays a form to edit an existing BB code.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$bbCode $this->_getBbCodeOrError();

        return 
$this->_getBbCodeAddEditResponse($bbCode);
    }

    
/**
     * Updates an existing BB code or inserts a new one.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionSave()
    {
        
$this->_assertPostOnly();

        
$currentId $this->_input->filterSingle('bb_code_id'XenForo_Input::STRING);
        
$newId $this->_input->filterSingle('new_bb_code_id'XenForo_Input::STRING);

        
$dwInput $this->_input->filter(array(
            
'bb_code_mode' => XenForo_Input::STRING,
            
'has_option' => XenForo_Input::STRING,
            
'replace_html' => array(XenForo_Input::STRING'noTrim' => true),
            
'replace_html_email' => array(XenForo_Input::STRING'noTrim' => true),
            
'replace_text' => array(XenForo_Input::STRING'noTrim' => true),
            
'callback_class' => XenForo_Input::STRING,
            
'callback_method' => XenForo_Input::STRING,
            
'option_regex' => XenForo_Input::STRING,
            
'trim_lines_after' => XenForo_Input::UINT,
            
'plain_children' => XenForo_Input::BOOLEAN,
            
'disable_smilies' => XenForo_Input::BOOLEAN,
            
'disable_nl2br' => XenForo_Input::BOOLEAN,
            
'disable_autolink' => XenForo_Input::BOOLEAN,
            
'allow_signature' => XenForo_Input::BOOLEAN,
            
'editor_icon_url' => XenForo_Input::STRING,
            
'sprite_mode' => XenForo_Input::BOOLEAN,
            
'sprite_params' => array(XenForo_Input::INT, array('array' => true)),
            
'example' => XenForo_Input::STRING,
            
'active' => XenForo_Input::BOOLEAN,
            
'addon_id' => XenForo_Input::STRING,
        ));
        
$title $this->_input->filterSingle('title'XenForo_Input::STRING);
        
$description $this->_input->filterSingle('description'XenForo_Input::STRING);

        
$dw XenForo_DataWriter::create('XenForo_DataWriter_BbCode');
        if (
$currentId)
        {
            
$dw->setExistingData($currentId);
        }
        
$dw->set('bb_code_id'$newId);
        
$dw->bulkSet($dwInput);
        
$dw->setExtraData(XenForo_DataWriter_BbCode::DATA_TITLE$title);
        
$dw->setExtraData(XenForo_DataWriter_BbCode::DATA_DESCRIPTION$description);
        
$dw->save();

        return 
$this->responseRedirect(
            
XenForo_ControllerResponse_Redirect::SUCCESS,
            
XenForo_Link::buildAdminLink('bb-codes') . $this->getLastHash($dw->get('bb_code_id'))
        );
    }

    
/**
     * Deletes the specified BB codes.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_BbCode''bb_code_id',
                
XenForo_Link::buildAdminLink('bb-codes')
            );
        }
        else 
// show confirmation dialog
        
{
            
$bbCode $this->_getBbCodeOrError();

            
$viewParams = array(
                
'bbCode' => $bbCode
            
);
            return 
$this->responseView('XenForo_ViewAdmin_BbCode_Delete''bb_code_delete'$viewParams);
        }
    }

    
/**
     * Selectively enables or disables specified BB codes
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionToggle()
    {
        return 
$this->_getToggleResponse(
            
$this->_getBbCodeModel()->getAllBbCodes(),
            
'XenForo_DataWriter_BbCode',
            
'bb-codes',
            
'active',
            
'bb_code_'
        
);
    }

    public function 
actionExport()
    {
        
$this->_assertPostOnly();

        
$export $this->_input->filterSingle('export', array(XenForo_Input::STRING'array' => true));
        
$bbCodes $this->_getBbCodeModel()->getBbCodesByIds($export);

        
$this->_routeMatch->setResponseType('xml');

        
$viewParams = array(
            
'xml' => $this->_getBbCodeModel()->getBbCodeExportXml($bbCodes)
        );

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

    public function 
actionImport()
    {
        if (
$this->isConfirmedPost())
        {
            
$upload XenForo_Upload::getUploadedFile('upload');
            if (!
$upload)
            {
                return 
$this->responseError(new XenForo_Phrase('please_provide_valid_bb_code_xml_file'));
            }

            
$document $this->getHelper('Xml')->getXmlFromFile($upload);
            
$this->_getBbCodeModel()->importCustomBbCodeXml($document);

            return 
$this->responseRedirect(
                    
XenForo_ControllerResponse_Redirect::SUCCESS,
                    
XenForo_Link::buildAdminLink('bb-codes')
                );
        }
        else
        {
            return 
$this->responseView('XenForo_ViewAdmin_BbCode_Import''bb_code_import');
        }
    }

    
/**
     * Gets the specified record or errors.
     *
     * @param string $id
     *
     * @return array
     */
    
protected function _getBbCodeOrError($id null)
    {
        if (
$id === null)
        {
            
$id $this->_input->filterSingle('bb_code_id'XenForo_Input::STRING);
        }

        
$info $this->_getBbCodeModel()->getBbCodeById($id);
        if (!
$info)
        {
            throw 
$this->responseException($this->responseError(new XenForo_Phrase('requested_bb_code_not_found'), 404));
        }

        return 
$this->_getBbCodeModel()->prepareBbCode($info);
    }

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