Файл: 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');
}
}