IssueFileManager::fromTemporaryFile PHP Method

fromTemporaryFile() public method

Create an issue galley based on a temporary file.
public fromTemporaryFile ( $temporaryFile, $contentType = ISSUE_FILE_PUBLIC ) : IssueFile
$temporaryFile TemporaryFile
$contentType int Issue file content type
return IssueFile the resulting issue file
    function fromTemporaryFile($temporaryFile, $contentType = ISSUE_FILE_PUBLIC)
    {
        $result = null;
        if (HookRegistry::call('IssueFileManager::fromTemporaryFile', array(&$temporaryFile, &$contentType, &$result))) {
            return $result;
        }
        $issueId = $this->getIssueId();
        $issueFileDao = DAORegistry::getDAO('IssueFileDAO');
        $contentTypePath = $this->contentTypeToPath($contentType);
        $dir = $this->getFilesDir() . $contentTypePath . '/';
        $issueFile = $issueFileDao->newDataObject();
        $issueFile->setIssueId($issueId);
        $issueFile->setDateUploaded($temporaryFile->getDateUploaded());
        $issueFile->setDateModified(Core::getCurrentDate());
        $issueFile->setServerFileName('');
        // Blank until we insert to generate a file ID
        $issueFile->setFileType($temporaryFile->getFileType());
        $issueFile->setFileSize($temporaryFile->getFileSize());
        $issueFile->setOriginalFileName($temporaryFile->getOriginalFileName());
        $issueFile->setContentType($contentType);
        if (!$issueFileDao->insertObject($issueFile)) {
            return false;
        }
        $extension = $this->parseFileExtension($issueFile->getOriginalFileName());
        $newFileName = $issueFile->getIssueId() . '-' . $issueFile->getId() . '-' . $this->contentTypeToAbbrev($contentType) . '.' . $extension;
        $issueFile->setServerFileName($newFileName);
        // Copy the actual file
        if (!$this->copyFile($temporaryFile->getFilePath(), $dir . $newFileName)) {
            // Upload failed; remove the new DB record.
            $issueFileDao->deleteById($issueFile->getId());
            return false;
        }
        // Upload succeeded. Update issue file record with new filename.
        $issueFileDao->updateObject($issueFile);
        return $issueFile;
    }

Usage Example

Esempio n. 1
0
 /**
  * Save changes to the galley.
  * @param $request PKPRequest
  * @return int the galley ID
  */
 function execute($request)
 {
     import('classes.file.IssueFileManager');
     $issueFileManager = new IssueFileManager($this->_issue->getId());
     $journal = $request->getJournal();
     $user = $request->getUser();
     $issueGalley = $this->_issueGalley;
     $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO');
     // If a temporary file ID was specified (i.e. an upload occurred), get the file for later.
     $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
     $temporaryFile = $temporaryFileDao->getTemporaryFile($this->getData('temporaryFileId'), $user->getId());
     if ($issueGalley) {
         // Update an existing galley
         if ($temporaryFile) {
             // Galley has a file, delete it before uploading new one
             if ($issueGalley->getFileId()) {
                 $issueFileManager->deleteFile($issueGalley->getFileId());
             }
             // Upload new file
             $issueFile = $issueFileManager->fromTemporaryFile($temporaryFile);
             $issueGalley->setFileId($issueFile->getFileId());
         }
         $issueGalley->setLabel($this->getData('label'));
         $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId'));
         $issueGalley->setLocale($this->getData('galleyLocale'));
         // Update galley in the db
         $issueGalleyDao->updateObject($issueGalley);
     } else {
         // Create a new galley
         $issueGalleyFile = $issueFileManager->fromTemporaryFile($temporaryFile);
         $issueGalley = $issueGalleyDao->newDataObject();
         $issueGalley->setIssueId($this->_issue->getId());
         $issueGalley->setFileId($issueGalleyFile->getId());
         if ($this->getData('label') == null) {
             // Generate initial label based on file type
             if (isset($fileType)) {
                 if (strstr($fileType, 'pdf')) {
                     $issueGalley->setLabel('PDF');
                 } else {
                     if (strstr($fileType, 'postscript')) {
                         $issueGalley->setLabel('PostScript');
                     } else {
                         if (strstr($fileType, 'xml')) {
                             $issueGalley->setLabel('XML');
                         }
                     }
                 }
             }
             if ($issueGalley->getLabel() == null) {
                 $issueGalley->setLabel(__('common.untitled'));
             }
         } else {
             $issueGalley->setLabel($this->getData('label'));
         }
         $issueGalley->setLocale($this->getData('galleyLocale'));
         $issueGalley->setStoredPubId('publisher-id', $this->getData('publicGalleyId'));
         // Insert new galley into the db
         $issueGalleyDao->insertObject($issueGalley);
         $this->_issueGalley = $issueGalley;
     }
     return $this->_issueGalley->getId();
 }