4 * @file EmailHandler.inc.php
6 * Copyright (c) 2003-2008 John Willinsky
7 * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
10 * @ingroup pages_manager
12 * @brief Handle requests for email management functions.
15 // $Id: EmailHandler.inc.php,v 1.10 2009/09/23 19:34:31 asmecher Exp $
17 import('pages.manager.ManagerHandler');
19 class EmailHandler
extends ManagerHandler
{
24 function EmailHandler() {
25 parent
::ManagerHandler();
29 * Display a list of the emails within the current press.
33 $this->setupTemplate(true);
35 $rangeInfo = Handler
::getRangeInfo('emails');
37 $press =& Request
::getPress();
38 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
39 $emailTemplates =& $emailTemplateDao->getEmailTemplates(Locale
::getLocale(), $press->getId());
41 import('core.ArrayItemIterator');
42 $emailTemplates =& ArrayItemIterator
::fromRangeInfo($emailTemplates, $rangeInfo);
44 $templateMgr =& TemplateManager
::getManager();
45 $templateMgr->assign('pageHierarchy', array(array(Request
::url(null, 'manager'), 'manager.pressManagement')));
46 $templateMgr->assign_by_ref('emailTemplates', $emailTemplates);
47 $templateMgr->assign('helpTopicId','press.managementPages.emails');
48 $templateMgr->display('manager/emails/emails.tpl');
51 function createEmail($args = array()) {
52 EmailHandler
::editEmail($args);
56 * Display form to create/edit an email.
57 * @param $args array optional, if set the first parameter is the key of the email template to edit
59 function editEmail($args = array()) {
61 $this->setupTemplate(true);
63 $press =& Request
::getPress();
64 $templateMgr =& TemplateManager
::getManager();
65 $templateMgr->append('pageHierarchy', array(Request
::url(null, 'manager', 'emails'), 'manager.emails'));
67 $emailKey = !isset($args) ||
empty($args) ?
null : $args[0];
69 import('manager.form.EmailTemplateForm');
71 $emailTemplateForm = new EmailTemplateForm($emailKey, $press);
72 $emailTemplateForm->initData();
73 $emailTemplateForm->display();
77 * Save changes to an email.
79 function updateEmail() {
81 $this->setupTemplate(true);
82 $press =& Request
::getPress();
84 import('manager.form.EmailTemplateForm');
86 $emailKey = Request
::getUserVar('emailKey');
88 $emailTemplateForm = new EmailTemplateForm($emailKey, $press);
89 $emailTemplateForm->readInputData();
91 if ($emailTemplateForm->validate()) {
92 $emailTemplateForm->execute();
93 Request
::redirect(null, null, 'emails');
96 $emailTemplateForm->display();
101 * Delete a custom email.
102 * @param $args array first parameter is the key of the email to delete
104 function deleteCustomEmail($args) {
106 $press =& Request
::getPress();
107 $emailKey = array_shift($args);
109 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
110 if ($emailTemplateDao->customTemplateExistsByKey($emailKey, $press->getId())) {
111 $emailTemplateDao->deleteEmailTemplateByKey($emailKey, $press->getId());
114 Request
::redirect(null, null, 'emails');
118 * Reset an email to default.
119 * @param $args array first parameter is the key of the email to reset
121 function resetEmail($args) {
124 if (isset($args) && !empty($args)) {
125 $press =& Request
::getPress();
127 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
128 $emailTemplateDao->deleteEmailTemplateByKey($args[0], $press->getId());
131 Request
::redirect(null, null, 'emails');
135 * resets all email templates associated with the press.
137 function resetAllEmails() {
140 $press =& Request
::getPress();
141 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
142 $emailTemplateDao->deleteEmailTemplatesByPress($press->getId());
144 Request
::redirect(null, null, 'emails');
148 * disables an email template.
149 * @param $args array first parameter is the key of the email to disable
151 function disableEmail($args) {
154 if (isset($args) && !empty($args)) {
155 $press =& Request
::getPress();
157 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
158 $emailTemplate = $emailTemplateDao->getBaseEmailTemplate($args[0], $press->getId());
160 if (isset($emailTemplate)) {
161 if ($emailTemplate->getCanDisable()) {
162 $emailTemplate->setEnabled(0);
164 if ($emailTemplate->getPressId() == null) {
165 $emailTemplate->setPressId($press->getId());
168 if ($emailTemplate->getEmailId() != null) {
169 $emailTemplateDao->updateBaseEmailTemplate($emailTemplate);
171 $emailTemplateDao->insertBaseEmailTemplate($emailTemplate);
177 Request
::redirect(null, null, 'emails');
181 * enables an email template.
182 * @param $args array first parameter is the key of the email to enable
184 function enableEmail($args) {
187 if (isset($args) && !empty($args)) {
188 $press =& Request
::getPress();
190 $emailTemplateDao =& DAORegistry
::getDAO('EmailTemplateDAO');
191 $emailTemplate = $emailTemplateDao->getBaseEmailTemplate($args[0], $press->getId());
193 if (isset($emailTemplate)) {
194 if ($emailTemplate->getCanDisable()) {
195 $emailTemplate->setEnabled(1);
197 if ($emailTemplate->getEmailId() != null) {
198 $emailTemplateDao->updateBaseEmailTemplate($emailTemplate);
200 $emailTemplateDao->insertBaseEmailTemplate($emailTemplate);
206 Request
::redirect(null, null, 'emails');