00001 <?php
00002
00016 import('classes.press.LibraryFile');
00017 import('lib.pkp.classes.file.PrivateFileManager');
00018
00019 class LibraryFileManager extends PrivateFileManager {
00020
00021 var $pressId;
00022
00027 function LibraryFileManager($pressId) {
00028 parent::FileManager();
00029 $this->pressId = $pressId;
00030 }
00031
00036 function getBasePath() {
00037 return parent::getBasePath() . '/presses/' . $this->pressId . '/library/';
00038 }
00039
00045 function deleteFile($fileId) {
00046 $libraryFileDao =& DAORegistry::getDAO('LibraryFileDAO');
00047 $libraryFile =& $libraryFileDao->getById($fileId);
00048
00049 parent::deleteFile($this->getBasePath() . $libraryFile->getFileName());
00050
00051 $libraryFileDao->deleteById($fileId);
00052 }
00053
00060 function generateFileName($type, $originalFileName) {
00061 $libraryFileDao =& DAORegistry::getDAO('LibraryFileDAO');
00062 $suffix = $this->getFileSuffixFromType($type);
00063 $ext = $this->getExtension($originalFileName);
00064 $truncated = $this->truncateFileName($originalFileName, 127 - String::strlen($suffix) - 1);
00065 $baseName = String::substr($truncated, 0, String::strpos($originalFileName, $ext) - 1);
00066
00067
00068 $fileName = $baseName . '-' . $suffix . '.' . $ext;
00069 if (!$libraryFileDao->filenameExists($this->pressId, $fileName)) return $fileName;
00070
00071 for ($i = 1; ; $i++) {
00072 $fullSuffix = $suffix . '-' . $i;
00073
00074 $truncated = $this->truncateFileName($originalFileName, 127 - String::strlen($fullSuffix) - 1);
00075
00076 $baseName = String::substr($truncated, 0, String::strpos($originalFileName, $ext) - 1);
00077
00078
00079 $fileName = $baseName . '-' . $fullSuffix . '.' . $ext;
00080 if (!$libraryFileDao->filenameExists($this->pressId, $fileName)) {
00081 return $fileName;
00082 }
00083 }
00084 }
00085
00091 function ©FromTemporaryFile(&$temporaryFile, $libraryFileType) {
00092 $libraryFileDao =& DAORegistry::getDAO('LibraryFileDAO');
00093 $libraryFile = $libraryFileDao->newDataObject();
00094
00095 $libraryFile->setDateUploaded($temporaryFile->getDateUploaded());
00096 $libraryFile->setDateModified($temporaryFile->getDateUploaded());
00097 $libraryFile->setFileType($temporaryFile->getFileType());
00098 $libraryFile->setFileSize($temporaryFile->getFileSize());
00099 $libraryFile->setFileName($this->generateFilename($libraryFileType, $temporaryFile->getOriginalFileName()));
00100 $libraryFile->setOriginalFileName($temporaryFile->getOriginalFileName());
00101 if (!$this->copyFile($temporaryFile->getFilePath(), $this->getBasePath() . $temporaryFile->getOriginalFileName())) {
00102 return false;
00103 }
00104
00105 return $libraryFile;
00106 }
00107
00112 function getFileSuffixFromType($type) {
00113 $typeSuffixMap =& $this->getTypeSuffixMap();
00114 return $typeSuffixMap[$type];
00115 }
00116
00121 function &getTypeSuffixMap() {
00122 static $map = array(
00123 LIBRARY_FILE_TYPE_CONTRACT => 'CON',
00124 LIBRARY_FILE_TYPE_MARKETING => 'MAR',
00125 LIBRARY_FILE_TYPE_PERMISSION => 'PER',
00126 LIBRARY_FILE_TYPE_REPORT => 'REP',
00127 LIBRARY_FILE_TYPE_OTHER => 'OTH'
00128 );
00129 return $map;
00130 }
00131
00136 function getNameFromType($type) {
00137 $typeNameMap =& $this->getTypeNameMap();
00138 if (isset($typeNameMap[$type])) {
00139 return $typeNameMap[$type];
00140 } else {
00141 return false;
00142 }
00143 }
00144
00149 function &getTypeTitleKeyMap() {
00150 static $map = array(
00151 LIBRARY_FILE_TYPE_CONTRACT => 'settings.libraryFiles.category.contracts',
00152 LIBRARY_FILE_TYPE_MARKETING => 'settings.libraryFiles.category.marketing',
00153 LIBRARY_FILE_TYPE_PERMISSION => 'settings.libraryFiles.category.permissions',
00154 LIBRARY_FILE_TYPE_REPORT => 'settings.libraryFiles.category.reports',
00155 LIBRARY_FILE_TYPE_OTHER => 'settings.libraryFiles.category.other'
00156 );
00157 return $map;
00158 }
00159
00164 function getTitleKeyFromType($type) {
00165 $typeTitleKeyMap =& $this->getTypeTitleKeyMap();
00166 return $typeTitleKeyMap[$type];
00167 }
00168
00173 function &getTypeNameMap() {
00174 static $typeNameMap = array(
00175 LIBRARY_FILE_TYPE_CONTRACT => 'contacts',
00176 LIBRARY_FILE_TYPE_MARKETING => 'marketing',
00177 LIBRARY_FILE_TYPE_PERMISSION => 'permissions',
00178 LIBRARY_FILE_TYPE_REPORT => 'reports',
00179 LIBRARY_FILE_TYPE_OTHER => 'other',
00180 );
00181 return $typeNameMap;
00182 }
00183 }
00184
00185 ?>