Open Journal Systems  3.3.0
IssueFileManager.inc.php
1 <?php
2 
19 import('lib.pkp.classes.file.FileManager');
20 import('classes.issue.IssueFile');
21 
23 
25  var $_filesDir = null;
26 
28  var $_issueId = null;
29 
35  function __construct($issueId) {
36  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
37  $issue = $issueDao->getById($issueId);
38  assert(isset($issue));
39 
40  $this->setIssueId($issueId);
41  $this->setFilesDir(Config::getVar('files', 'files_dir') . '/journals/' . $issue->getJournalId() . '/issues/' . $issueId . '/');
42 
43  parent::__construct();
44  }
45 
50  function getFilesDir() {
51  return $this->_filesDir;
52  }
53 
58  function setFilesDir($filesDir) {
59  $this->_filesDir = $filesDir;
60  }
61 
66  function getIssueId() {
67  return $this->_issueId;
68  }
69 
74  function setIssueId($issueId) {
75  $this->_issueId = (int) $issueId;
76  }
77 
83  function deleteById($fileId) {
84  $issueFileDao = DAORegistry::getDAO('IssueFileDAO'); /* @var $issueFileDao IssueFileDAO */
85  $issueFile = $issueFileDao->getById($fileId);
86 
87  if (parent::deleteByPath($this->getFilesDir() . $this->contentTypeToPath($issueFile->getContentType()) . '/' . $issueFile->getServerFileName())) {
88  $issueFileDao->deleteById($fileId);
89  return true;
90  }
91 
92  return false;
93  }
94 
98  function deleteIssueTree() {
99  parent::rmtree($this->getFilesDir());
100  }
101 
108  function downloadById($fileId, $inline = false) {
109  $issueFileDao = DAORegistry::getDAO('IssueFileDAO'); /* @var $issueFileDao IssueFileDAO */
110  $issueFile = $issueFileDao->getById($fileId);
111 
112  if ($issueFile) {
113  $fileType = $issueFile->getFileType();
114  $filePath = $this->getFilesDir() . $this->contentTypeToPath($issueFile->getContentType()) . '/' . $issueFile->getServerFileName();
115 
116  return parent::downloadByPath($filePath, $fileType, $inline);
117 
118  } else {
119  return false;
120  }
121  }
122 
128  function contentTypeToPath($contentType) {
129  switch ($contentType) {
130  case ISSUE_FILE_PUBLIC: return 'public';
131  }
132  }
133 
139  function contentTypeToAbbrev($contentType) {
140  switch ($contentType) {
141  case ISSUE_FILE_PUBLIC: return 'PB';
142  }
143  }
144 
151  function fromTemporaryFile($temporaryFile, $contentType = ISSUE_FILE_PUBLIC) {
152  $result = null;
153  if (HookRegistry::call('IssueFileManager::fromTemporaryFile', array(&$temporaryFile, &$contentType, &$result))) return $result;
154 
155  $issueId = $this->getIssueId();
156  $issueFileDao = DAORegistry::getDAO('IssueFileDAO'); /* @var $issueFileDao IssueFileDAO */
157 
158  $contentTypePath = $this->contentTypeToPath($contentType);
159  $dir = $this->getFilesDir() . $contentTypePath . '/';
160 
161  $issueFile = $issueFileDao->newDataObject();
162  $issueFile->setIssueId($issueId);
163  $issueFile->setDateUploaded($temporaryFile->getDateUploaded());
164  $issueFile->setDateModified(Core::getCurrentDate());
165  $issueFile->setServerFileName(''); // Blank until we insert to generate a file ID
166  $issueFile->setFileType($temporaryFile->getFileType());
167  $issueFile->setFileSize($temporaryFile->getFileSize());
168  $issueFile->setOriginalFileName($temporaryFile->getOriginalFileName());
169  $issueFile->setContentType($contentType);
170 
171  if (!$issueFileDao->insertObject($issueFile)) return false;
172 
173  $extension = $this->parseFileExtension($issueFile->getOriginalFileName());
174  $newFileName = $issueFile->getIssueId().'-'.$issueFile->getId().'-'.$this->contentTypeToAbbrev($contentType).'.'.$extension;
175  $issueFile->setServerFileName($newFileName);
176 
177  // Copy the actual file
178  if (!$this->copyFile($temporaryFile->getFilePath(), $dir . $newFileName)) {
179  // Upload failed; remove the new DB record.
180  $issueFileDao->deleteById($issueFile->getId());
181  return false;
182  }
183 
184  // Upload succeeded. Update issue file record with new filename.
185  $issueFileDao->updateObject($issueFile);
186 
187  return $issueFile;
188  }
189 }
190 
191 
IssueFileManager\deleteIssueTree
deleteIssueTree()
Definition: IssueFileManager.inc.php:104
IssueFileManager\getIssueId
getIssueId()
Definition: IssueFileManager.inc.php:72
IssueFileManager
Class defining operations for issue file management.
Definition: IssueFileManager.inc.php:22
IssueFileManager\contentTypeToPath
contentTypeToPath($contentType)
Definition: IssueFileManager.inc.php:134
IssueFileManager\getFilesDir
getFilesDir()
Definition: IssueFileManager.inc.php:56
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
IssueFileManager\setFilesDir
setFilesDir($filesDir)
Definition: IssueFileManager.inc.php:64
FileManager\copyFile
copyFile($source, $dest)
Definition: FileManager.inc.php:174
IssueFileManager\deleteById
deleteById($fileId)
Definition: IssueFileManager.inc.php:89
IssueFileManager\__construct
__construct($issueId)
Definition: IssueFileManager.inc.php:41
IssueFileManager\setIssueId
setIssueId($issueId)
Definition: IssueFileManager.inc.php:80
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
IssueFileManager\downloadById
downloadById($fileId, $inline=false)
Definition: IssueFileManager.inc.php:114
IssueFileManager\fromTemporaryFile
fromTemporaryFile($temporaryFile, $contentType=ISSUE_FILE_PUBLIC)
Definition: IssueFileManager.inc.php:157
IssueFileManager\$_filesDir
$_filesDir
Definition: IssueFileManager.inc.php:28
IssueFileManager\contentTypeToAbbrev
contentTypeToAbbrev($contentType)
Definition: IssueFileManager.inc.php:145
FileManager\parseFileExtension
parseFileExtension($fileName)
Definition: FileManager.inc.php:548
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
FileManager\__construct
__construct()
Definition: FileManager.inc.php:39
FileManager
Class defining basic operations for file management.
Definition: FileManager.inc.php:35
HookRegistry\call
static call($hookName, $args=null)
Definition: HookRegistry.inc.php:86
IssueFileManager\$_issueId
$_issueId
Definition: IssueFileManager.inc.php:34