Пример #1
0
 /**
  * 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->setFileStage($row['file_stage']);
     $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']);
     HookRegistry::call('ArticleFileDAO::_returnArticleFileFromRow', array(&$articleFile, &$row));
     return $articleFile;
 }
Пример #2
0
 /**
  * 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 $fileStage string identifying type
  * @param $fileId int ID of an existing file to update
  * @param $overwrite boolean overwrite all previous revisions of the file (revision number is still incremented)
  * @return int the file ID (false if upload failed)
  */
 function handleCopy($url, $mimeType, $fileStage, $fileId = null, $overwrite = false)
 {
     if (HookRegistry::call('ArticleFileManager::handleCopy', array(&$url, &$mimeType, &$fileStage, &$fileId, &$overwrite, &$result))) {
         return $result;
     }
     $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO');
     $fileStagePath = $this->fileStageToPath($fileStage);
     $dir = $this->filesDir . $fileStagePath . '/';
     if (!$fileId) {
         // Insert dummy file to generate file id FIXME?
         $dummyFile = true;
         $articleFile =& $this->generateDummyFile($this->article);
     } else {
         $dummyFile = false;
         $articleFile = new ArticleFile();
         $articleFile->setRevision($articleFileDao->getRevisionNumber($fileId) + 1);
         $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->setFileStage($fileStage);
     $articleFile->setRound($this->article->getCurrentRound());
     $newFileName = $this->generateFilename($articleFile, $fileStage, $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);
     }
     if ($overwrite) {
         $this->removePriorRevisions($articleFile->getFileId(), $articleFile->getRevision());
     }
     return $articleFile->getFileId();
 }