Open Preprint Systems  3.3.0
WorkflowHandler.inc.php
1 <?php
2 
16 import('lib.pkp.pages.workflow.PKPWorkflowHandler');
17 
18 // Access decision actions constants.
19 import('classes.workflow.EditorDecisionActionsManager');
20 
25  function __construct() {
26  parent::__construct();
27 
28  $this->addRoleAssignment(
29  array(ROLE_ID_SUB_EDITOR, ROLE_ID_MANAGER, ROLE_ID_ASSISTANT),
30  array(
31  'access', 'index', 'submission',
32  'editorDecisionActions', // Submission & review
33  'externalReview', // review
34  'editorial',
35  'production',
36  'submissionHeader',
37  'submissionProgressBar',
38  )
39  );
40  }
41 
46  function setupIndex($request) {
47  parent::setupIndex($request);
48 
49  $templateMgr = TemplateManager::getManager($request);
50  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
51 
52  $submissionContext = $request->getContext();
53  if ($submission->getContextId() !== $submissionContext->getId()) {
54  $submissionContext = Services::get('context')->get($submission->getContextId());
55  }
56 
57  $supportedSubmissionLocales = $submissionContext->getSupportedSubmissionLocales();
58  $localeNames = AppLocale::getAllLocales();
59  $locales = array_map(function($localeKey) use ($localeNames) {
60  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
61  }, $supportedSubmissionLocales);
62 
63  $latestPublication = $submission->getLatestPublication();
64 
65  $latestPublicationApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(), 'submissions/' . $submission->getId() . '/publications/' . $latestPublication->getId());
66  $temporaryFileApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(), 'temporaryFiles');
67  $relatePublicationApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(), 'submissions/' . $submission->getId() . '/publications/' . $latestPublication->getId()) . '/relate';
68 
69  import('classes.file.PublicFileManager');
70  $publicFileManager = new PublicFileManager();
71  $baseUrl = $request->getBaseUrl() . '/' . $publicFileManager->getContextFilesPath($submissionContext->getId());
72 
73  $issueEntryForm = new APP\components\forms\publication\IssueEntryForm($latestPublicationApiUrl, $locales, $latestPublication, $submissionContext, $baseUrl, $temporaryFileApiUrl);
74  $relationForm = new APP\components\forms\publication\RelationForm($relatePublicationApiUrl, $locales, $latestPublication, $submissionContext, $baseUrl, $temporaryFileApiUrl);
75 
76  import('classes.components.forms.publication.IssueEntryForm'); // Constant import
77  $templateMgr->setConstants([
78  'FORM_ISSUE_ENTRY',
79  ]);
80  import('classes.components.forms.publication.RelationForm'); // Constant import
81  $templateMgr->setConstants([
82  'FORM_ID_RELATION',
83  ]);
84 
85  $sectionWordLimits = [];
86  $sectionDao = DAORegistry::getDAO('SectionDAO'); /* @var $sectionDao SectionDAO */
87  $sectionIterator = $sectionDao->getByContextId($submissionContext->getId());
88  while ($section = $sectionIterator->next()) {
89  $sectionWordLimits[$section->getId()] = (int) $section->getAbstractWordCount() ?? 0;
90  }
91 
92 
93  // Add the word limit to the existing title/abstract form
94  $components = $templateMgr->getState('components');
95  if (!empty($components[FORM_TITLE_ABSTRACT]) &&
96  array_key_exists($submission->getLatestPublication()->getData('sectionId'), $sectionWordLimits)) {
97  $limit = (int) $sectionWordLimits[$submission->getLatestPublication()->getData('sectionId')];
98  foreach ($components[FORM_TITLE_ABSTRACT]['fields'] as $key => $field) {
99  if ($field['name'] === 'abstract') {
100  $components[FORM_TITLE_ABSTRACT]['fields'][$key]['wordLimit'] = $limit;
101  break;
102  }
103  }
104  }
105  $components[FORM_ISSUE_ENTRY] = $issueEntryForm->getConfig();
106  $components[FORM_ID_RELATION] = $relationForm->getConfig();
107 
108  $publicationFormIds = $templateMgr->getState('publicationFormIds');
109  $publicationFormIds[] = FORM_ISSUE_ENTRY;
110 
111  $templateMgr->setState([
112  'components' => $components,
113  'publicationFormIds' => $publicationFormIds,
114  'sectionWordLimits' => $sectionWordLimits,
115  ]);
116  }
117 
118 
119  //
120  // Protected helper methods
121  //
127  protected function getEditorAssignmentNotificationTypeByStageId($stageId) {
128  switch ($stageId) {
129  case WORKFLOW_STAGE_ID_SUBMISSION:
130  return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_SUBMISSION;
131  case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
132  return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EXTERNAL_REVIEW;
133  case WORKFLOW_STAGE_ID_EDITING:
134  return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EDITING;
135  case WORKFLOW_STAGE_ID_PRODUCTION:
136  return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_PRODUCTION;
137  }
138  return null;
139  }
140 
144  protected function _getRepresentationsGridUrl($request, $submission) {
145  return $request->getDispatcher()->url(
146  $request,
147  ROUTE_COMPONENT,
148  null,
149  'grid.articleGalleys.ArticleGalleyGridHandler',
150  'fetchGrid',
151  null,
152  [
153  'submissionId' => $submission->getId(),
154  'publicationId' => '__publicationId__',
155  ]
156  );
157  }
158 }
159 
160 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
APP\components\forms\publication\IssueEntryForm
Definition: IssueEntryForm.inc.php:23
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
WorkflowHandler\__construct
__construct()
Definition: WorkflowHandler.inc.php:25
PKPWorkflowHandler
Definition: PKPWorkflowHandler.inc.php:24
WorkflowHandler\getEditorAssignmentNotificationTypeByStageId
getEditorAssignmentNotificationTypeByStageId($stageId)
Definition: WorkflowHandler.inc.php:127
WorkflowHandler\_getRepresentationsGridUrl
_getRepresentationsGridUrl($request, $submission)
Definition: WorkflowHandler.inc.php:144
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
WorkflowHandler\setupIndex
setupIndex($request)
Definition: WorkflowHandler.inc.php:46
APP\components\forms\publication\RelationForm
Definition: RelationForm.inc.php:21
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1226
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
WorkflowHandler
Handle requests for the submssion workflow.
Definition: WorkflowHandler.inc.php:21
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49