Open Journal Systems  3.3.0
SubmissionService.inc.php
1 <?php
2 
17 namespace APP\Services;
18 
20 
24  public function __construct() {
25  \HookRegistry::register('API::submissions::params', array($this, 'modifyAPISubmissionsParams'));
26  \HookRegistry::register('Submission::getMany::queryBuilder', array($this, 'modifySubmissionQueryBuilder'));
27  \HookRegistry::register('Submission::getMany::queryObject', array($this, 'modifySubmissionListQueryObject'));
28  \HookRegistry::register('Submission::getProperties::values', array($this, 'modifyPropertyValues'));
29  }
30 
42  public function modifyAPISubmissionsParams($hookName, $args) {
43  $returnParams =& $args[0];
44  $slimRequest = $args[1];
45  $requestParams = $slimRequest->getQueryParams();
46 
47  foreach ($requestParams as $param => $value) {
48  switch ($param) {
49  case 'issueIds':
50  case 'sectionIds':
51  if (is_string($value) && strpos($value, ',') > -1) {
52  $value = explode(',', $value);
53  } elseif (!is_array($value)) {
54  $value = array($value);
55  }
56  $returnParams[$param] = array_map('intval', $value);
57  }
58  }
59  }
60 
73  public function modifySubmissionQueryBuilder($hookName, $args) {
74  $submissionQB =& $args[0];
75  $requestArgs = $args[1];
76 
77  if (!empty($requestArgs['sectionIds'])) {
78  $submissionQB->filterBySections($requestArgs['sectionIds']);
79  }
80 
81  if (!empty($requestArgs['issueIds'])) {
82  $submissionQB->filterByIssues($requestArgs['issueIds']);
83  }
84  }
85 
97  public function modifySubmissionListQueryObject($hookName, $args) {
98  $queryObject =& $args[0];
99  $queryBuilder = $args[1];
100 
101  $queryObject = $queryBuilder->appGet($queryObject);
102  }
103 
117  public function modifyPropertyValues($hookName, $args) {
118  $values =& $args[0];
119  $submission = $args[1];
120  $props = $args[2];
121  $request = $args[3]['request'];
122  $context = $request->getContext();
123  $dispatcher = $request->getDispatcher();
124 
125  foreach ($props as $prop) {
126  switch ($prop) {
127  case 'urlPublished':
128  $values[$prop] = $dispatcher->url(
129  $request,
130  ROUTE_PAGE,
131  $context->getPath(),
132  'article',
133  'view',
134  $submission->getBestId()
135  );
136  break;
137  }
138  }
139  }
140 
151  public function getInSections($issueId, $contextId) {
152  import('lib.pkp.classes.submission.PKPSubmission'); // STATUS_...
153  $submissions = $this->getMany([
154  'contextId' => $contextId,
155  'issueIds' => $issueId,
156  'status' => [STATUS_PUBLISHED, STATUS_SCHEDULED],
157  'orderBy' => 'seq',
158  'orderDirection' => 'ASC',
159  ]);
160  $bySections = [];
161 
162  foreach ($submissions as $submission) {
163  $sectionId = $submission->getCurrentPublication()->getData('sectionId');
164  if (empty($bySections[$sectionId])) {
165  $section = \Application::get()->getSectionDao()->getById($sectionId);
166  $bySections[$sectionId] = [
167  'articles' => [],
168  'title' => $section->getData('hideTitle') ? '' : $section->getLocalizedData('title'),
169  'abstractsNotRequired' => $section->getData('abstractsNotRequired'),
170  'hideAuthor' => $section->getData('hideAuthor'),
171  ];
172  }
173  $bySections[$sectionId]['articles'][] = $submission;
174  }
175 
176  return $bySections;
177  }
178 }
APP\Services\SubmissionService\modifyAPISubmissionsParams
modifyAPISubmissionsParams($hookName, $args)
Definition: SubmissionService.inc.php:42
APP\Services\SubmissionService\modifySubmissionListQueryObject
modifySubmissionListQueryObject($hookName, $args)
Definition: SubmissionService.inc.php:97
PKP\Services\PKPSubmissionService
Definition: PKPSubmissionService.inc.php:32
APP\Services
Definition: ContextService.inc.php:15
PKP\Services\PKPSubmissionService\getMany
getMany($args=[])
Definition: PKPSubmissionService.inc.php:91
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
APP\Services\SubmissionService\getInSections
getInSections($issueId, $contextId)
Definition: SubmissionService.inc.php:151
APP\Services\SubmissionService
Definition: SubmissionService.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
APP\Services\SubmissionService\__construct
__construct()
Definition: SubmissionService.inc.php:24
APP\Services\SubmissionService\modifyPropertyValues
modifyPropertyValues($hookName, $args)
Definition: SubmissionService.inc.php:117
APP\Services\SubmissionService\modifySubmissionQueryBuilder
modifySubmissionQueryBuilder($hookName, $args)
Definition: SubmissionService.inc.php:73