]> BookStack Code Mirror - bookstack/blob - app/Services/UploadService.php
Added ability to secure images behind auth
[bookstack] / app / Services / UploadService.php
1 <?php namespace BookStack\Services;
2
3 use Illuminate\Contracts\Filesystem\Factory as FileSystem;
4 use Illuminate\Contracts\Filesystem\Filesystem as FileSystemInstance;
5
6 class UploadService
7 {
8
9     /**
10      * @var FileSystem
11      */
12     protected $fileSystem;
13
14     /**
15      * @var FileSystemInstance
16      */
17     protected $storageInstance;
18
19
20     /**
21      * FileService constructor.
22      * @param $fileSystem
23      */
24     public function __construct(FileSystem $fileSystem)
25     {
26         $this->fileSystem = $fileSystem;
27     }
28
29     /**
30      * Get the storage that will be used for storing images.
31      * @return FileSystemInstance
32      */
33     protected function getStorage()
34     {
35         if ($this->storageInstance !== null) return $this->storageInstance;
36
37         $storageType = config('filesystems.default');
38         $this->storageInstance = $this->fileSystem->disk($storageType);
39
40         return $this->storageInstance;
41     }
42
43     /**
44      * Check whether or not a folder is empty.
45      * @param $path
46      * @return bool
47      */
48     protected function isFolderEmpty($path)
49     {
50         $files = $this->getStorage()->files($path);
51         $folders = $this->getStorage()->directories($path);
52         return (count($files) === 0 && count($folders) === 0);
53     }
54
55     /**
56      * Check if using a local filesystem.
57      * @return bool
58      */
59     protected function isLocal()
60     {
61         return strtolower(config('filesystems.default')) === 'local';
62     }
63 }