115 lines
2.7 KiB
PHP
Raw Normal View History

2014-05-14 23:24:20 +10:00
<?php namespace System\Models;
use Url;
2014-05-14 23:24:20 +10:00
use Config;
use File as FileHelper;
use Storage;
2014-05-14 23:24:20 +10:00
use October\Rain\Database\Attach\File as FileBase;
2019-01-16 12:29:28 -06:00
use Backend\Controllers\Files;
2014-05-14 23:24:20 +10:00
/**
* File attachment model
*
* @package october\system
* @author Alexey Bobkov, Samuel Georges
*/
class File extends FileBase
{
/**
* @var string The database table used by the model.
*/
protected $table = 'system_files';
/**
* {@inheritDoc}
*/
public function getThumb($width, $height, $options = [])
{
$url = '';
2019-01-16 12:29:28 -06:00
if (!$this->isPublic() && class_exists(Files::class)) {
$options = $this->getDefaultThumbOptions($options);
// Ensure that the thumb exists first
parent::getThumb($width, $height, $options);
// Return the Files controller handler for the URL
2019-01-16 12:29:28 -06:00
$url = Files::getThumbUrl($this, $width, $height, $options);
} else {
$url = parent::getThumb($width, $height, $options);
}
return $url;
}
/**
* {@inheritDoc}
*/
public function getPath($fileName = null)
{
$url = '';
2019-01-16 12:29:28 -06:00
if (!$this->isPublic() && class_exists(Files::class)) {
$url = Files::getDownloadUrl($this);
} else {
$url = parent::getPath($fileName);
}
return $url;
}
/**
* If working with local storage, determine the absolute local path.
*/
protected function getLocalRootPath()
{
2016-01-15 10:07:39 +01:00
return Config::get('filesystems.disks.local.root', storage_path('app'));
}
2014-05-14 23:24:20 +10:00
/**
* Define the public address for the storage path.
*/
public function getPublicPath()
2014-05-14 23:24:20 +10:00
{
$uploadsPath = Config::get('cms.storage.uploads.path', '/storage/app/uploads');
2014-10-18 11:58:50 +02:00
if ($this->isPublic()) {
$uploadsPath .= '/public';
}
else {
$uploadsPath .= '/protected';
2014-10-18 11:58:50 +02:00
}
return Url::asset($uploadsPath) . '/';
2014-05-14 23:24:20 +10:00
}
/**
* Define the internal storage path.
*/
public function getStorageDirectory()
{
$uploadsFolder = Config::get('cms.storage.uploads.folder');
if ($this->isPublic()) {
return $uploadsFolder . '/public/';
}
2018-08-15 19:25:42 +02:00
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';
}
/**
* Returns the storage disk the file is stored on
* @return FilesystemAdapter
*/
public function getDisk()
{
return Storage::disk(Config::get('cms.storage.uploads.disk'));
}
2014-05-14 23:24:20 +10:00
}