AdminSettingsController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Artisan, Cache, DB;
  4. use Illuminate\Http\Request;
  5. use Carbon\Carbon;
  6. use App\{Comment, Like, Media, Page, Profile, Report, Status, User};
  7. use App\Http\Controllers\Controller;
  8. use App\Util\Lexer\PrettyNumber;
  9. trait AdminSettingsController
  10. {
  11. public function settings(Request $request)
  12. {
  13. return view('admin.settings.home');
  14. }
  15. public function settingsBackups(Request $request)
  16. {
  17. $path = storage_path('app/'.config('app.name'));
  18. $files = is_dir($path) ? new \DirectoryIterator($path) : [];
  19. return view('admin.settings.backups', compact('files'));
  20. }
  21. public function settingsConfig(Request $request)
  22. {
  23. $editor = config('pixelfed.admin.env_editor');
  24. $config = !$editor ? false : file_get_contents(base_path('.env'));
  25. $backup = !$editor ? false : (is_file(base_path('.env.backup')) ? file_get_contents(base_path('.env.backup')) : false);
  26. return view('admin.settings.config', compact('editor', 'config', 'backup'));
  27. }
  28. public function settingsConfigStore(Request $request)
  29. {
  30. if(config('pixelfed.admin.env_editor') !== true) {
  31. abort(400);
  32. }
  33. $res = $request->input('res');
  34. $old = file_get_contents(app()->environmentFilePath());
  35. if(empty($old) || $old != $res) {
  36. $oldFile = fopen(app()->environmentFilePath().'.backup', 'w');
  37. fwrite($oldFile, $old);
  38. fclose($oldFile);
  39. }
  40. $file = fopen(app()->environmentFilePath(), 'w');
  41. fwrite($file, $res);
  42. fclose($file);
  43. Artisan::call('config:cache');
  44. return ['msg' => 200];
  45. }
  46. public function settingsConfigRestore(Request $request)
  47. {
  48. if(config('pixelfed.admin.env_editor') !== true) {
  49. abort(400);
  50. }
  51. $res = file_get_contents(app()->environmentFilePath().'.backup');
  52. if(empty($res)) {
  53. abort(400, 'No backup exists.');
  54. }
  55. $file = fopen(app()->environmentFilePath(), 'w');
  56. fwrite($file, $res);
  57. fclose($file);
  58. Artisan::call('config:cache');
  59. return ['msg' => 200];
  60. }
  61. public function settingsMaintenance(Request $request)
  62. {
  63. return view('admin.settings.maintenance');
  64. }
  65. public function settingsStorage(Request $request)
  66. {
  67. $storage = [];
  68. return view('admin.settings.storage', compact('storage'));
  69. }
  70. public function settingsFeatures(Request $request)
  71. {
  72. return view('admin.settings.features');
  73. }
  74. public function settingsHomeStore(Request $request)
  75. {
  76. $this->validate($request, [
  77. 'APP_NAME' => 'required|string',
  78. ]);
  79. // Artisan::call('config:clear');
  80. return redirect()->back();
  81. }
  82. public function settingsPages(Request $request)
  83. {
  84. $pages = Page::orderByDesc('updated_at')->paginate(10);
  85. return view('admin.pages.home', compact('pages'));
  86. }
  87. public function settingsPageEdit(Request $request)
  88. {
  89. return view('admin.pages.edit');
  90. }
  91. public function settingsSystem(Request $request)
  92. {
  93. $sys = [
  94. 'pixelfed' => config('pixelfed.version'),
  95. 'php' => phpversion(),
  96. 'laravel' => app()->version(),
  97. ];
  98. switch (config('database.default')) {
  99. case 'pgsql':
  100. $sys['database'] = [
  101. 'name' => 'Postgres',
  102. 'version' => explode(' ', DB::select(DB::raw('select version();'))[0]->version)[1]
  103. ];
  104. break;
  105. case 'mysql':
  106. $sys['database'] = [
  107. 'name' => 'MySQL',
  108. 'version' => DB::select( DB::raw("select version()") )[0]->{'version()'}
  109. ];
  110. break;
  111. default:
  112. $sys['database'] = [
  113. 'name' => 'Unknown',
  114. 'version' => '?'
  115. ];
  116. break;
  117. }
  118. return view('admin.settings.system', compact('sys'));
  119. }
  120. }