Open Journal Systems  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 
39  function identifiers($args, $request) {
40  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
41  $stageId = $request->getUserVar('stageId');
42  import('controllers.tab.pubIds.form.PublicIdentifiersForm');
43  $form = new PublicIdentifiersForm($submissionFile, $stageId);
44  $form->initData();
45  return new JSONMessage(true, $form->fetch($request));
46  }
47 
54  function updateIdentifiers($args, $request) {
55  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
56  $stageId = $request->getUserVar('stageId');
57  import('controllers.tab.pubIds.form.PublicIdentifiersForm');
58  $form = new PublicIdentifiersForm($submissionFile, $stageId);
59  $form->readInputData();
60  if ($form->validate()) {
61  $form->execute();
62  return DAO::getDataChangedEvent($submissionFile->getId());
63  } else {
64  return new JSONMessage(true, $form->fetch($request));
65  }
66  }
67 
74  function clearPubId($args, $request) {
75  if (!$request->checkCSRF()) return new JSONMessage(false);
76 
77  $submissionFile = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION_FILE);
78  $stageId = $request->getUserVar('stageId');
79  import('controllers.tab.pubIds.form.PublicIdentifiersForm');
80  $form = new PublicIdentifiersForm($submissionFile, $stageId);
81  $form->clearPubId($request->getUserVar('pubIdPlugIn'));
82  return new JSONMessage(true);
83  }
84 
85  //
86  // Subclassed methods
87  //
91  function removeFileIndex($submission, $submissionFile) {
92  // update the submission's search index if this was a proof file
93  if ($submissionFile->getFileStage() == SUBMISSION_FILE_PROOF) {
94  import('lib.pkp.classes.search.SubmissionSearch');
95  $articleSearchIndex = Application::getSubmissionSearchIndex();
96  $articleSearchIndex->deleteTextIndex($submission->getId(), SUBMISSION_SEARCH_GALLEY_FILE, $submissionFile->getFileId());
97  }
98  }
99 
107  function logDeletionEvent($request, $submission, $submissionFile, $user) {
108  // log the deletion event.
109  import('lib.pkp.classes.log.SubmissionFileLog');
110  import('lib.pkp.classes.log.SubmissionFileEventLogEntry'); // constants
111 
112  if ($submissionFile->getRevision() > 1) {
113  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()));
114  } else {
115  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()));
116  }
117 
118  if ($submissionFile->getRevision() == 1 && $submissionFile->getSourceFileId() == null) {
119  import('lib.pkp.classes.log.SubmissionLog');
120  import('classes.log.SubmissionEventLogEntry'); // constants
121  SubmissionLog::logEvent($request, $submission, SUBMISSION_LOG_LAST_REVISION_DELETED, 'submission.event.lastRevisionDeleted', array('title' => $submissionFile->getOriginalFileName(), 'submissionId' => $submissionFile->getSubmissionId(), 'username' => $user->getUsername()));
122  }
123 
124  }
125 
129  function detachEntities($submissionFile, $submissionId, $stageId) {
130  parent::detachEntities($submissionFile, $submissionId, $stageId);
131 
132  switch ($submissionFile->getFileStage()) {
133  case SUBMISSION_FILE_PROOF:
134  $galleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $galleyDao ArticleGalleyDAO */
135  assert($submissionFile->getAssocType() == ASSOC_TYPE_REPRESENTATION);
136  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
137  $allRevisions = $submissionFileDao->getAllRevisionsByAssocId(ASSOC_TYPE_REPRESENTATION, $submissionFile->getAssocId());
138  $galley = $galleyDao->getById($submissionFile->getAssocId());
139  if ($galley) {
140  if (count($allRevisions) <= 1) {
141  $galley->_data['fileId'] = null; // Work around pkp/pkp-lib#5740
142  $galleyDao->updateObject($galley);
143  }
144  }
145  break;
146  }
147  }
148 }
149 
150 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
ManageFileApiHandler\updateIdentifiers
updateIdentifiers($args, $request)
Definition: ManageFileApiHandler.inc.php:54
ManageFileApiHandler\clearPubId
clearPubId($args, $request)
Definition: ManageFileApiHandler.inc.php:74
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
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:39
ManageFileApiHandler\logDeletionEvent
logDeletionEvent($request, $submission, $submissionFile, $user)
Definition: ManageFileApiHandler.inc.php:107
ManageFileApiHandler
Class defining an AJAX API for file manipulation.
Definition: ManageFileApiHandler.inc.php:20
ManageFileApiHandler\detachEntities
detachEntities($submissionFile, $submissionId, $stageId)
Definition: ManageFileApiHandler.inc.php:129
ManageFileApiHandler\removeFileIndex
removeFileIndex($submission, $submissionFile)
Definition: ManageFileApiHandler.inc.php:91
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
SubmissionFileLog\logEvent
static logEvent($request, $submissionFile, $eventType, $messageKey, $params=array())
Definition: SubmissionFileLog.inc.php:28
Application\getSubmissionSearchIndex
static getSubmissionSearchIndex()
Definition: Application.inc.php:169
ManageFileApiHandler\__construct
__construct()
Definition: ManageFileApiHandler.inc.php:25