/** * Store a file and return the hash * @param File $file * @return string $hash */ public function storeFile(File $file) { $hash = md5_file($file->getPathname()); if (!$this->fileSystem->exists($this->getPath($hash))) { $this->fileSystem->rename($file->getPathname(), $this->getPath($hash)); } return $hash; }
/** * Store a learning material file and return the relativePath * @param File $file * @param boolean $preserveOriginalFile * @return string $relativePath */ public function storeLearningMaterialFile(File $file, $preserveOriginalFile = true) { $relativePath = $this->getLearningMaterialFilePath($file); $fullPath = $this->getPath($relativePath); $dir = dirname($fullPath); $this->fileSystem->mkdir($dir); if ($preserveOriginalFile) { $this->fileSystem->copy($file->getPathname(), $fullPath, false); } else { if (!$this->fileSystem->exists($fullPath)) { $this->fileSystem->rename($file->getPathname(), $fullPath); } } return $relativePath; }
public function extractTo($extractPath, $files = null) { $fs = new FileSystem(); $ds = DIRECTORY_SEPARATOR; for ($i = 0; $i < $this->numFiles; $i++) { $oldName = parent::getNameIndex($i); $newName = mb_convert_encoding($this->getNameIndex($i), 'ISO-8859-1', 'CP850,UTF-8'); //we cheat a little because we can't tell wich name the extracted part should have //so we put it a directory wich share it's name $tmpDir = $extractPath . $ds . '__claro_zip_hack_' . $oldName; parent::extractTo($tmpDir, parent::getNameIndex($i)); //now we move the content of the directory and we put the good name on it. foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($tmpDir, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) { if ($item->isFile()) { $fs->mkdir(dirname($extractPath . $ds . $oldName)); $fs->rename($item->getPathname(), $extractPath . $ds . $oldName); } } } //we remove our 'trash here' $iterator = new \DirectoryIterator($extractPath); foreach ($iterator as $item) { if (strpos($item->getFilename(), '_claro_zip_hack')) { $fs->rmdir($item->getRealPath(), true); } } }
/** * @param $file * @param $newName new filename * @return StandardResponseInterface */ public function renameFile($file, $newName) { if (!$this->isNameValid($newName)) { return new StandardResponse(false, 'New name not valid'); } $fullPath = $this->getRealPath($file); $this->fs->rename($fullPath, dirname($fullPath) . '/' . $newName); return new StandardResponse(); }
/** * Renames a file or directory */ public function rename($path_from, $path_to) { if (!$this->initPath($path_to)) { return FALSE; } $keyTo = $this->getFileName(); if (!$this->initPath($path_from)) { return FALSE; } $keyFrom = $this->getFileName(); return $this->fileSystem->rename($keyFrom, $keyTo); }
/** * create backup by renaming original file * * @param string $fileName file name */ function createBackup($fileName) { $ext = substr($fileName, strrpos($fileName, '.')); $name = substr($fileName, 0, strrpos($fileName, '.')); $backupName = $fileName; $cnt = 0; while ($this->getEntryByName($backupName)) { $cnt++; $backupName = $name . "({$cnt}){$ext}"; } if ($cnt > 0) { $this->FileSystem->rename($this->curDir . '/' . $fileName, $this->curDir . '/' . $backupName); } }