Exemplo n.º 1
0
 /**
  * Set the file to use as the default editing file.
  * @param $trackDirectorSubmission object
  * @param $fileId int
  * @param $revision int
  * @param $createGalley boolean
  * TODO: SECURITY!
  */
 function setEditingFile($trackDirectorSubmission, $fileId, $revision, $createGalley = false)
 {
     import('file.PaperFileManager');
     $paperFileManager = new PaperFileManager($trackDirectorSubmission->getPaperId());
     $trackDirectorSubmissionDao =& DAORegistry::getDAO('TrackDirectorSubmissionDAO');
     $paperFileDao =& DAORegistry::getDAO('PaperFileDAO');
     $user =& Request::getUser();
     if (!HookRegistry::call('TrackDirectorAction::setEditingFile', array(&$trackDirectorSubmission, &$fileId, &$revision))) {
         // Copy the file from the director decision file folder to the layout folder
         $newFileId = $paperFileManager->copyToLayoutFile($fileId, $revision);
         $trackDirectorSubmission->setLayoutFileId($newFileId);
         $trackDirectorSubmissionDao->updateTrackDirectorSubmission($trackDirectorSubmission);
         if ($createGalley) {
             $paperGalleyDao =& DAORegistry::getDAO('PaperGalleyDAO');
             $galleys =& $paperGalleyDao->getGalleysByPaper($trackDirectorSubmission->getPaperId());
             if (empty($galleys)) {
                 $layoutFile =& $paperFileDao->getPaperFile($newFileId, $revision);
                 $fileType = $layoutFile->getFileType();
                 $fileId = $paperFileManager->copyPublicFile($layoutFile->getFilePath(), $fileType);
                 if (strstr($fileType, 'html')) {
                     $galley = new PaperHTMLGalley();
                 } else {
                     $galley = new PaperGalley();
                 }
                 $galley->setPaperId($trackDirectorSubmission->getPaperId());
                 $galley->setLocale(Locale::getLocale());
                 $galley->setFileId($fileId);
                 if ($galley->isHTMLGalley()) {
                     $galley->setLabel('HTML');
                 } elseif (strstr($fileType, 'pdf')) {
                     $galley->setLabel('PDF');
                 } else {
                     if (strstr($fileType, 'postscript')) {
                         $galley->setLabel('Postscript');
                     } else {
                         if (strstr($fileType, 'xml')) {
                             $galley->setLabel('XML');
                         } else {
                             $galley->setLabel(Locale::translate('common.untitled'));
                         }
                     }
                 }
                 $paperGalleyDao->insertGalley($galley);
             }
         }
         // Add log
         import('paper.log.PaperLog');
         import('paper.log.PaperEventLogEntry');
         PaperLog::logEvent($trackDirectorSubmission->getPaperId(), PAPER_LOG_LAYOUT_SET_FILE, LOG_TYPE_FILE, $trackDirectorSubmission->getLayoutFileId(), 'log.layout.layoutFileSet', array('directorName' => $user->getFullName(), 'paperId' => $trackDirectorSubmission->getPaperId()));
     }
 }