/** * 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->setPublicGalleyId($row['public_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'])); HookRegistry::call('IssueGalleyDAO::_returnGalleyFromRow', array(&$galley, &$row)); return $galley; }
/** * 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->setPublicGalleyId($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->setPublicGalleyId('pdf'); } } else { if (strstr($fileType, 'postscript')) { $galley->setLabel('PostScript'); if ($enablePublicGalleyId) { $galley->setPublicGalleyId('ps'); } } else { if (strstr($fileType, 'xml')) { $galley->setLabel('XML'); if ($enablePublicGalleyId) { $galley->setPublicGalleyId('xml'); } } } } } if ($galley->getLabel() == null) { $galley->setLabel(Locale::translate('common.untitled')); } } else { $galley->setLabel($this->getData('label')); } $galley->setLocale($this->getData('galleyLocale')); if ($enablePublicGalleyId) { // Ensure the assigned public id doesn't already exist $publicGalleyId = $galley->getPublicGalleyId(); $suffix = ''; $i = 1; while ($galleyDao->publicGalleyIdExists($publicGalleyId . $suffix, 0, $galley->getIssueId())) { $suffix = '_' . $i++; } $galley->setPublicGalleyId($publicGalleyId . $suffix); } // Insert new galley into the db $galleyDao->insertGalley($galley); $this->setGalley($galley); } return $this->getGalleyId(); }