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

/**
 * Email template actions in the admin control panel.
 *
 * @package XenForo_EmailTemplate
 */
class XenForo_ControllerAdmin_EmailTemplate extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertDebugMode();

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

    
/**
     * Displays a list of email templates.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionIndex()
    {
        
$emailTemplateModel $this->_getEmailTemplateModel();

        
$standardView $this->_input->filterSingle('standard'XenForo_Input::UINT);
        if (
$standardView || !XenForo_Application::debugMode())
        {
            
$templates $emailTemplateModel->getAllEffectiveEmailTemplateTitles();
            
$showSwitchLink = (XenForo_Application::debugMode() ? 'master' false);
            
$customizeTemplate true;
        }
        else
        {
            
$templates $emailTemplateModel->getAllMasterEmailTemplateTitles();
            
$showSwitchLink 'standard';
            
$customizeTemplate false;
        }

        
$viewParams = array(
            
'templates' => $templates,
            
'showSwitchLink' => $showSwitchLink,
            
'showCreateLink' => XenForo_Application::debugMode(),
            
'customizeTemplate' => $customizeTemplate
        
);

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

    
/**
     * Helper to get build the controller response for the email template
     * add or edit pages.
     *
     * @param array $template
     * @param boolean $customize True if trying to customize a master email template
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
protected function _getEmailTemplateAddEditResponse(array $template$customize)
    {
        
$addOnModel $this->_getAddOnModel();

        if (
$customize && empty($template['custom']))
        {
            
// force template to go to custom
            
$template['template_id'] = 0;
            
$template['custom'] = 1;
        }

        
$viewParams = array(
            
'template' => $template,
            
'addOnOptions' => (empty($template['custom']) ? $addOnModel->getAddOnOptionsListIfAvailable() : array()),
            
'addOnSelected' => (isset($template['addon_id']) ? $template['addon_id'] : $addOnModel->getDefaultAddOnId())
        );

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

    
/**
     * Displays a form to add a new email template.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionAdd()
    {
        if (!
XenForo_Application::debugMode())
        {
            
$custom true;
        }
        else
        {
            
$custom $this->_input->filterSingle('custom'XenForo_Input::UINT);
        }

        return 
$this->_getEmailTemplateAddEditResponse(array(), $custom);
    }

    
/**
     * Displays a form to edit an existing email template.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionEdit()
    {
        
$templateId $this->_input->filterSingle('template_id'XenForo_Input::UINT);
        
$template $this->_getEmailTemplateOrError($templateId);

        if (!
XenForo_Application::debugMode())
        {
            
$custom true;
        }
        else
        {
            
$custom $this->_input->filterSingle('custom'XenForo_Input::UINT);
        }

        return 
$this->_getEmailTemplateAddEditResponse($template$custom);
    }

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

        if (
$this->_input->filterSingle('delete'XenForo_Input::STRING))
        {
            return 
$this->responseReroute('XenForo_ControllerAdmin_EmailTemplate''deleteConfirm');
        }

        
$data $this->_input->filter(array(
            
'title' => XenForo_Input::STRING,
            
'custom' => XenForo_Input::UINT,
            
'subject' => array(XenForo_Input::STRING'noTrim' => true),
            
'body_text' => array(XenForo_Input::STRING'noTrim' => true),
            
'body_html' => array(XenForo_Input::STRING'noTrim' => true),
            
'addon_id' => XenForo_Input::STRING
        
));

        
$writer XenForo_DataWriter::create('XenForo_DataWriter_EmailTemplate');
        if (
$templateId $this->_input->filterSingle('template_id'XenForo_Input::UINT))
        {
            
$writer->setExistingData($templateId);
        }
        
$writer->bulkSet($data);
        
$writer->save();

        if (
$this->_input->filterSingle('reload'XenForo_Input::STRING))
        {
            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::RESOURCE_UPDATED,
                
XenForo_Link::buildAdminLink('email-templates/edit'$writer->getMergedData())
            );
        }
        else
        {
            
$extraData = array();
            if (
XenForo_Application::debugMode() && $writer->get('custom'))
            {
                
$extraData['standard'] = 1;
            }

            return 
$this->responseRedirect(
                
XenForo_ControllerResponse_Redirect::SUCCESS,
                
XenForo_Link::buildAdminLink('email-templates'''$extraData) . $this->getLastHash($writer->get('title'))
            );
        }
    }

    
/**
     * Delets an email template.
     *
     * @return XenForo_ControllerResponse_Abstract
     */
    
public function actionDelete()
    {
        if (
$this->isConfirmedPost())
        {
            return 
$this->_deleteData(
                
'XenForo_DataWriter_EmailTemplate''template_id',
                
XenForo_Link::buildAdminLink('email-templates')
            );
        }
        else 
// show delete confirmation dialog
        
{
            
$templateId $this->_input->filterSingle('template_id'XenForo_Input::UINT);
            
$template $this->_getEmailTemplateOrError($templateId);

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

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

    
/**
     * Gets the specified email template or throws an exception.
     *
     * @param integer $templateId
     *
     * @return array
     */
    
protected function _getEmailTemplateOrError($templateId)
    {
        return 
$this->getRecordOrError(
            
$templateId$this->_getEmailTemplateModel(), 'getEmailTemplateById',
            
'requested_email_template_not_found'
        
);
    }

    
/**
     * Gets the email template model.
     *
     * @return XenForo_Model_EmailTemplate
     */
    
protected function _getEmailTemplateModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_EmailTemplate');
    }

    
/**
     * Get the add-on model.
     *
     * @return XenForo_Model_AddOn
     */
    
protected function _getAddOnModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_AddOn');
    }
}
Онлайн: 0
Реклама