mirror of https://github.com/pixelfed/pixelfed
Update changelog
parent
73eb9e36fc
commit
ae78129678
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\Avatar;
|
||||
use App\User;
|
||||
use Storage;
|
||||
use App\Util\Lexer\PrettyNumber;
|
||||
|
||||
class AvatarStorage extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'avatar:storage';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Manage avatar storage';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->info('Pixelfed Avatar Storage Manager');
|
||||
$this->line(' ');
|
||||
$segments = [
|
||||
[
|
||||
'Local',
|
||||
Avatar::whereNull('is_remote')->count(),
|
||||
PrettyNumber::size(Avatar::whereNull('is_remote')->sum('size'))
|
||||
],
|
||||
[
|
||||
'Remote',
|
||||
Avatar::whereNotNull('is_remote')->count(),
|
||||
PrettyNumber::size(Avatar::whereNotNull('is_remote')->sum('size'))
|
||||
],
|
||||
[
|
||||
'Cached (CDN)',
|
||||
Avatar::whereNotNull('cdn_url')->count(),
|
||||
PrettyNumber::size(Avatar::whereNotNull('cdn_url')->sum('size'))
|
||||
],
|
||||
[
|
||||
'Uncached',
|
||||
Avatar::whereNull('is_remote')->whereNull('cdn_url')->count(),
|
||||
PrettyNumber::size(Avatar::whereNull('is_remote')->whereNull('cdn_url')->sum('size'))
|
||||
],
|
||||
[
|
||||
'------------',
|
||||
'----------',
|
||||
'-----'
|
||||
],
|
||||
[
|
||||
'Total',
|
||||
Avatar::count(),
|
||||
PrettyNumber::size(Avatar::sum('size'))
|
||||
],
|
||||
];
|
||||
$this->table(
|
||||
['Segment', 'Count', 'Space Used'],
|
||||
$segments
|
||||
);
|
||||
|
||||
$this->line(' ');
|
||||
|
||||
if(config_cache('pixelfed.cloud_storage')) {
|
||||
$this->info('✅ - Cloud storage configured');
|
||||
$this->line(' ');
|
||||
}
|
||||
|
||||
if(config_cache('instance.avatar.local_to_cloud')) {
|
||||
$this->info('✅ - Store avatars on cloud filesystem');
|
||||
$this->line(' ');
|
||||
}
|
||||
|
||||
if(config_cache('pixelfed.cloud_storage') && config_cache('instance.avatar.local_to_cloud')) {
|
||||
$disk = Storage::disk(config_cache('filesystems.cloud'));
|
||||
$exists = $disk->exists('cache/avatars/default.jpg');
|
||||
$state = $exists ? '✅' : '❌';
|
||||
$msg = $state . ' - Cloud default avatar exists';
|
||||
$this->info($msg);
|
||||
}
|
||||
|
||||
$choice = $this->choice(
|
||||
'Select action:',
|
||||
[
|
||||
'Upload default avatar to cloud',
|
||||
'Move local avatars to cloud',
|
||||
'Move cloud avatars to local'
|
||||
],
|
||||
0
|
||||
);
|
||||
|
||||
return $this->handleChoice($choice);
|
||||
}
|
||||
|
||||
protected function handleChoice($id)
|
||||
{
|
||||
switch ($id) {
|
||||
case 'Upload default avatar to cloud':
|
||||
return $this->uploadDefaultAvatar();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected function uploadDefaultAvatar()
|
||||
{
|
||||
$disk = Storage::disk(config_cache('filesystems.cloud'));
|
||||
$disk->put('cache/avatars/default.jpg', Storage::get('public/avatars/default.jpg'));
|
||||
Avatar::whereMediaPath('public/avatars/default.jpg')->update(['cdn_url' => $disk->url('cache/avatars/default.jpg')]);
|
||||
$this->info('Successfully uploaded default avatar to cloud storage!');
|
||||
$this->info($disk->url('cache/avatars/default.jpg'));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue