Open Preprint 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 'sectionIds':
50  if (is_string($value) && strpos($value, ',') > -1) {
51  $value = explode(',', $value);
52  } elseif (!is_array($value)) {
53  $value = array($value);
54  }
55  $returnParams[$param] = array_map('intval', $value);
56  }
57  }
58  }
59 
72  public function modifySubmissionQueryBuilder($hookName, $args) {
73  $submissionQB =& $args[0];
74  $requestArgs = $args[1];
75 
76  if (!empty($requestArgs['sectionIds'])) {
77  $submissionQB->filterBySections($requestArgs['sectionIds']);
78  }
79  }
80 
92  public function modifySubmissionListQueryObject($hookName, $args) {
93  $queryObject =& $args[0];
94  $queryBuilder = $args[1];
95 
96  $queryObject = $queryBuilder->appGet($queryObject);
97  }
98 
112  public function modifyPropertyValues($hookName, $args) {
113  $values =& $args[0];
114  $submission = $args[1];
115  $props = $args[2];
116  $request = $args[3]['request'];
117  $context = $request->getContext();
118  $dispatcher = $request->getDispatcher();
119 
120  foreach ($props as $prop) {
121  switch ($prop) {
122  case 'urlPublished':
123  $values[$prop] = $dispatcher->url(
124  $request,
125  ROUTE_PAGE,
126  $context->getPath(),
127  'preprint',
128  'view',
129  $submission->getBestId()
130  );
131  break;
132  }
133  }
134  }
135 
145  public function getInSections($contextId) {
146  import('lib.pkp.classes.submission.PKPSubmission'); // STATUS_...
147  $submissions = $this->getMany([
148  'contextId' => $contextId,
149  'status' => [STATUS_PUBLISHED, STATUS_SCHEDULED],
150  'orderBy' => 'seq',
151  'orderDirection' => 'ASC',
152  ]);
153  $bySections = [];
154  foreach ($submissions as $submission) {
155  $sectionId = $submission->getCurrentPublication()->getData('sectionId');
156  if (empty($bySections[$sectionId])) {
157  $section = \Application::get()->getSectionDao()->getById($sectionId);
158  $bySections[$sectionId] = [
159  'articles' => [],
160  'title' => $section->getData('hideTitle') ? '' : $section->getLocalizedData('title'),
161  'abstractsNotRequired' => $section->getData('abstractsNotRequired'),
162  'hideAuthor' => $section->getData('hideAuthor'),
163  ];
164  }
165  $bySections[$sectionId]['articles'][] = $submission;
166  }
167 
168  return $bySections;
169  }
170 
174  public function add($submission, $request) {
175  $submission->setData('sectionId', $submission->getSectionId());
176  return parent::add($submission, $request);
177  }
178 }
APP\Services\SubmissionService\add
add($submission, $request)
Definition: SubmissionService.inc.php:174
APP\Services\SubmissionService\modifyAPISubmissionsParams
modifyAPISubmissionsParams($hookName, $args)
Definition: SubmissionService.inc.php:42
APP\Services\SubmissionService\modifySubmissionListQueryObject
modifySubmissionListQueryObject($hookName, $args)
Definition: SubmissionService.inc.php:92
APP\Services\SubmissionService\getInSections
getInSections($contextId)
Definition: SubmissionService.inc.php:145
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
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:112
APP\Services\SubmissionService\modifySubmissionQueryBuilder
modifySubmissionQueryBuilder($hookName, $args)
Definition: SubmissionService.inc.php:72