00001 <?php
00002
00015
00016 import('lib.pkp.classes.controllers.grid.GridHandler');
00017
00018
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
00048
00049
00050 function initialize(&$request) {
00051 parent::initialize($request);
00052
00053 $this->setId('preparedEmailsGrid');
00054
00055 AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
00056
00057
00058 $this->setTitle('grid.preparedEmails.title');
00059
00060 $this->setInstructions('grid.preparedEmails.description');
00061
00062
00063 $press =& $request->getPress();
00064 $emailTemplateDao =& DAORegistry::getDAO('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
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
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
00107
00112 function &getRowInstance() {
00113 $row = new PreparedEmailsGridRow();
00114 return $row;
00115 }
00116
00117
00118
00119
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
00168 $notificationMgr = new NotificationManager();
00169 $user =& $request->getUser();
00170 $notificationMgr->createTrivialNotification($user->getId());
00171
00172
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');
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');
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');
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');
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');
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 ?>