Exemplo n.º 1
0
 /**
  * Save changes to the galley.
  * @return int the galley ID
  */
 function execute($fileName = null)
 {
     import('classes.file.PaperFileManager');
     $paperFileManager = new PaperFileManager($this->paperId);
     $galleyDao =& DAORegistry::getDAO('PaperGalleyDAO');
     $fileName = isset($fileName) ? $fileName : 'galleyFile';
     if (isset($this->galley)) {
         $galley =& $this->galley;
         // Upload galley file
         if ($paperFileManager->uploadedFileExists($fileName)) {
             if ($galley->getFileId()) {
                 $paperFileManager->uploadPublicFile($fileName, $galley->getFileId());
             } else {
                 $fileId = $paperFileManager->uploadPublicFile($fileName);
                 $galley->setFileId($fileId);
             }
             // Update file search index
             import('classes.search.PaperSearchIndex');
             PaperSearchIndex::updateFileIndex($this->paperId, PAPER_SEARCH_GALLEY_FILE, $galley->getFileId());
         }
         if ($paperFileManager->uploadedFileExists('styleFile')) {
             // Upload stylesheet file
             $styleFileId = $paperFileManager->uploadPublicFile('styleFile', $galley->getStyleFileId());
             $galley->setStyleFileId($styleFileId);
         } else {
             if ($this->getData('deleteStyleFile')) {
                 // Delete stylesheet file
                 $styleFile =& $galley->getStyleFile();
                 if (isset($styleFile)) {
                     $paperFileManager->deleteFile($styleFile->getFileId());
                 }
             }
         }
         // Update existing galley
         $galley->setLabel($this->getData('label'));
         $galley->setLocale($this->getData('galleyLocale'));
         $galleyDao->updateGalley($galley);
     } else {
         // Upload galley file
         if ($paperFileManager->uploadedFileExists($fileName)) {
             $fileType = $paperFileManager->getUploadedFileType($fileName);
             $fileId = $paperFileManager->uploadPublicFile($fileName);
             // Update file search index
             import('classes.search.PaperSearchIndex');
             PaperSearchIndex::updateFileIndex($this->paperId, PAPER_SEARCH_GALLEY_FILE, $fileId);
         } else {
             $fileId = 0;
         }
         if (isset($fileType) && strstr($fileType, 'html')) {
             // Assume HTML galley
             $galley = new PaperHTMLGalley();
         } else {
             $galley = new PaperGalley();
         }
         $galley->setPaperId($this->paperId);
         $galley->setFileId($fileId);
         if ($this->getData('label') == null) {
             // Generate initial label based on file type
             if ($galley->isHTMLGalley()) {
                 $galley->setLabel('HTML');
             } else {
                 if (isset($fileType)) {
                     if (strstr($fileType, 'pdf')) {
                         $galley->setLabel('PDF');
                     } else {
                         if (strstr($fileType, 'postscript')) {
                             $galley->setLabel('PostScript');
                         } else {
                             if (strstr($fileType, 'xml')) {
                                 $galley->setLabel('XML');
                             } else {
                                 if (strstr($fileType, 'audio')) {
                                     $galley->setLabel('Audio');
                                 } else {
                                     if (strstr($fileType, 'powerpoint')) {
                                         $galley->setLabel('Slideshow');
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             if ($galley->getLabel() == null) {
                 $galley->setLabel(Locale::translate('common.untitled'));
             }
         } else {
             $galley->setLabel($this->getData('label'));
         }
         $galley->setLocale($this->getData('galleyLocale'));
         // Insert new galley
         $galleyDao->insertGalley($galley);
         $this->galleyId = $galley->getId();
     }
     return $this->galleyId;
 }