Open Journal Systems  3.3.0
InformationCenterHandler.inc.php
1 <?php
2 
16 import('classes.handler.Handler');
17 import('lib.pkp.classes.core.JSONMessage');
18 import('classes.log.SubmissionEventLogEntry');
19 
20 abstract class InformationCenterHandler extends Handler {
22  var $_submission;
23 
27  function __construct() {
28  parent::__construct();
29  $this->addRoleAssignment(
30  array(ROLE_ID_SUB_EDITOR, ROLE_ID_MANAGER),
31  array(
32  'viewInformationCenter',
33  'viewHistory',
34  'viewNotes', 'listNotes', 'saveNote', 'deleteNote',
35  )
36  );
37  }
38 
39 
40  //
41  // Implement template methods from PKPHandler.
42  //
46  function authorize($request, &$args, $roleAssignments) {
47  // Require a submission
48  import('lib.pkp.classes.security.authorization.SubmissionAccessPolicy');
49  $this->addPolicy(new SubmissionAccessPolicy($request, $args, $roleAssignments, 'submissionId'));
50  return parent::authorize($request, $args, $roleAssignments);
51  }
52 
57  function initialize($request) {
58  parent::initialize($request);
59 
60  // Fetch the submission and file to display information about
61  $this->_submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
62  }
63 
64 
65  //
66  // Public operations
67  //
74  function viewInformationCenter($args, $request) {
75  $this->setupTemplate($request);
76  $templateMgr = TemplateManager::getManager($request);
77  return $templateMgr->fetchJson('controllers/informationCenter/informationCenter.tpl');
78  }
79 
84  abstract function viewNotes($args, $request);
85 
92  abstract function saveNote($args, $request);
93 
100  function deleteNote($args, $request) {
101  $this->setupTemplate($request);
102 
103  $noteId = (int) $request->getUserVar('noteId');
104  $noteDao = DAORegistry::getDAO('NoteDAO'); /* @var $noteDao NoteDAO */
105  $note = $noteDao->getById($noteId);
106 
107  if (!$request->checkCSRF() || !$note || $note->getAssocType() != $this->_getAssocType() || $note->getAssocId() != $this->_getAssocId()) fatalError('Invalid note!');
108  $noteDao->deleteById($noteId);
109 
110  $user = $request->getUser();
111  NotificationManager::createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedNote')));
112 
113  $json = new JSONMessage(true);
114  $jsonViewNotesResponse = $this->viewNotes($args, $request);
115  $json->setEvent('dataChanged');
116  $json->setEvent('noteDeleted', $jsonViewNotesResponse->_content);
117 
118  return $json;
119  }
120 
127  function _listNotes($args, $request) {
128  $this->setupTemplate($request);
129 
130  $templateMgr = TemplateManager::getManager($request);
131  $noteDao = DAORegistry::getDAO('NoteDAO'); /* @var $noteDao NoteDAO */
132  $templateMgr->assign('notes', $noteDao->getByAssoc($this->_getAssocType(), $this->_getAssocId()));
133 
134  $user = $request->getUser();
135  $templateMgr->assign('currentUserId', $user->getId());
136  $templateMgr->assign('notesDeletable', true);
137 
138  $templateMgr->assign('notesListId', 'notesList');
139 
140  return $templateMgr->fetch('controllers/informationCenter/notesList.tpl');
141  }
142 
149  function _getLinkParams() {
150  return array(
151  'submissionId' => $this->_submission->getId(),
152  );
153  }
154 
162  function _logEvent($request, $object, $eventType, $logClass) {
163  // Get the log event message
164  switch($eventType) {
165  case SUBMISSION_LOG_NOTE_POSTED:
166  $logMessage = 'informationCenter.history.notePosted';
167  break;
168  case SUBMISSION_LOG_MESSAGE_SENT:
169  $logMessage = 'informationCenter.history.messageSent';
170  break;
171  default:
172  assert(false);
173  }
174  import('lib.pkp.classes.log.SubmissionFileLog');
175  $logClass::logEvent($request, $object, $eventType, $logMessage);
176  }
177 
178  function setupTemplate($request) {
179  AppLocale::requireComponents(LOCALE_COMPONENT_APP_SUBMISSION, LOCALE_COMPONENT_PKP_SUBMISSION);
180 
181  $linkParams = $this->_getLinkParams();
182  $templateMgr = TemplateManager::getManager($request);
183 
184  // Preselect tab from keywords 'notes', 'notify', 'history'
185  switch ($request->getUserVar('tab')) {
186  case 'history':
187  $templateMgr->assign('selectedTabIndex', 2);
188  break;
189  case 'notify':
190  $userId = (int) $request->getUserVar('userId');
191  if ($userId) {
192  $linkParams['userId'] = $userId; // user validated in Listbuilder.
193  }
194  $templateMgr->assign('selectedTabIndex', 1);
195  break;
196  // notes is default
197  default:
198  $templateMgr->assign('selectedTabIndex', 0);
199  break;
200  }
201 
202  $templateMgr->assign('linkParams', $linkParams);
203  parent::setupTemplate($request);
204  }
205 
210  abstract function _getAssocId();
211 
216  abstract function _getAssocType();
217 }
218 
219 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
InformationCenterHandler\_logEvent
_logEvent($request, $object, $eventType, $logClass)
Definition: InformationCenterHandler.inc.php:165
InformationCenterHandler\_getLinkParams
_getLinkParams()
Definition: InformationCenterHandler.inc.php:152
InformationCenterHandler
Parent class for file/submission information center handlers.
Definition: InformationCenterHandler.inc.php:20
InformationCenterHandler\_listNotes
_listNotes($args, $request)
Definition: InformationCenterHandler.inc.php:130
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
InformationCenterHandler\setupTemplate
setupTemplate($request)
Definition: InformationCenterHandler.inc.php:181
InformationCenterHandler\$_submission
$_submission
Definition: InformationCenterHandler.inc.php:25
InformationCenterHandler\_getAssocType
_getAssocType()
PKPNotificationOperationManager\createTrivialNotification
createTrivialNotification($userId, $notificationType=NOTIFICATION_TYPE_SUCCESS, $params=null)
Definition: PKPNotificationOperationManager.inc.php:193
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
InformationCenterHandler\viewInformationCenter
viewInformationCenter($args, $request)
Definition: InformationCenterHandler.inc.php:77
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
InformationCenterHandler\_getAssocId
_getAssocId()
InformationCenterHandler\deleteNote
deleteNote($args, $request)
Definition: InformationCenterHandler.inc.php:103
InformationCenterHandler\viewNotes
viewNotes($args, $request)
InformationCenterHandler\saveNote
saveNote($args, $request)
InformationCenterHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: InformationCenterHandler.inc.php:49
SubmissionAccessPolicy
Base class to control (write) access to submissions and (read) access to submission details in OMP.
Definition: SubmissionAccessPolicy.inc.php:19
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
InformationCenterHandler\__construct
__construct()
Definition: InformationCenterHandler.inc.php:30
Handler
Base request handler application class.
Definition: Handler.inc.php:18
InformationCenterHandler\initialize
initialize($request)
Definition: InformationCenterHandler.inc.php:60