Вход Регистрация
Файл: 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');
    }
}
Онлайн: 2
Реклама