• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/settings/preparedEmails/PreparedEmailsGridHandler.inc.php

00001 <?php
00002 
00015 // Import grid base classes
00016 import('lib.pkp.classes.controllers.grid.GridHandler');
00017 
00018 // Import classes specific to this grid handler
00019 import('controllers.grid.settings.preparedEmails.PreparedEmailsGridRow');
00020 
00021 class PreparedEmailsGridHandler extends GridHandler {
00025    function PreparedEmailsGridHandler() {
00026       parent::GridHandler();
00027       $this->addRoleAssignment(
00028          array(ROLE_ID_PRESS_MANAGER),
00029          array('fetchRow', 'fetchGrid', 'addPreparedEmail', 'editPreparedEmail', 'updatePreparedEmail',
00030             'resetEmail', 'resetAllEmails', 'disableEmail', 'enableEmail', 'deleteCustomEmail')
00031       );
00032    }
00033 
00040    function authorize(&$request, $args, $roleAssignments) {
00041       import('classes.security.authorization.OmpPressAccessPolicy');
00042       $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00043       return parent::authorize($request, $args, $roleAssignments);
00044    }
00045 
00046    /*
00047     * Configure the grid
00048     * @param $request PKPRequest
00049     */
00050    function initialize(&$request) {
00051       parent::initialize($request);
00052       // Basic grid configuration
00053       $this->setId('preparedEmailsGrid');
00054 
00055       AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00056 
00057       // Set the grid title.
00058       $this->setTitle('grid.preparedEmails.title');
00059 
00060       $this->setInstructions('grid.preparedEmails.description');
00061 
00062       // Elements to be displayed in the grid
00063       $press =& $request->getPress();
00064       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00065       $emailTemplates =& $emailTemplateDao->getEmailTemplates(AppLocale::getLocale(), $press->getId());
00066       $rowData = array();
00067       foreach ($emailTemplates as $emailTemplate) {
00068          $rowData[$emailTemplate->getEmailKey()] = $emailTemplate;
00069       }
00070       $this->setGridDataElements($rowData);
00071 
00072       // Grid actions
00073       import('controllers.grid.settings.preparedEmails.linkAction.EditEmailLinkAction');
00074       $addEmailLinkAction = & new EditEmailLinkAction($request);
00075       $this->addAction($addEmailLinkAction);
00076 
00077       import('lib.pkp.classes.linkAction.LinkAction');
00078       import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
00079       $router =& $request->getRouter();
00080       $this->addAction(
00081          new LinkAction(
00082             'resetAll',
00083             new RemoteActionConfirmationModal(
00084                __('manager.emails.resetAll.message'), null,
00085                $router->url($request, null,
00086                   'grid.settings.preparedEmails.PreparedEmailsGridHandler', 'resetAllEmails')
00087             ),
00088             __('manager.emails.resetAll'),
00089             'reset_default'
00090          )
00091       );
00092 
00093 
00094       // Columns
00095       import('controllers.grid.settings.preparedEmails.PreparedEmailsGridCellProvider');
00096       $cellProvider = new PreparedEmailsGridCellProvider();
00097       $this->addColumn(new GridColumn('name', 'common.name', null, 'controllers/grid/gridCell.tpl', $cellProvider, array('width' => 40)));
00098       $this->addColumn(new GridColumn('sender', 'email.sender', null, 'controllers/grid/gridCell.tpl', $cellProvider, array('width' => 10)));
00099       $this->addColumn(new GridColumn('recipient', 'email.recipient', null, 'controllers/grid/gridCell.tpl', $cellProvider));
00100       $this->addColumn(new GridColumn('subject', 'common.subject', null, 'controllers/grid/gridCell.tpl', $cellProvider));
00101       $this->addColumn(new GridColumn('enabled', 'common.enabled', null, 'controllers/grid/common/cell/selectStatusCell.tpl', $cellProvider, array('width' => 5)));
00102    }
00103 
00104 
00105    //
00106    // Overridden methods from GridHandler
00107    //
00112    function &getRowInstance() {
00113       $row = new PreparedEmailsGridRow();
00114       return $row;
00115    }
00116 
00117 
00118    //
00119    // Public handler methods
00120    //
00127    function addPreparedEmail($args, &$request) {
00128       return $this->editPreparedEmail($args, $request);
00129    }
00130 
00138    function editPreparedEmail($args, &$request) {
00139       $press =& $request->getPress();
00140       $emailKey = $request->getUserVar('emailKey');
00141 
00142       import('controllers.grid.settings.preparedEmails.form.PreparedEmailForm');
00143       $preparedEmailForm = new PreparedEmailForm($emailKey, $press);
00144       $preparedEmailForm->initData($request);
00145 
00146       $json = new JSONMessage(true, $preparedEmailForm->fetch($request));
00147       return $json->getString();
00148    }
00149 
00156    function updatePreparedEmail($args, &$request) {
00157       $press =& $request->getPress();
00158       $emailKey = $request->getUserVar('emailKey');
00159 
00160       import('controllers.grid.settings.preparedEmails.form.PreparedEmailForm');
00161       $preparedEmailForm = new PreparedEmailForm($emailKey, $press);
00162       $preparedEmailForm->readInputData();
00163 
00164       if ($preparedEmailForm->validate()) {
00165          $preparedEmailForm->execute();
00166 
00167          // Create notification.
00168          $notificationMgr = new NotificationManager();
00169          $user =& $request->getUser();
00170          $notificationMgr->createTrivialNotification($user->getId());
00171 
00172          // Let the calling grid reload itself
00173          return DAO::getDataChangedEvent($emailKey);
00174       } else {
00175          $json = new JSONMessage(false);
00176          return $json->getString();
00177       }
00178    }
00179 
00186    function resetEmail($args, &$request) {
00187       $emailKey = $request->getUserVar('emailKey');
00188       assert(is_string($emailKey));
00189 
00190       $press =& $request->getPress();
00191 
00192       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00193       if ($emailTemplateDao->templateExistsByKey($emailKey, $press->getId())) {
00194          $emailTemplateDao->deleteEmailTemplateByKey($emailKey, $press->getId());
00195          return DAO::getDataChangedEvent($emailKey);
00196       } else {
00197          $json = new JSONMessage(false);
00198          return $json->getString();
00199       }
00200    }
00201 
00207    function resetAllEmails($args, &$request) {
00208       $press =& $request->getPress();
00209       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00210       $emailTemplateDao->deleteEmailTemplatesByPress($press->getId());
00211       return DAO::getDataChangedEvent();
00212    }
00213 
00219    function disableEmail($args, &$request) {
00220       $emailKey = $request->getUserVar('emailKey');
00221       assert(is_string($emailKey));
00222 
00223       $press =& $request->getPress();
00224 
00225       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00226       $emailTemplate = $emailTemplateDao->getBaseEmailTemplate($emailKey, $press->getId());
00227 
00228       if (isset($emailTemplate)) {
00229          if ($emailTemplate->getCanDisable()) {
00230             $emailTemplate->setEnabled(0);
00231 
00232             if ($emailTemplate->getAssocId() == null) {
00233                $emailTemplate->setAssocId($press->getId());
00234                $emailTemplate->setAssocType(ASSOC_TYPE_PRESS);
00235             }
00236 
00237             if ($emailTemplate->getEmailId() != null) {
00238                $emailTemplateDao->updateBaseEmailTemplate($emailTemplate);
00239             } else {
00240                $emailTemplateDao->insertBaseEmailTemplate($emailTemplate);
00241             }
00242 
00243             return DAO::getDataChangedEvent($emailKey);
00244          }
00245       } else {
00246          $json = new JSONMessage(false);
00247          return $json->getString();
00248       }
00249    }
00250 
00251 
00257    function enableEmail($args, &$request) {
00258       $emailKey = $request->getUserVar('emailKey');
00259       assert(is_string($emailKey));
00260 
00261       $press =& $request->getPress();
00262 
00263       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00264       $emailTemplate = $emailTemplateDao->getBaseEmailTemplate($emailKey, $press->getId());
00265 
00266       if (isset($emailTemplate)) {
00267          if ($emailTemplate->getCanDisable()) {
00268             $emailTemplate->setEnabled(1);
00269 
00270             if ($emailTemplate->getEmailId() != null) {
00271                $emailTemplateDao->updateBaseEmailTemplate($emailTemplate);
00272             } else {
00273                $emailTemplateDao->insertBaseEmailTemplate($emailTemplate);
00274             }
00275 
00276             return DAO::getDataChangedEvent($emailKey);
00277          }
00278       } else {
00279          $json = new JSONMessage(false);
00280          return $json->getString();
00281       }
00282    }
00283 
00289    function deleteCustomEmail($args, &$request) {
00290       $emailKey = $request->getUserVar('emailKey');
00291       $press =& $request->getPress();
00292 
00293       $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); /* @var $emailTemplateDao EmailTemplateDAO */
00294       if ($emailTemplateDao->customTemplateExistsByKey($emailKey, $press->getId())) {
00295          $emailTemplateDao->deleteEmailTemplateByKey($emailKey, $press->getId());
00296          return DAO::getDataChangedEvent($emailKey);
00297       } else {
00298          $json = new JSONMessage(false);
00299          return $json->getString();
00300       }
00301    }
00302 
00303 }
00304 
00305 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1