/** * Delete an issue galley. * @param $args array ($issueId, $galleyId) */ function deleteIssueGalley($args, $request) { $issueId = isset($args[0]) ? (int) $args[0] : 0; $galleyId = isset($args[1]) ? (int) $args[1] : 0; $this->validate($issueId, true); $galleyDao =& DAORegistry::getDAO('IssueGalleyDAO'); $galley =& $galleyDao->getGalley($galleyId, $issueId); if (isset($galley)) { import('classes.file.IssueFileManager'); $issueFileManager = new IssueFileManager($issueId); if ($galley->getFileId()) { $issueFileManager->deleteFile($galley->getFileId()); } $galleyDao->deleteGalley($galley); } $request->redirect(null, null, 'issueGalleys', $issueId); }
/** * Save changes to the galley. * @param $request PKPRequest * @return int the galley ID */ function execute($request) { import('classes.file.IssueFileManager'); $issueFileManager = new IssueFileManager($this->_issue->getId()); $journal = $request->getJournal(); $user = $request->getUser(); $issueGalley = $this->_issueGalley; $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); // If a temporary file ID was specified (i.e. an upload occurred), get the file for later. $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO'); $temporaryFile = $temporaryFileDao->getTemporaryFile($this->getData('temporaryFileId'), $user->getId()); if ($issueGalley) { // Update an existing galley if ($temporaryFile) { // Galley has a file, delete it before uploading new one if ($issueGalley->getFileId()) { $issueFileManager->deleteFile($issueGalley->getFileId()); } // Upload new file $issueFile = $issueFileManager->fromTemporaryFile($temporaryFile); $issueGalley->setFileId($issueFile->getFileId()); } $issueGalley->setLabel($this->getData('label')); $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId')); $issueGalley->setLocale($this->getData('galleyLocale')); // Update galley in the db $issueGalleyDao->updateObject($issueGalley); } else { // Create a new galley $issueGalleyFile = $issueFileManager->fromTemporaryFile($temporaryFile); $issueGalley = $issueGalleyDao->newDataObject(); $issueGalley->setIssueId($this->_issue->getId()); $issueGalley->setFileId($issueGalleyFile->getId()); if ($this->getData('label') == null) { // Generate initial label based on file type if (isset($fileType)) { if (strstr($fileType, 'pdf')) { $issueGalley->setLabel('PDF'); } else { if (strstr($fileType, 'postscript')) { $issueGalley->setLabel('PostScript'); } else { if (strstr($fileType, 'xml')) { $issueGalley->setLabel('XML'); } } } } if ($issueGalley->getLabel() == null) { $issueGalley->setLabel(__('common.untitled')); } } else { $issueGalley->setLabel($this->getData('label')); } $issueGalley->setLocale($this->getData('galleyLocale')); $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId')); // Insert new galley into the db $issueGalleyDao->insertObject($issueGalley); $this->_issueGalley = $issueGalley; } return $this->_issueGalley->getId(); }
/** * Save changes to the galley. * @return int the galley ID */ function execute($fileName = null) { import('classes.file.IssueFileManager'); $issueFileManager = new IssueFileManager($this->getIssueId()); $galleyDao =& DAORegistry::getDAO('IssueGalleyDAO'); $fileName = isset($fileName) ? $fileName : 'galleyFile'; $journal =& Request::getJournal(); $galley =& $this->getGalley(); // Update an existing galley if ($galley) { if ($issueFileManager->uploadedFileExists($fileName)) { // Galley has a file, delete it before uploading new one if ($galley->getFileId()) { $issueFileManager->deleteFile($galley->getFileId()); } // Upload new file $fileId = $issueFileManager->uploadPublicFile($fileName); $galley->setFileId($fileId); } $galley->setLabel($this->getData('label')); if ($journal->getSetting('enablePublicGalleyId')) { $galley->setStoredPubId('publisher-id', $this->getData('publicGalleyId')); } $galley->setLocale($this->getData('galleyLocale')); // Update galley in the db $galleyDao->updateGalley($galley); } else { // Create a new galley // Upload galley file if ($issueFileManager->uploadedFileExists($fileName)) { $fileType = $issueFileManager->getUploadedFileType($fileName); $fileId = $issueFileManager->uploadPublicFile($fileName); } else { // No galley file uploaded $fileId = 0; } $galley = new IssueGalley(); $galley->setIssueId($this->getIssueId()); $galley->setFileId($fileId); if ($this->getData('label') == null) { // Generate initial label based on file type $enablePublicGalleyId = $journal->getSetting('enablePublicGalleyId'); if (isset($fileType)) { if (strstr($fileType, 'pdf')) { $galley->setLabel('PDF'); if ($enablePublicGalleyId) { $galley->setStoredPubId('publisher-id', 'pdf'); } } else { if (strstr($fileType, 'postscript')) { $galley->setLabel('PostScript'); if ($enablePublicGalleyId) { $galley->setStoredPubId('publisher-id', 'ps'); } } else { if (strstr($fileType, 'xml')) { $galley->setLabel('XML'); if ($enablePublicGalleyId) { $galley->setStoredPubId('publisher-id', 'xml'); } } } } } if ($galley->getLabel() == null) { $galley->setLabel(__('common.untitled')); } } else { $galley->setLabel($this->getData('label')); } $galley->setLocale($this->getData('galleyLocale')); if ($enablePublicGalleyId) { // Ensure the assigned public id doesn't already exist $journalDao =& DAORegistry::getDAO('JournalDAO'); /* @var $journalDao JournalDAO */ $publicGalleyId = $galley->getPubId('publisher-id'); $suffix = ''; $i = 1; while ($journalDao->anyPubIdExists($journal->getId(), 'publisher-id', $publicGalleyId . $suffix)) { $suffix = '_' . $i++; } $galley->setStoredPubId('publisher-id', $publicGalleyId . $suffix); } // Insert new galley into the db $galleyDao->insertGalley($galley); $this->setGalley($galley); } return $this->getGalleyId(); }