21 use \PKP\Services\PKPPublicationService;
54 $publication = $args[1];
56 $dependencies = $args[3];
57 $request = $dependencies[
'request'];
58 $dispatcher = $request->getDispatcher();
61 $submission = !empty($args[
'submission'])
63 : $args[
'submission'] =
Services::get(
'submission')->get($publication->getData(
'submissionId'));
65 $submissionContext = !empty($dependencies[
'context'])
66 ? $dependencies[
'context']
67 : $dependencies[
'context'] =
Services::get(
'context')->get($submission->getData(
'contextId'));
69 foreach ($props as $prop) {
72 $values[$prop] = array_map(
73 function($galley) use ($dependencies) {
74 return Services::get(
'galley')->getSummaryProperties($galley, $dependencies);
76 $publication->getData(
'galleys')
80 $values[$prop] = $dispatcher->url(
83 $submissionContext->getData(
'urlPath'),
86 [$submission->getBestId(),
'version', $publication->getId()]
109 $allowedLocales = $args[3];
110 $primaryLocale = $args[4];
114 if (isset($props[
'sectionId'])) {
115 $section =
Application::get()->getSectionDAO()->getById($props[
'sectionId']);
117 $errors[
'sectionId'] = [__(
'publication.invalidSection')];
122 if (!$section && isset($props[
'id'])) {
123 $publication =
Services::get(
'publication')->get($props[
'id']);
125 $section = $sectionDao->getById($publication->getData(
'sectionId'));
131 if ($action === VALIDATE_ACTION_ADD && !$section->getData(
'abstractsNotRequired') && empty($props[
'abstract'])) {
132 $errors[
'abstract'][$primaryLocale] = [__(
'author.submit.form.abstractRequired')];
135 if (isset($props[
'abstract']) && empty($errors[
'abstract'])) {
138 if (!$section->getData(
'abstractsNotRequired')) {
139 if (empty($props[
'abstract'][$primaryLocale])) {
140 if (!isset($errors[
'abstract'])) {
141 $errors[
'abstract'] = [];
144 $errors[
'abstract'][$primaryLocale] = [__(
'author.submit.form.abstractRequired')];
149 foreach ($allowedLocales as $localeKey) {
150 if (empty($props[
'abstract'][$localeKey])) {
153 $wordCount = count(preg_split(
'/\s+/', trim(str_replace(
' ',
' ', strip_tags($props[
'abstract'][$localeKey])))));
154 $wordCountLimit = $section->getData(
'wordCount');
155 if ($wordCountLimit && $wordCount > $wordCountLimit) {
156 if (!isset($errors[
'abstract'])) {
157 $errors[
'abstract'] = [];
159 $errors[
'abstract'][$localeKey] = [__(
'publication.wordCountLong', [
'limit' => $wordCountLimit,
'count' => $wordCount])];
181 $submission = $args[2];
183 $errors[
'authorCheck'] = __(
'author.submit.authorsCanNotPublish');
197 $publication = $args[0];
201 $context = $request->getContext();
203 $doiPubIdPlugin = $pubIdPlugins[
'doipubidplugin'];
204 if ($doiPubIdPlugin && $doiPubIdPlugin->getSetting($context->getId(),
'enablePublicationDoiAutoAssign')){
205 $publication->setData(
'pub-id::doi', $doiPubIdPlugin->getPubId($publication));
220 $newPublication = $args[0];
221 $oldPublication = $args[1];
225 $galleys = $oldPublication->getData(
'galleys');
226 if (!empty($galleys)) {
227 foreach ($galleys as $galley) {
228 $newGalley = clone $galley;
229 $newGalley->setData(
'id',
null);
230 $newGalley->setData(
'publicationId', $newPublication->getId());
235 $newPublication->setData(
'galleys', $this->
get($newPublication->getId())->getData(
'galleys'));
238 $context = $request->getContext();
240 $doiPubIdPlugin = $pubIdPlugins[
'doipubidplugin'];
241 if ($doiPubIdPlugin){
242 $pattern = $doiPubIdPlugin->getSetting($context->getId(),
'doiPublicationSuffixPattern');
243 if (strpos($pattern,
'%b')) {
244 $newPublication->setData(
'pub-id::doi', $doiPubIdPlugin->versionPubId($newPublication));
260 $newPublication = $args[0];
261 $oldPublication = $args[1];
264 $datePublished = $oldPublication->getData(
'datePublished');
266 $newPublication->setData(
'status', STATUS_SCHEDULED);
279 $publication = $args[0];
281 $galleysIterator =
Services::get(
'galley')->getMany([
'publicationIds' => $publication->getId()]);
282 foreach ($galleysIterator as $galley) {
294 public function relate($publication, $params) {
295 $publication->setData(
'relationStatus', $params[
'relationStatus']);
296 $publication->setData(
'vorDoi', $params[
'vorDoi']);
314 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submissionId, ROLE_ID_AUTHOR);
315 while ($assignment = $submitterAssignments->next()) {
316 if ($currentUser->getId() == $assignment->getUserId()) {
343 "value" => PUBLICATION_RELATION_NONE,
344 "label" => __(
'publication.relation.none')
347 "value" => PUBLICATION_RELATION_SUBMITTED,
348 "label" => __(
'publication.relation.submitted')
351 "value" => PUBLICATION_RELATION_PUBLISHED,
352 "label" => __(
'publication.relation.published')