Open Journal Systems  3.3.0
SubmissionFilesUploadForm.inc.php
1 <?php
2 
17 import('lib.pkp.controllers.wizard.fileUpload.form.PKPSubmissionFilesUploadBaseForm');
18 
20 
22  var $_uploaderRoles;
23 
24 
37  function __construct($request, $submissionId, $stageId, $uploaderRoles, $fileStage,
38  $revisionOnly = false, $reviewRound = null, $revisedFileId = null, $assocType = null, $assocId = null) {
39 
40  // Initialize class.
41  assert(is_null($uploaderRoles) || (is_array($uploaderRoles) && count($uploaderRoles) >= 1));
42  $this->_uploaderRoles = $uploaderRoles;
43 
44  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER);
45 
46  parent::__construct(
47  $request, 'controllers/wizard/fileUpload/form/fileUploadForm.tpl',
48  $submissionId, $stageId, $fileStage, $revisionOnly, $reviewRound, $revisedFileId, $assocType, $assocId
49  );
50 
51  // Disable the genre selector for review file attachments
52  if ($fileStage == SUBMISSION_FILE_REVIEW_ATTACHMENT) {
53  $this->setData('isReviewAttachment', true);
54  }
55  }
56 
57 
58  //
59  // Getters and Setters
60  //
65  function getUploaderRoles() {
66  assert(!is_null($this->_uploaderRoles));
67  return $this->_uploaderRoles;
68  }
69 
70 
71  //
72  // Implement template methods from Form
73  //
77  function readInputData() {
78  $this->readUserVars(array('genreId'));
79  return parent::readInputData();
80  }
81 
85  function validate($callHooks = true) {
86  // Is this a revision?
87  $revisedFileId = $this->getRevisedFileId();
88  if ($this->getData('revisionOnly')) {
89  assert($revisedFileId > 0);
90  }
91 
92  // Retrieve the request context.
93  $request = Application::get()->getRequest();
94  $router = $request->getRouter();
95  $context = $router->getContext($request);
96  if (
97  $this->getData('fileStage') != SUBMISSION_FILE_REVIEW_ATTACHMENT and
98  !$revisedFileId
99  ) {
100  // Add an additional check for the genre to the form.
101  $this->addCheck(new FormValidatorCustom(
102  $this, 'genreId', FORM_VALIDATOR_REQUIRED_VALUE,
103  'submission.upload.noGenre',
104  function($genreId) use ($context) {
105  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
106  return is_a($genreDao->getById($genreId, $context->getId()), 'Genre');
107  }
108  ));
109  }
110 
111  return parent::validate($callHooks);
112  }
113 
117  function fetch($request, $template = null, $display = false) {
118  // Retrieve available submission file genres.
119  $genreList = $this->_retrieveGenreList($request);
120  $this->setData('submissionFileGenres', $genreList);
121 
122  return parent::fetch($request, $template, $display);
123  }
124 
130  function execute(...$functionParams) {
131  // Identify the file genre and category.
132  $revisedFileId = $this->getRevisedFileId();
133  if ($revisedFileId) {
134  // The file genre and category will be copied over from the revised file.
135  $fileGenre = null;
136  } else {
137  // This is a new file so we need the file genre and category from the form.
138  $fileGenre = $this->getData('genreId') ? (int)$this->getData('genreId') : null;
139  }
140 
141  // Identify the uploading user.
142  $request = Application::get()->getRequest();
143  $user = $request->getUser();
144  assert(is_a($user, 'User'));
145 
146  $assocType = $this->getData('assocType') ? (int) $this->getData('assocType') : null;
147  $assocId = $this->getData('assocId') ? (int) $this->getData('assocId') : null;
148  $fileStage = $this->getData('fileStage');
149 
150  // Upload the file.
151  import('lib.pkp.classes.file.SubmissionFileManager');
152  $submissionFileManager = new SubmissionFileManager(
153  $request->getContext()->getId(),
154  $this->getData('submissionId')
155  );
156  $submissionFile = $submissionFileManager->uploadSubmissionFile(
157  'uploadedFile', $fileStage, $user->getId(),
158  $revisedFileId, $fileGenre, $assocType, $assocId
159  );
160  if (!$submissionFile) return null;
161 
162  // Log the event.
163  import('lib.pkp.classes.log.SubmissionFileLog');
164  import('lib.pkp.classes.log.SubmissionFileEventLogEntry'); // constants
166  $request,
167  $submissionFile,
168  $revisedFileId?SUBMISSION_LOG_FILE_REVISION_UPLOAD:SUBMISSION_LOG_FILE_UPLOAD, // assocId
169  $revisedFileId?'submission.event.revisionUploaded':'submission.event.fileUploaded',
170  array(
171  'fileStage' => $fileStage,
172  'revisedFileId' => $revisedFileId,
173  'fileId' => $submissionFile->getFileId(),
174  'fileRevision' => $submissionFile->getRevision(),
175  'originalFileName' => $submissionFile->getOriginalFileName(),
176  'submissionId' => $this->getData('submissionId'),
177  'username' => $user->getUsername()
178  )
179  );
180 
181  $hookResult = parent::execute($submissionFile, ...$functionParams);
182  if ($hookResult) {
183  return $hookResult;
184  }
185 
186  return $submissionFile;
187  }
188 
189 
190  //
191  // Private helper methods
192  //
198  function _retrieveGenreList($request) {
199  $context = $request->getContext();
200  $genreDao = DAORegistry::getDAO('GenreDAO'); /* @var $genreDao GenreDAO */
201  $dependentFilesOnly = $request->getUserVar('dependentFilesOnly') ? true : false;
202  $genres = $genreDao->getByDependenceAndContextId($dependentFilesOnly, $context->getId());
203 
204  // Transform the genres into an array and
205  // assign them to the form.
206  $genreList = array();
207  while ($genre = $genres->next()) {
208  $genreList[$genre->getId()] = $genre->getLocalizedName();
209  }
210  return $genreList;
211  }
212 }
213 
214 
SubmissionFilesUploadForm\validate
validate($callHooks=true)
Definition: SubmissionFilesUploadForm.inc.php:88
SubmissionFileManager
Helper class for database-backed submission file management tasks.
Definition: SubmissionFileManager.inc.php:30
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PKPSubmissionFilesUploadBaseForm
Form for adding/editing a submission file.
Definition: PKPSubmissionFilesUploadBaseForm.inc.php:20
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubmissionFilesUploadForm\fetch
fetch($request, $template=null, $display=false)
Definition: SubmissionFilesUploadForm.inc.php:120
SubmissionFilesUploadForm\$_uploaderRoles
$_uploaderRoles
Definition: SubmissionFilesUploadForm.inc.php:25
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
SubmissionFilesUploadForm\getUploaderRoles
getUploaderRoles()
Definition: SubmissionFilesUploadForm.inc.php:68
SubmissionFilesUploadForm\execute
execute(... $functionParams)
Definition: SubmissionFilesUploadForm.inc.php:133
SubmissionFilesUploadForm\__construct
__construct($request, $submissionId, $stageId, $uploaderRoles, $fileStage, $revisionOnly=false, $reviewRound=null, $revisedFileId=null, $assocType=null, $assocId=null)
Definition: SubmissionFilesUploadForm.inc.php:40
PKPSubmissionFilesUploadBaseForm\getRevisedFileId
getRevisedFileId()
Definition: PKPSubmissionFilesUploadBaseForm.inc.php:117
SubmissionFilesUploadForm
Form for adding/editing a submission file.
Definition: SubmissionFilesUploadForm.inc.php:19
SubmissionFilesUploadForm\readInputData
readInputData()
Definition: SubmissionFilesUploadForm.inc.php:80
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
SubmissionFileLog\logEvent
static logEvent($request, $submissionFile, $eventType, $messageKey, $params=array())
Definition: SubmissionFileLog.inc.php:28
SubmissionFilesUploadForm\_retrieveGenreList
_retrieveGenreList($request)
Definition: SubmissionFilesUploadForm.inc.php:201
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FormValidatorCustom
Form validation check with a custom user function performing the validation check.
Definition: FormValidatorCustom.inc.php:18