• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/file/LibraryFileManager.inc.php

00001 <?php
00002 
00016 import('classes.press.LibraryFile');
00017 import('lib.pkp.classes.file.PrivateFileManager');
00018 
00019 class LibraryFileManager extends PrivateFileManager {
00020    /* @var $pressId Press id for the current press */
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       // Try a simple syntax first
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          //truncate more if necessary
00074          $truncated = $this->truncateFileName($originalFileName, 127 - String::strlen($fullSuffix) - 1);
00075          // get the base name and append the suffix
00076          $baseName = String::substr($truncated, 0, String::strpos($originalFileName, $ext) - 1);
00077 
00078          //try the following
00079          $fileName = $baseName . '-' . $fullSuffix . '.' . $ext;
00080          if (!$libraryFileDao->filenameExists($this->pressId, $fileName)) {
00081             return $fileName;
00082          }
00083       }
00084    }
00085 
00091    function &copyFromTemporaryFile(&$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 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1