/** * Internal function to return an ArticleFile object from a row. * @param $row array * @return ArticleFile */ function &_returnArticleFileFromRow(&$row) { $articleFile = new ArticleFile(); $articleFile->setFileId($row['file_id']); $articleFile->setSourceFileId($row['source_file_id']); $articleFile->setSourceRevision($row['source_revision']); $articleFile->setRevision($row['revision']); $articleFile->setArticleId($row['article_id']); $articleFile->setFileName($row['file_name']); $articleFile->setFileType($row['file_type']); $articleFile->setFileSize($row['file_size']); $articleFile->setOriginalFileName($row['original_file_name']); $articleFile->setType($row['type']); $articleFile->setAssocId($row['assoc_id']); $articleFile->setDateUploaded($this->datetimeFromDB($row['date_uploaded'])); $articleFile->setDateModified($this->datetimeFromDB($row['date_modified'])); $articleFile->setRound($row['round']); $articleFile->setViewable($row['viewable']); //%LP% set fedora information $articleFile->setFedoraNamespace($row['fedora_namespace']); $articleFile->setFedoraPid($row['fedora_pid']); $articleFile->setFedoraDsid($row['fedora_dsid']); HookRegistry::call('ArticleFileDAO::_returnArticleFileFromRow', array(&$articleFile, &$row)); return $articleFile; }
/** * Internal function to write the pdf of a published researt. * @param $sectionEditorSubmission SectionEditorSubmission * @return bool */ function _publishResearch($sectionEditorSubmission) { $completionReport = $sectionEditorSubmission->getLastReportFile(); if ($completionReport->getFileType() == "application/pdf") { $coverPath = SectionEditorAction::_generateCover($sectionEditorSubmission); if ($coverPath && $coverPath != '') { import('classes.lib.TCPDFMerger'); $file2merge = array($coverPath . 'tempCover.pdf', $completionReport->getFilePath()); $pdf = new TCPDFMerger(); $pdf->setFiles($file2merge); $pdf->concat(); $fileName = $sectionEditorSubmission->getProposalId() . '-Final_Technical_Report.pdf'; $pdf->Output($coverPath . $fileName, "F"); FileManager::deleteFile($coverPath . 'tempCover.pdf'); if (file_exists($coverPath . $fileName)) { //import('classes.article.ArticleFile'); $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $technicalReport = new ArticleFile(); $technicalReport->setArticleId($sectionEditorSubmission->getArticleId()); $technicalReport->setFileName($fileName); $technicalReport->setFileType('application/pdf'); $technicalReport->setFileSize(filesize($coverPath . $fileName)); $technicalReport->setOriginalFileName($fileName); $technicalReport->setType('public'); $technicalReport->setDateUploaded(Core::getCurrentDate()); $technicalReport->setDateModified(Core::getCurrentDate()); $fileId = $articleFileDao->insertArticleFile($technicalReport); return $fileId; } } } return false; }
/** * PRIVATE routine to copy an article file and add it to the database. * @param $url original filename/url of the file * @param $mimeType string the mime type of the file * @param $type string identifying type * @param $fileId int ID of an existing file to update * @return int the file ID (false if upload failed) */ function handleCopy($url, $mimeType, $type, $fileId = null) { if (HookRegistry::call('ArticleFileManager::handleCopy', array(&$url, &$mimeType, &$type, &$fileId, &$result))) { return $result; } $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO'); $typePath = $this->typeToPath($type); $dir = $this->filesDir . $typePath . '/'; if (!$fileId) { // Insert dummy file to generate file id FIXME? $dummyFile = true; $articleFile =& $this->generateDummyFile($this->article); } else { $dummyFile = false; $articleFile = new ArticleFile(); $articleFile->setArticleId($this->articleId); $articleFile->setFileId($fileId); $articleFile->setDateUploaded(Core::getCurrentDate()); $articleFile->setDateModified(Core::getCurrentDate()); } $articleFile->setFileType($mimeType); $articleFile->setOriginalFileName(ArticleFileManager::truncateFileName(basename($url), 127)); $articleFile->setType($typePath); $newFileName = $this->generateFilename($articleFile, $type, $articleFile->getOriginalFileName()); if (!$this->copyFile($url, $dir . $newFileName)) { // Delete the dummy file we inserted $articleFileDao->deleteArticleFileById($articleFile->getFileId()); return false; } $articleFile->setFileSize(filesize($dir . $newFileName)); if ($dummyFile) { $articleFileDao->updateArticleFile($articleFile); } else { $articleFileDao->insertArticleFile($articleFile); } return $articleFile->getFileId(); }
/** * Internal function to return an ArticleFile object from a row. * @param $row array * @return ArticleFile */ function &_returnArticleFileFromRow(&$row) { $articleFile = new ArticleFile(); $articleFile->setFileId($row['file_id']); $articleFile->setSourceFileId($row['source_file_id']); $articleFile->setArticleId($row['article_id']); $articleFile->setFileName($row['file_name']); $articleFile->setFileType($row['file_type']); $articleFile->setFileSize($row['file_size']); $articleFile->setOriginalFileName($row['original_file_name']); $articleFile->setType($row['type']); $articleFile->setAssocId($row['assoc_id']); $articleFile->setDateUploaded($this->datetimeFromDB($row['date_uploaded'])); $articleFile->setDateModified($this->datetimeFromDB($row['date_modified'])); $articleFile->setViewable($row['viewable']); HookRegistry::call('ArticleFileDAO::_returnArticleFileFromRow', array(&$articleFile, &$row)); return $articleFile; }