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