FeatureController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controllers\Admin\Setting;
  4. use App\Controllers\BaseController;
  5. use App\Models\Setting;
  6. use Exception;
  7. use function json_encode;
  8. final class FeatureController extends BaseController
  9. {
  10. public static array $update_field = [
  11. 'display_media',
  12. 'display_subscribe_log',
  13. 'display_detect_log',
  14. 'display_docs',
  15. 'display_docs_only_for_paid_user',
  16. ];
  17. /**
  18. * @throws Exception
  19. */
  20. public function feature($request, $response, $args)
  21. {
  22. $settings = [];
  23. $settings_raw = Setting::get(['item', 'value', 'type']);
  24. foreach ($settings_raw as $setting) {
  25. if ($setting->type === 'bool') {
  26. $settings[$setting->item] = (bool) $setting->value;
  27. } else {
  28. $settings[$setting->item] = (string) $setting->value;
  29. }
  30. }
  31. return $response->write(
  32. $this->view()
  33. ->assign('update_field', self::$update_field)
  34. ->assign('settings', $settings)
  35. ->fetch('admin/setting/feature.tpl')
  36. );
  37. }
  38. public function saveFeature($request, $response, $args)
  39. {
  40. $list = self::$update_field;
  41. foreach ($list as $item) {
  42. $setting = Setting::where('item', '=', $item)->first();
  43. if ($setting->type === 'array') {
  44. $setting->value = json_encode($request->getParam($item));
  45. } else {
  46. $setting->value = $request->getParam($item);
  47. }
  48. if (! $setting->save()) {
  49. return $response->withJson([
  50. 'ret' => 0,
  51. 'msg' => "保存 {$item} 时出错",
  52. ]);
  53. }
  54. }
  55. return $response->withJson([
  56. 'ret' => 1,
  57. 'msg' => '保存成功',
  58. ]);
  59. }
  60. }