diff --git a/app/Http/Controllers/Admin/AdminSettingsController.php b/app/Http/Controllers/Admin/AdminSettingsController.php new file mode 100644 index 000000000..708fa3121 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminSettingsController.php @@ -0,0 +1,114 @@ +size; + }); + $mediaSum = Cache::remember('admin:settings:storage:media:storageUsed', 360, function() { + return Media::sum('size'); + }); + $backupSum = Cache::remember('admin:settings:storage:backups:storageUsed', 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'), + 'mysql' => DB::select( DB::raw("select version()") )[0]->{'version()'}, + 'php' => phpversion(), + 'redis' => explode(' ',exec('redis-cli -v'))[1], + ]; + return view('admin.settings.system', compact('sys')); + } +} \ No newline at end of file