/** * Save changes to the supplementary file. * @return int the supplementary file ID */ function execute($fileName = null) { import("file.PaperFileManager"); $paperFileManager = new PaperFileManager($this->paper->getPaperId()); $suppFileDao =& DAORegistry::getDAO('SuppFileDAO'); $fileName = isset($fileName) ? $fileName : 'uploadSuppFile'; if (isset($this->suppFile)) { $suppFile =& $this->suppFile; // Upload file, if file selected. if ($paperFileManager->uploadedFileExists($fileName)) { $paperFileManager->uploadSuppFile($fileName, $suppFile->getFileId()); import('search.PaperSearchIndex'); PaperSearchIndex::updateFileIndex($this->paper->getPaperId(), PAPER_SEARCH_SUPPLEMENTARY_FILE, $suppFile->getFileId()); } // Index metadata PaperSearchIndex::indexSuppFileMetadata($suppFile); // Update existing supplementary file $this->setSuppFileData($suppFile); $suppFileDao->updateSuppFile($suppFile); } else { // Upload file, if file selected. if ($paperFileManager->uploadedFileExists($fileName)) { $fileId = $paperFileManager->uploadSuppFile($fileName); import('search.PaperSearchIndex'); PaperSearchIndex::updateFileIndex($this->paper->getPaperId(), PAPER_SEARCH_SUPPLEMENTARY_FILE, $fileId); } else { $fileId = 0; } // Insert new supplementary file $suppFile = new SuppFile(); $suppFile->setPaperId($this->paper->getPaperId()); $suppFile->setFileId($fileId); $this->setSuppFileData($suppFile); $suppFileDao->insertSuppFile($suppFile); $this->suppFileId = $suppFile->getId(); } return $this->suppFileId; }
/** * Index all paper files (supplementary and galley). * @param $paper Paper */ function indexPaperFiles(&$paper) { // Index supplementary files $fileDao =& DAORegistry::getDAO('SuppFileDAO'); $files =& $fileDao->getSuppFilesByPaper($paper->getId()); foreach ($files as $file) { if ($file->getFileId()) { PaperSearchIndex::updateFileIndex($paper->getId(), PAPER_SEARCH_SUPPLEMENTARY_FILE, $file->getFileId()); } PaperSearchIndex::indexSuppFileMetadata($file); } unset($files); // Index galley files $fileDao =& DAORegistry::getDAO('PaperGalleyDAO'); $files =& $fileDao->getGalleysByPaper($paper->getId()); foreach ($files as $file) { if ($file->getFileId()) { PaperSearchIndex::updateFileIndex($paper->getId(), PAPER_SEARCH_GALLEY_FILE, $file->getFileId()); } } }