Open Monograph Press  3.3.0
ManageFileApiHandler.inc.php
1 <?php
2 
16 // Import the base handler.
17 import('lib.pkp.controllers.api.file.PKPManageFileApiHandler');
18 import('lib.pkp.classes.core.JSONMessage');
19 
21 
25  function __construct() {
26  parent::__construct();
27  $this->addRoleAssignment(
28  array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT, ROLE_ID_REVIEWER, ROLE_ID_AUTHOR),
29  array('identifiers', 'updateIdentifiers', 'clearPubId',)
30  );
31  }
32 
36  function editMetadata($args, $request) {
37  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
38  if ($submissionFile->getFileStage() == SUBMISSION_FILE_PROOF) {
39  $publisherIdEnabled = in_array('file', (array) $request->getContext()->getData('enablePublisherId'));
40  $pubIdPlugins = PluginRegistry::getPlugins('pubIds');
41  $pubIdEnabled = false;
42  foreach ($pubIdPlugins as $pubIdPlugin) {
43  if ($pubIdPlugin->isObjectTypeEnabled('SubmissionFile', $request->getContext()->getId())) {
44  $pubIdEnabled = true;
45  break;
46  }
47  }
48  $templateMgr = TemplateManager::getManager($request);
49  $templateMgr->assign('showIdentifierTab', $publisherIdEnabled || $pubIdEnabled);
50  }
51  return parent::editMetadata($args, $request);
52  }
53 
60  function identifiers($args, $request) {
61  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
62  $stageId = $request->getUserVar('stageId');
63  import('controllers.tab.pubIds.form.PublicIdentifiersForm');
64  $form = new PublicIdentifiersForm($submissionFile, $stageId);
65  $form->initData();
66  return new JSONMessage(true, $form->fetch($request));
67  }
68 
75  function updateIdentifiers($args, $request) {
76  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
77  $stageId = $request->getUserVar('stageId');
78  import('lib.pkp.controllers.tab.pubIds.form.PKPPublicIdentifiersForm');
79  $form = new PKPPublicIdentifiersForm($submissionFile, $stageId);
80  $form->readInputData();
81  if ($form->validate()) {
82  $form->execute();
83  return DAO::getDataChangedEvent($submissionFile->getId());
84  } else {
85  return new JSONMessage(true, $form->fetch($request));
86  }
87  }
88 
95  function clearPubId($args, $request) {
96  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
97  $stageId = $request->getUserVar('stageId');
98  import('lib.pkp.controllers.tab.pubIds.form.PKPPublicIdentifiersForm');
99  $form = new PKPPublicIdentifiersForm($submissionFile, $stageId);
100  $form->clearPubId($request->getUserVar('pubIdPlugIn'));
101  return new JSONMessage(true);
102  }
103 
104 
105  //
106  // Subclassed methods
107  //
108 
112  function removeFileIndex($submission, $submissionFile) {
113  // update the submission's search index if this was a proof file
114  if ($submissionFile->getFileStage() == SUBMISSION_FILE_PROOF) {
115  import('lib.pkp.classes.search.SubmissionSearch');
116  $monographSearchIndex = Application::getSubmissionSearchIndex();
117  $monographSearchIndex->deleteTextIndex($submission->getId(), SUBMISSION_SEARCH_GALLEY_FILE, $submissionFile->getFileId());
118  $monographSearchIndex->submissionChangesFinished();
119  }
120  }
121 
122 
130  function logDeletionEvent($request, $submission, $submissionFile, $user) {
131  // log the deletion event.
132  import('lib.pkp.classes.log.SubmissionFileLog');
133  import('lib.pkp.classes.log.SubmissionFileEventLogEntry'); // constants
134 
135  if ($submissionFile->getRevision() > 1) {
136  SubmissionFileLog::logEvent($request, $submissionFile, SUBMISSION_LOG_FILE_REVISION_DELETE, 'submission.event.revisionDeleted', array('fileStage' => $submissionFile->getFileStage(), 'sourceFileId' => $submissionFile->getSourceFileId(), 'fileId' => $submissionFile->getFileId(), 'fileRevision' => $submissionFile->getRevision(), 'originalFileName' => $submissionFile->getOriginalFileName(), 'submissionId' => $submissionFile->getSubmissionId(), 'username' => $user->getUsername()));
137  } else {
138  SubmissionFileLog::logEvent($request, $submissionFile, SUBMISSION_LOG_FILE_DELETE, 'submission.event.fileDeleted', array('fileStage' => $submissionFile->getFileStage(), 'sourceFileId' => $submissionFile->getSourceFileId(), 'fileId' => $submissionFile->getFileId(), 'fileRevision' => $submissionFile->getRevision(), 'originalFileName' => $submissionFile->getOriginalFileName(), 'submissionId' => $submissionFile->getSubmissionId(), 'username' => $user->getUsername()));
139  }
140 
141  if ($submissionFile->getRevision() == 1 && $submissionFile->getSourceFileId() == null) {
142  import('lib.pkp.classes.log.SubmissionLog');
143  import('classes.log.SubmissionEventLogEntry'); // constants
144  SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_LAST_REVISION_DELETED, 'submission.event.lastRevisionDeleted', array('title' => $submissionFile->getOriginalFileName(), 'submissionId' => $submissionFile->getSubmissionId(), 'username' => $user->getUsername()));
145  }
146 
147  }
148 
153  protected function getUpdateNotifications() {
154  $updateNotifications = parent::getUpdateNotifications();
155  $updateNotifications[] = NOTIFICATION_TYPE_PENDING_INTERNAL_REVISIONS;
156  return $updateNotifications;
157  }
158 }
159 
160 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
ManageFileApiHandler\updateIdentifiers
updateIdentifiers($args, $request)
Definition: ManageFileApiHandler.inc.php:75
ManageFileApiHandler\clearPubId
clearPubId($args, $request)
Definition: ManageFileApiHandler.inc.php:95
PluginRegistry\getPlugins
static & getPlugins($category=null)
Definition: PluginRegistry.inc.php:30
PublicIdentifiersForm
Displays a pub ids form.
Definition: PublicIdentifiersForm.inc.php:18
SubmissionLog\logEvent
static logEvent($request, $submission, $eventType, $messageKey, $params=array())
Definition: SubmissionLog.inc.php:34
PKPManageFileApiHandler
Class defining an AJAX API for file manipulation.
Definition: PKPManageFileApiHandler.inc.php:20
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
ManageFileApiHandler\identifiers
identifiers($args, $request)
Definition: ManageFileApiHandler.inc.php:60
ManageFileApiHandler\logDeletionEvent
logDeletionEvent($request, $submission, $submissionFile, $user)
Definition: ManageFileApiHandler.inc.php:130
ManageFileApiHandler
Class defining an AJAX API for file manipulation.
Definition: ManageFileApiHandler.inc.php:20
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
ManageFileApiHandler\removeFileIndex
removeFileIndex($submission, $submissionFile)
Definition: ManageFileApiHandler.inc.php:112
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PKPPublicIdentifiersForm
Displays a pub ids form.
Definition: PKPPublicIdentifiersForm.inc.php:19
SubmissionFileLog\logEvent
static logEvent($request, $submissionFile, $eventType, $messageKey, $params=array())
Definition: SubmissionFileLog.inc.php:28
Application\getSubmissionSearchIndex
static getSubmissionSearchIndex()
Definition: Application.inc.php:167
ManageFileApiHandler\editMetadata
editMetadata($args, $request)
Definition: ManageFileApiHandler.inc.php:36
ManageFileApiHandler\getUpdateNotifications
getUpdateNotifications()
Definition: ManageFileApiHandler.inc.php:153
ManageFileApiHandler\__construct
__construct()
Definition: ManageFileApiHandler.inc.php:25