/**
* 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();
}