| <?php |
|
|
| namespace Kanboard\Core\ObjectStorage; |
|
|
| |
| |
| |
| |
| |
| |
| class FileStorage implements ObjectStorageInterface |
| { |
| |
| |
| |
| |
| |
| |
| private $path = ''; |
|
|
| |
| |
| |
| |
| |
| |
| public function __construct($path) |
| { |
| $this->path = $path; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function get($key) |
| { |
| $filename = $this->path.DIRECTORY_SEPARATOR.$key; |
|
|
| if (! file_exists($filename)) { |
| throw new ObjectStorageException('File not found: '.$filename); |
| } |
|
|
| return file_get_contents($filename); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function put($key, &$blob) |
| { |
| $this->createFolder($key); |
|
|
| if (file_put_contents($this->path.DIRECTORY_SEPARATOR.$key, $blob) === false) { |
| throw new ObjectStorageException('Unable to write the file: '.$this->path.DIRECTORY_SEPARATOR.$key); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function output($key) |
| { |
| $filename = $this->path.DIRECTORY_SEPARATOR.$key; |
|
|
| if (! file_exists($filename)) { |
| throw new ObjectStorageException('File not found: '.$filename); |
| } |
|
|
| readfile($filename); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public function moveFile($src_filename, $key) |
| { |
| $this->createFolder($key); |
| $dst_filename = $this->path.DIRECTORY_SEPARATOR.$key; |
|
|
| if (! rename($src_filename, $dst_filename)) { |
| throw new ObjectStorageException('Unable to move the file: '.$src_filename.' to '.$dst_filename); |
| } |
|
|
| return true; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| public function moveUploadedFile($filename, $key) |
| { |
| $this->createFolder($key); |
| return move_uploaded_file($filename, $this->path.DIRECTORY_SEPARATOR.$key); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function remove($key) |
| { |
| $filename = $this->path.DIRECTORY_SEPARATOR.$key; |
| $result = false; |
|
|
| if (file_exists($filename)) { |
| $result = unlink($filename); |
|
|
| |
| $parentFolder = dirname($filename); |
| $files = glob($parentFolder.DIRECTORY_SEPARATOR.'*'); |
|
|
| if ($files !== false && is_dir($parentFolder) && count($files) === 0) { |
| rmdir($parentFolder); |
| } |
| } |
|
|
| return $result; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| private function createFolder($key) |
| { |
| $folder = strpos($key, DIRECTORY_SEPARATOR) !== false ? $this->path.DIRECTORY_SEPARATOR.dirname($key) : $this->path; |
|
|
| if (! is_dir($folder) && ! mkdir($folder, 0755, true)) { |
| throw new ObjectStorageException('Unable to create folder: '.$folder); |
| } |
| } |
| } |
|
|