Open Journal Systems  3.3.0
NotificationsGridCellProvider.inc.php
1 <?php
2 
17 import('lib.pkp.classes.controllers.grid.GridCellProvider');
18 import('lib.pkp.classes.linkAction.request.AjaxAction');
19 
21 
28  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
29  assert($column->getId() == 'task');
30 
31  $templateMgr = TemplateManager::getManager($request);
32 
33  $notification = $row->getData();
34  $contextDao = Application::getContextDAO();
35  $context = $contextDao->getById($notification->getContextId());
36 
37  $notificationMgr = new NotificationManager();
38  $router = $request->getRouter();
39 
40  $templateMgr->assign(array(
41  'notificationMgr' => $notificationMgr,
42  'notification' => $notification,
43  'context' => $context,
44  'notificationObjectTitle' => $this->_getTitle($notification),
45  'message' => PKPString::stripUnsafeHtml($notificationMgr->getNotificationMessage($request, $notification)),
46  ));
47 
48  // See if we're working in a multi-context environment
49  $user = $request->getUser();
50  $contextDao = Application::getContextDAO();
51  $contexts = $contextDao->getAvailable($user?$user->getId():null)->toArray();
52  $templateMgr->assign('isMultiContext', count($contexts) > 1);
53 
54  return array(new LinkAction(
55  'details',
56  new AjaxAction($router->url(
57  $request, null, null, 'markRead',
58  null,
59  array('redirect' => 1, 'selectedElements' => array($notification->getId()))
60  )),
61  $templateMgr->fetch('controllers/grid/tasks/task.tpl')
62  ));
63  }
64 
65 
66  //
67  // Template methods from GridCellProvider
68  //
76  function getTemplateVarsFromRowColumn($row, $column) {
77  assert($column->getId()=='task');
78 
79  // The action has the label.
80  return array('label' => '');
81  }
82 
88  function _getTitle($notification) {
89  switch ($notification->getAssocType()) {
90  case ASSOC_TYPE_QUEUED_PAYMENT:
91  $contextDao = Application::getContextDAO();
92  $paymentManager = Application::getPaymentManager($contextDao->getById($notification->getContextId()));
93  $queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /* @var $queuedPaymentDao QueuedPaymentDAO */
94  $queuedPayment = $queuedPaymentDao->getById($notification->getAssocId());
95  if ($queuedPayment) switch ($queuedPayment->getType()) {
96  case PAYMENT_TYPE_PUBLICATION:
97  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
98  return $submissionDao->getById($queuedPayment->getAssocId())->getLocalizedTitle();
99  }
100  assert(false);
101  return '—';
102  case ASSOC_TYPE_ANNOUNCEMENT:
103  $announcementId = $notification->getAssocId();
104  $announcementDao = DAORegistry::getDAO('AnnouncementDAO'); /* @var $announcementDao AnnouncementDAO */
105  $announcement = $announcementDao->getById($announcementId);
106  if ($announcement) return $announcement->getLocalizedTitle();
107  return null;
108  case ASSOC_TYPE_SUBMISSION:
109  $submissionId = $notification->getAssocId();
110  break;
111  case ASSOC_TYPE_SUBMISSION_FILE:
112  $fileId = $notification->getAssocId();
113  break;
114  case ASSOC_TYPE_REVIEW_ASSIGNMENT:
115  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
116  $reviewAssignment = $reviewAssignmentDao->getById($notification->getAssocId());
117  assert(is_a($reviewAssignment, 'ReviewAssignment'));
118  $submissionId = $reviewAssignment->getSubmissionId();
119  break;
120  case ASSOC_TYPE_REVIEW_ROUND:
121  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
122  $reviewRound = $reviewRoundDao->getById($notification->getAssocId());
123  assert(is_a($reviewRound, 'ReviewRound'));
124  $submissionId = $reviewRound->getSubmissionId();
125  break;
126  case ASSOC_TYPE_QUERY:
127  $queryDao = DAORegistry::getDAO('QueryDAO'); /* @var $queryDao QueryDAO */
128  $query = $queryDao->getById($notification->getAssocId());
129  assert(is_a($query, 'Query'));
130  switch ($query->getAssocType()) {
131  case ASSOC_TYPE_SUBMISSION:
132  $submissionId = $query->getAssocId();
133  break;
134  case ASSOC_TYPE_REPRESENTATION:
135  $representationDao = Application::getRepresentationDAO();
136  $representation = $representationDao->getById($query->getAssocId());
137  $publication = Services::get('publication')->get($representation->getData('publicationId'));
138  $submissionId = $publication->getData('submissionId');
139  break;
140  default: assert(false);
141  }
142  break;
143  default:
144  return '—';
145  }
146 
147  if (!isset($submissionId) && isset($fileId)) {
148  assert(is_numeric($fileId));
149  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
150  $submissionFile = $submissionFileDao->getLatestRevision($fileId);
151  assert(is_a($submissionFile, 'SubmissionFile'));
152  $submissionId = $submissionFile->getSubmissionId();
153  }
154  assert(is_numeric($submissionId));
155  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
156  $submission = $submissionDao->getById($submissionId);
157  assert(is_a($submission, 'Submission'));
158 
159  return $submission->getLocalizedTitle();
160  }
161 }
162 
163 
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
Application\getRepresentationDAO
static getRepresentationDAO()
Definition: Application.inc.php:162
PKPString\stripUnsafeHtml
static stripUnsafeHtml($input)
Definition: PKPString.inc.php:377
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Application\getPaymentManager
static getPaymentManager($context)
Definition: Application.inc.php:226
NotificationsGridCellProvider
Class for a cell provider that can retrieve labels from notifications.
Definition: NotificationsGridCellProvider.inc.php:20
AjaxAction
Class defining an AJAX action.
Definition: AjaxAction.inc.php:21
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
GridCellProvider
Base class for a grid column's cell provider.
Definition: GridCellProvider.inc.php:20
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
NotificationsGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: NotificationsGridCellProvider.inc.php:28
NotificationsGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: NotificationsGridCellProvider.inc.php:76
NotificationManager
Definition: NotificationManager.inc.php:19
NotificationsGridCellProvider\_getTitle
_getTitle($notification)
Definition: NotificationsGridCellProvider.inc.php:88
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49