Просмотр файла app/Controllers/Admin/AdvertController.php

Размер файла: 3.17Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Advert;
  9. use Illuminate\Http\Request;
  10.  
  11. class AdvertController extends AdminController
  12. {
  13. /**
  14. * Главная страница
  15. *
  16. * @return string
  17. */
  18. public function index(): string
  19. {
  20. $records = Advert::query()
  21. ->where('deleted_at', '>', SITETIME)
  22. ->orderByDesc('deleted_at')
  23. ->with('user')
  24. ->paginate(setting('rekuserpost'));
  25.  
  26. return view('admin/adverts/index', compact('records'));
  27. }
  28.  
  29. /**
  30. * Редактирование ссылки
  31. *
  32. * @param int $id
  33. * @param Request $request
  34. * @param Validator $validator
  35. *
  36. * @return string
  37. */
  38. public function edit(int $id, Request $request, Validator $validator): string
  39. {
  40. $page = int($request->input('page', 1));
  41. $link = Advert::query()->find($id);
  42.  
  43. if (! $link) {
  44. abort(404, __('main.record_not_found'));
  45. }
  46.  
  47. if ($request->isMethod('post')) {
  48. $site = $request->input('site');
  49. $name = $request->input('name');
  50. $color = $request->input('color');
  51. $bold = empty($request->input('bold')) ? 0 : 1;
  52.  
  53. $validator->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  54. ->regex($site, '|^https?://([а-яa-z0-9_\-\.])+(\.([а-яa-z0-9\/\-?_=#])+)+$|iu', ['site' => __('validator.url')])
  55. ->length($site, 5, 50, ['site' => __('validator.url_text')])
  56. ->length($name, 5, 35, ['name' => __('validator.text')])
  57. ->regex($color, '|^#+[A-f0-9]{6}$|', ['color' => __('validator.color')], false);
  58.  
  59. if ($validator->isValid()) {
  60. $link->update([
  61. 'site' => $site,
  62. 'name' => $name,
  63. 'color' => $color,
  64. 'bold' => $bold,
  65. ]);
  66.  
  67. clearCache('adverts');
  68. setFlash('success', __('main.record_changed_success'));
  69. redirect('/admin/adverts?page=' . $page);
  70. } else {
  71. setInput($request->all());
  72. setFlash('danger', $validator->getErrors());
  73. }
  74. }
  75.  
  76. return view('admin/adverts/edit', compact('link', 'page'));
  77. }
  78.  
  79. /**
  80. * Удаление записей
  81. *
  82. * @param Request $request
  83. * @param Validator $validator
  84. *
  85. * @return void
  86. */
  87. public function delete(Request $request, Validator $validator): void
  88. {
  89. $page = int($request->input('page', 1));
  90. $del = intar($request->input('del'));
  91.  
  92. $validator->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  93. ->true($del, __('validator.deletion'));
  94.  
  95. if ($validator->isValid()) {
  96. Advert::query()->whereIn('id', $del)->delete();
  97.  
  98. clearCache('adverts');
  99. setFlash('success', __('main.records_deleted_success'));
  100. } else {
  101. setFlash('danger', $validator->getErrors());
  102. }
  103.  
  104. redirect('/admin/adverts?page=' . $page);
  105. }
  106. }