mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-10 08:44:49 +00:00
135 lines
4.2 KiB
PHP
135 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use Artisan, Cache, DB;
|
|
use Illuminate\Http\Request;
|
|
use Carbon\Carbon;
|
|
use App\{Comment, Like, Media, Page, Profile, Report, Status, User};
|
|
use App\Http\Controllers\Controller;
|
|
use Jackiedo\DotenvEditor\Facades\DotenvEditor;
|
|
use App\Util\Lexer\PrettyNumber;
|
|
|
|
trait AdminSettingsController
|
|
{
|
|
public function settings(Request $request)
|
|
{
|
|
return view('admin.settings.home');
|
|
}
|
|
|
|
public function settingsBackups(Request $request)
|
|
{
|
|
$path = storage_path('app/PixelFed');
|
|
$files = new \DirectoryIterator($path);
|
|
return view('admin.settings.backups', compact('files'));
|
|
}
|
|
|
|
public function settingsConfig(Request $request, DotenvEditor $editor)
|
|
{
|
|
return view('admin.settings.config', compact('editor'));
|
|
}
|
|
|
|
public function settingsMaintenance(Request $request)
|
|
{
|
|
return view('admin.settings.maintenance');
|
|
}
|
|
|
|
public function settingsStorage(Request $request)
|
|
{
|
|
$databaseSum = Cache::remember('admin:settings:storage:db:storageUsed', now()->addMinutes(360), function() {
|
|
$q = 'SELECT sum(ROUND(((data_length + index_length)), 0)) AS size FROM information_schema.TABLES WHERE table_schema = ?';
|
|
$db = config('database.default');
|
|
$db = config("database.connections.{$db}.database");
|
|
return DB::select($q, [$db])[0]->size;
|
|
});
|
|
$mediaSum = Cache::remember('admin:settings:storage:media:storageUsed', now()->addMinutes(360), function() {
|
|
return Media::sum('size');
|
|
});
|
|
$backupSum = Cache::remember('admin:settings:storage:backups:storageUsed', now()->addMinutes(360), function() {
|
|
$dir = storage_path('app/'.config('app.name'));
|
|
$size = 0;
|
|
foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {
|
|
$size += is_file($each) ? filesize($each) : folderSize($each);
|
|
}
|
|
return $size;
|
|
});
|
|
$storage = new \StdClass;
|
|
$storage->total = disk_total_space(base_path());
|
|
$storage->free = disk_free_space(base_path());
|
|
$storage->prettyTotal = PrettyNumber::size($storage->total, false, false);
|
|
$storage->prettyFree = PrettyNumber::size($storage->free, false, false);
|
|
$storage->percentFree = ceil($storage->free / $storage->total * 100);
|
|
$storage->percentUsed = ceil(100 - $storage->percentFree);
|
|
$storage->media = [
|
|
'used' => $mediaSum,
|
|
'prettyUsed' => PrettyNumber::size($mediaSum),
|
|
'percentUsed' => ceil($mediaSum / $storage->total * 100)
|
|
];
|
|
$storage->backups = [
|
|
'used' => $backupSum
|
|
];
|
|
$storage->database = [
|
|
'used' => $databaseSum
|
|
];
|
|
return view('admin.settings.storage', compact('storage'));
|
|
}
|
|
|
|
public function settingsFeatures(Request $request)
|
|
{
|
|
return view('admin.settings.features');
|
|
}
|
|
|
|
public function settingsHomeStore(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'APP_NAME' => 'required|string',
|
|
]);
|
|
Artisan::call('config:clear');
|
|
DotenvEditor::setKey('APP_NAME', $request->input('APP_NAME'));
|
|
DotenvEditor::save();
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function settingsPages(Request $request)
|
|
{
|
|
$pages = Page::orderByDesc('updated_at')->paginate(10);
|
|
return view('admin.pages.home', compact('pages'));
|
|
}
|
|
|
|
public function settingsPageEdit(Request $request)
|
|
{
|
|
return view('admin.pages.edit');
|
|
}
|
|
|
|
public function settingsSystem(Request $request)
|
|
{
|
|
$sys = [
|
|
'pixelfed' => config('pixelfed.version'),
|
|
'php' => phpversion(),
|
|
'redis' => explode(' ',exec('redis-cli -v'))[1],
|
|
];
|
|
switch (config('database.default')) {
|
|
case 'pgsql':
|
|
$sys['database'] = [
|
|
'name' => 'Postgres',
|
|
'version' => explode(' ', DB::select(DB::raw('select version();'))[0]->version)[1]
|
|
];
|
|
break;
|
|
|
|
case 'mysql':
|
|
$sys['database'] = [
|
|
'name' => 'MySQL',
|
|
'version' => DB::select( DB::raw("select version()") )[0]->{'version()'}
|
|
];
|
|
break;
|
|
|
|
default:
|
|
$sys['database'] = [
|
|
'name' => 'Unknown',
|
|
'version' => '?'
|
|
];
|
|
break;
|
|
}
|
|
return view('admin.settings.system', compact('sys'));
|
|
}
|
|
} |