Open Monograph Press  3.3.0
PublishHandler.inc.php
1 <?php
2 
16 // Import the base Handler.
17 import('classes.handler.Handler');
18 
19 class PublishHandler extends Handler {
20 
22  public $submission;
23 
25  public $publication;
26 
30  function __construct() {
31  parent::__construct();
32  $this->addRoleAssignment(
33  [ROLE_ID_SUB_EDITOR, ROLE_ID_MANAGER, ROLE_ID_ASSISTANT],
34  ['publish']
35  );
36  }
37 
38 
39  //
40  // Overridden methods from Handler
41  //
45  function initialize($request) {
46  parent::initialize($request);
47  $this->submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
48  $this->publication = $this->getAuthorizedContextObject(ASSOC_TYPE_PUBLICATION);
49  $this->setupTemplate($request);
50  }
51 
55  function authorize($request, &$args, $roleAssignments) {
56  import('lib.pkp.classes.security.authorization.SubmissionAccessPolicy');
57  $this->addPolicy(new SubmissionAccessPolicy($request, $args, $roleAssignments));
58  import('lib.pkp.classes.security.authorization.PublicationAccessPolicy');
59  $this->addPolicy(new PublicationAccessPolicy($request, $args, $roleAssignments));
60  return parent::authorize($request, $args, $roleAssignments);
61  }
62 
63 
64  //
65  // Public handler methods
66  //
74  function publish($args, $request) {
75  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION, LOCALE_COMPONENT_APP_SUBMISSION, LOCALE_COMPONENT_PKP_EDITOR, LOCALE_COMPONENT_APP_EDITOR);
76  $templateMgr = TemplateManager::getManager($request);
77 
78  $submissionContext = $request->getContext();
79  if (!$submissionContext || $submissionContext->getId() !== $this->submission->getData('contextId')) {
80  $submissionContext = Services::get('context')->get($this->submission->getData('contextId'));
81  }
82  $primaryLocale = $submissionContext->getPrimaryLocale();
83  $allowedLocales = $submissionContext->getSupportedSubmissionLocales();
84  $errors = Services::get('publication')->validatePublish($this->publication, $this->submission, $allowedLocales, $primaryLocale);
85 
86  $publicationApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(), 'submissions/' . $this->submission->getId() . '/publications/' . $this->publication->getId() . '/publish');
87 
88  $publishForm = new APP\components\forms\publication\PublishForm($publicationApiUrl, $this->publication, $submissionContext, $errors);
89 
90  $settingsData = [
91  'components' => [
92  FORM_PUBLISH => $publishForm->getConfig(),
93  ],
94  ];
95 
96  $templateMgr->assign('publishData', $settingsData);
97 
98  return $templateMgr->fetchJson('controllers/modals/publish/publish.tpl');
99  }
100 }
101 
102 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
PublicationAccessPolicy
Class to control access to a publication.
Definition: PublicationAccessPolicy.inc.php:20
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PublishHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: PublishHandler.inc.php:61
PublishHandler\initialize
initialize($request)
Definition: PublishHandler.inc.php:51
PublishHandler\publish
publish($args, $request)
Definition: PublishHandler.inc.php:80
PublishHandler\__construct
__construct()
Definition: PublishHandler.inc.php:36
APP\components\forms\publication\PublishForm
Definition: PublishForm.inc.php:21
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PublishHandler\$publication
$publication
Definition: PublishHandler.inc.php:31
PKPHandler\setupTemplate
setupTemplate($request)
Definition: PKPHandler.inc.php:466
PublishHandler
A handler to load final publishing confirmation checks.
Definition: PublishHandler.inc.php:19
PublishHandler\$submission
$submission
Definition: PublishHandler.inc.php:25
SubmissionAccessPolicy
Base class to control (write) access to submissions and (read) access to submission details in OMP.
Definition: SubmissionAccessPolicy.inc.php:19
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
Handler
Base request handler application class.
Definition: Handler.inc.php:18
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49