Skip to content

Commit

Permalink
Use cms.storage.uploads.disk instead of filesystem.default
Browse files Browse the repository at this point in the history
Fixes #3332.
FileUpload widget uploads file to the disk specified by default in config/filesystem.php instead of storage.uploads.disk in config/cms.php, if we use System\Models\File following the instruction in here.
Although we can still create another class extending System\Models\File or October\Rain\Database\Attach\File and use it as the model for attachOne/Many relation, System\Models\File seems to be the one that responsible to look at storage.uploads.disk in config/cms.php, because the existing methods are using storage.uploads.*.
Credit to @pikanji
  • Loading branch information
pikanji authored and Luke Towers committed Jan 1, 2018
1 parent 1389f77 commit 54ab6f0
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions modules/system/models/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

use Url;
use Config;
use File as FileHelper;
use Storage;
use October\Rain\Database\Attach\File as FileBase;

/**
Expand Down Expand Up @@ -56,4 +58,23 @@ public function getStorageDirectory()
return $uploadsFolder . '/protected/';
}
}

/**
* Returns true if storage.uploads.disk in config/cms.php is "local".
* @return bool
*/
protected function isLocalStorage()
{
return Config::get('cms.storage.uploads.disk') == 'local';
}

/**
* Copy the local file to Storage
* @return bool True on success, false on failure.
*/
protected function copyLocalToStorage($localPath, $storagePath)
{
$disk = Storage::disk(Config::get('cms.storage.uploads.disk'));
return $disk->put($storagePath, FileHelper::get($localPath), ($this->isPublic()) ? 'public' : null);
}
}

0 comments on commit 54ab6f0

Please sign in to comment.