Open Monograph Press  3.3.0
ManageSubmissionFilesForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 import('lib.pkp.classes.submission.SubmissionFile');
18 
21  var $_submissionId;
22 
28  function __construct($submissionId, $template) {
29  parent::__construct($template);
30  $this->_submissionId = (int)$submissionId;
31 
32  $this->addCheck(new FormValidatorPost($this));
33  $this->addCheck(new FormValidatorCSRF($this));
34  }
35 
36 
37  //
38  // Getters / Setters
39  //
44  function getSubmissionId() {
45  return $this->_submissionId;
46  }
47 
48  //
49  // Overridden template methods
50  //
54  function initData() {
55  $this->setData('submissionId', $this->_submissionId);
56  }
57 
62  function readInputData() {
63  $this->readUserVars(array('selectedFiles'));
64  }
65 
72  function execute($stageSubmissionFiles, $fileStage = null) {
73  $selectedFiles = (array)$this->getData('selectedFiles');
74  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
75  $submissionFiles = $submissionFileDao->getLatestRevisions($this->getSubmissionId());
76 
77  foreach ($submissionFiles as $submissionFile) {
78  // Get the viewable flag value.
79  $isViewable = in_array(
80  $submissionFile->getFileId(),
81  $selectedFiles
82  );
83 
84  // If this is a submission file that's already in this listing...
85  if ($this->fileExistsInStage($submissionFile, $stageSubmissionFiles, $fileStage)) {
86  // ...update the "viewable" flag accordingly.
87  if ($isViewable != $submissionFile->getViewable()) {
88  $submissionFile->setViewable($isViewable);
89  $submissionFileDao->updateObject($submissionFile);
90  }
91  } elseif ($isViewable) {
92  // Import a file from a different workflow area
93  $request = Application::get()->getRequest();
94  $context = $request->getContext();
95  $submissionFile = $this->importFile($context, $submissionFile, $fileStage);
96  }
97  }
98  }
99 
106  protected function fileExistsInStage($submissionFile, $stageSubmissionFiles, $fileStage) {
107  if (!isset($stageSubmissionFiles[$submissionFile->getFileId()])) return false;
108  foreach ($stageSubmissionFiles[$submissionFile->getFileId()] as $stageFile) {
109  if ($stageFile->getFileStage() == $submissionFile->getFileStage() && $stageFile->getFileStage() == $fileStage) return true;
110  }
111  return false;
112  }
113 
121  protected function importFile($context, $submissionFile, $fileStage) {
122  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
123  import('lib.pkp.classes.file.SubmissionFileManager');
124  $submissionFileManager = new SubmissionFileManager($context->getId(), $submissionFile->getSubmissionId());
125  // Split the file into file id and file revision.
126  $fileId = $submissionFile->getFileId();
127  $revision = $submissionFile->getRevision();
128  list($newFileId, $newRevision) = $submissionFileManager->copyFileToFileStage($fileId, $revision, $fileStage, null, true);
129  return $submissionFileDao->getRevision($newFileId, $newRevision);
130  }
131 }
132 
133 
ManageSubmissionFilesForm\importFile
importFile($context, $submissionFile, $fileStage)
Definition: ManageSubmissionFilesForm.inc.php:124
SubmissionFileManager
Helper class for database-backed submission file management tasks.
Definition: SubmissionFileManager.inc.php:30
ManageSubmissionFilesForm\execute
execute($stageSubmissionFiles, $fileStage=null)
Definition: ManageSubmissionFilesForm.inc.php:75
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
ManageSubmissionFilesForm\$_submissionId
$_submissionId
Definition: ManageSubmissionFilesForm.inc.php:24
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
ManageSubmissionFilesForm\readInputData
readInputData()
Definition: ManageSubmissionFilesForm.inc.php:65
ManageSubmissionFilesForm\__construct
__construct($submissionId, $template)
Definition: ManageSubmissionFilesForm.inc.php:31
ManageSubmissionFilesForm\getSubmissionId
getSubmissionId()
Definition: ManageSubmissionFilesForm.inc.php:47
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
ManageSubmissionFilesForm\initData
initData()
Definition: ManageSubmissionFilesForm.inc.php:57
ManageSubmissionFilesForm
Form for add or removing files from a review.
Definition: ManageSubmissionFilesForm.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
ManageSubmissionFilesForm\fileExistsInStage
fileExistsInStage($submissionFile, $stageSubmissionFiles, $fileStage)
Definition: ManageSubmissionFilesForm.inc.php:109