Open Journal Systems  3.3.0
AuthorDashboardTabHandler.inc.php
1 <?php
2 
16 // Import the base Handler.
17 import('classes.handler.Handler');
18 import('lib.pkp.classes.core.JSONMessage');
19 
21 
25  function __construct() {
26  parent::__construct();
27  $this->addRoleAssignment(array(ROLE_ID_AUTHOR), array('fetchTab'));
28  }
29 
30 
31  //
32  // Extended methods from Handler
33  //
37  function authorize($request, &$args, $roleAssignments) {
38  import('lib.pkp.classes.security.authorization.AuthorDashboardAccessPolicy');
39  $this->addPolicy(new AuthorDashboardAccessPolicy($request, $args, $roleAssignments), true);
40 
41  return parent::authorize($request, $args, $roleAssignments);
42  }
43 
44 
45  //
46  // Public handler operations
47  //
54  function fetchTab($args, $request) {
55  $this->setupTemplate($request);
56  $templateMgr = TemplateManager::getManager($request);
57 
58  $stageId = $request->getUserVar('stageId');
59  $templateMgr->assign('stageId', $stageId);
60 
61  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
62  $templateMgr->assign('submission', $submission);
63 
64  // Check if current author can access CopyeditFilesGrid within copyedit stage
65  $canAccessCopyeditingStage = true;
66  $userAllowedStages = $this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES);
67  if (!array_key_exists(WORKFLOW_STAGE_ID_EDITING, $userAllowedStages)) {
68  $canAccessCopyeditingStage = false;
69  }
70  $templateMgr->assign('canAccessCopyeditingStage', $canAccessCopyeditingStage);
71 
72  // Import submission file to define file stages.
73  import('lib.pkp.classes.submission.SubmissionFile');
74 
75  // Workflow-stage specific "upload file" action.
76  $currentStage = $submission->getStageId();
77 
78  $templateMgr->assign('lastReviewRoundNumber', $this->_getLastReviewRoundNumber($submission, $currentStage));
79 
80  if (in_array($stageId, array(WORKFLOW_STAGE_ID_INTERNAL_REVIEW, WORKFLOW_STAGE_ID_EXTERNAL_REVIEW))) {
81  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
82  $templateMgr->assign('reviewRounds', $reviewRoundDao->getBySubmissionId($submission->getId(), $stageId));
83  }
84 
85  // If the submission is in or past the editorial stage,
86  // assign the editor's copyediting emails to the template
87  $submissionEmailLogDao = DAORegistry::getDAO('SubmissionEmailLogDAO'); /* @var $submissionEmailLogDao SubmissionEmailLogDAO */
88  $user = $request->getUser();
89 
90  // Define the notification options.
91  $templateMgr->assign(
92  'authorDashboardNotificationRequestOptions',
93  $this->_getNotificationRequestOptions($submission)
94  );
95 
96  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION);
97 
98  switch ($stageId) {
99  case WORKFLOW_STAGE_ID_SUBMISSION:
100  return $templateMgr->fetchJson('controllers/tab/authorDashboard/submission.tpl');
101  case WORKFLOW_STAGE_ID_INTERNAL_REVIEW:
102  return $templateMgr->fetchJson('controllers/tab/authorDashboard/internalReview.tpl');
103  case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
104  return $templateMgr->fetchJson('controllers/tab/authorDashboard/externalReview.tpl');
105  case WORKFLOW_STAGE_ID_EDITING:
106  $templateMgr->assign('copyeditingEmails', $submissionEmailLogDao->getByEventType($submission->getId(), SUBMISSION_EMAIL_COPYEDIT_NOTIFY_AUTHOR, $user->getId()));
107  return $templateMgr->fetchJson('controllers/tab/authorDashboard/editorial.tpl');
108  case WORKFLOW_STAGE_ID_PRODUCTION:
109  $templateMgr->assign(array(
110  'productionEmails' => $submissionEmailLogDao->getByEventType($submission->getId(), SUBMISSION_EMAIL_PROOFREAD_NOTIFY_AUTHOR, $user->getId()),
111  ));
112  return $templateMgr->fetchJson('controllers/tab/authorDashboard/production.tpl');
113  }
114  }
115 
122  protected function _getLastReviewRoundNumber($submission, $stageId) {
123  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
124  $lastExternalReviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
125  if ($lastExternalReviewRound) {
126  return $lastExternalReviewRound->getRound();
127  }
128  return 0;
129  }
130 
136  protected function _getNotificationRequestOptions($submission) {
137  $submissionAssocTypeAndIdArray = array(ASSOC_TYPE_SUBMISSION, $submission->getId());
138  return array(
139  NOTIFICATION_LEVEL_TASK => array(
140  NOTIFICATION_TYPE_PENDING_EXTERNAL_REVISIONS => $submissionAssocTypeAndIdArray),
141  NOTIFICATION_LEVEL_NORMAL => array(
142  NOTIFICATION_TYPE_EDITOR_DECISION_ACCEPT => $submissionAssocTypeAndIdArray,
143  NOTIFICATION_TYPE_EDITOR_DECISION_EXTERNAL_REVIEW => $submissionAssocTypeAndIdArray,
144  NOTIFICATION_TYPE_EDITOR_DECISION_PENDING_REVISIONS => $submissionAssocTypeAndIdArray,
145  NOTIFICATION_TYPE_EDITOR_DECISION_RESUBMIT => $submissionAssocTypeAndIdArray,
146  NOTIFICATION_TYPE_EDITOR_DECISION_NEW_ROUND => $submissionAssocTypeAndIdArray,
147  NOTIFICATION_TYPE_EDITOR_DECISION_DECLINE => $submissionAssocTypeAndIdArray,
148  NOTIFICATION_TYPE_EDITOR_DECISION_SEND_TO_PRODUCTION => $submissionAssocTypeAndIdArray),
149  NOTIFICATION_LEVEL_TRIVIAL => array()
150  );
151  }
152 }
153 
154 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
AuthorDashboardTabHandler\fetchTab
fetchTab($args, $request)
Definition: AuthorDashboardTabHandler.inc.php:54
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
AuthorDashboardTabHandler
Handle AJAX operations for authorDashboard tabs.
Definition: AuthorDashboardTabHandler.inc.php:20
AuthorDashboardTabHandler\__construct
__construct()
Definition: AuthorDashboardTabHandler.inc.php:25
AuthorDashboardAccessPolicy
Class to control access to author dashboard.
Definition: AuthorDashboardAccessPolicy.inc.php:18
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
AuthorDashboardTabHandler\_getNotificationRequestOptions
_getNotificationRequestOptions($submission)
Definition: AuthorDashboardTabHandler.inc.php:136
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
AuthorDashboardTabHandler\_getLastReviewRoundNumber
_getLastReviewRoundNumber($submission, $stageId)
Definition: AuthorDashboardTabHandler.inc.php:122
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
Handler
Base request handler application class.
Definition: Handler.inc.php:18
AuthorDashboardTabHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: AuthorDashboardTabHandler.inc.php:37