/** * 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(); }
/** * Internal function to return an IssueGalley object from a row. * @param $row array * @return IssueGalley */ function &_returnGalleyFromRow(&$row) { $galley = new IssueGalley(); $galley->setId($row['galley_id']); $galley->setIssueId($row['issue_id']); $galley->setLocale($row['locale']); $galley->setFileId($row['file_id']); $galley->setLabel($row['label']); $galley->setSequence($row['seq']); $galley->setViews($row['views']); // IssueFile set methods $galley->setFileName($row['file_name']); $galley->setOriginalFileName($row['original_file_name']); $galley->setFileType($row['file_type']); $galley->setFileSize($row['file_size']); $galley->setContentType($row['content_type']); $galley->setDateModified($this->datetimeFromDB($row['date_modified'])); $galley->setDateUploaded($this->datetimeFromDB($row['date_uploaded'])); $this->getDataObjectSettings('issue_galley_settings', 'galley_id', $row['galley_id'], $galley); HookRegistry::call('IssueGalleyDAO::_returnGalleyFromRow', array(&$galley, &$row)); return $galley; }