/** * Save the metadata of a submission file * @param $args array * @param $request PKPRequest * @return string Serialized JSON object */ function saveMetadata($args, &$request) { $fileId = $request->getUserVar('fileId'); $submissionFileDao =& DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */ $monographFile =& $submissionFileDao->getLatestRevision($fileId); $genreDao =& DAORegistry::getDAO('GenreDAO'); $genre = $genreDao->getById($monographFile->getGenreId()); $monographId = $monographFile->getMonographId(); switch ($genre->getCategory()) { // FIXME: Need a way to determine artwork file type from user-specified artwork file types case GENRE_CATEGORY_ARTWORK: import('controllers.grid.files.form.SubmissionFilesArtworkMetadataForm'); $metadataForm = new SubmissionFilesArtworkMetadataForm($monographFile, WORKFLOW_STAGE_ID_EDITING); break; default: import('controllers.grid.files.form.SubmissionFilesMetadataForm'); $metadataForm = new SubmissionFilesMetadataForm($monographFile, WORKFLOW_STAGE_ID_EDITING); break; } $metadataForm->readInputData(); if ($metadataForm->validate()) { $metadataForm->execute($args, $request); $router =& $request->getRouter(); $additionalAttributes = array('isEditing' => true, 'finishingUpUrl' => $router->url($request, null, null, 'finishFileSubmission', null, array('gridId' => $this->getId(), 'fileId' => $fileId, 'monographId' => $monographId))); $json = new JSON(true, '', false, $fileId, $additionalAttributes); } else { $json = new JSON(false, Locale::translate('submission.submit.fileNameRequired')); } return $json->getString(); }