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

Размер файла: 4.77Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Guestbook;
  9. use App\Models\User;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13.  
  14. class GuestbookController extends AdminController
  15. {
  16. /**
  17. * Главная страница
  18. */
  19. public function index(): View
  20. {
  21. $posts = Guestbook::query()
  22. ->orderByDesc('created_at')
  23. ->with('user', 'editUser')
  24. ->paginate(setting('bookpost'));
  25.  
  26. return view('admin/guestbook/index', compact('posts'));
  27. }
  28.  
  29. /**
  30. * Редактирование сообщения
  31. *
  32. * @param int $id
  33. * @param Request $request
  34. * @param Validator $validator
  35. *
  36. * @return View|RedirectResponse
  37. */
  38. public function edit(int $id, Request $request, Validator $validator)
  39. {
  40. $page = int($request->input('page'));
  41. $post = Guestbook::with('user')->find($id);
  42.  
  43. if (! $post) {
  44. abort(404, __('main.message_not_found'));
  45. }
  46.  
  47. if ($request->isMethod('post')) {
  48. $msg = $request->input('msg');
  49.  
  50. $validator->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
  51. ->length($msg, 5, setting('guesttextlength'), ['msg' => __('validator.text')]);
  52.  
  53. if ($validator->isValid()) {
  54. $msg = antimat($msg);
  55.  
  56. $post->update([
  57. 'text' => $msg,
  58. 'edit_user_id' => getUser('id'),
  59. 'updated_at' => SITETIME,
  60. ]);
  61.  
  62. setFlash('success', __('main.message_edited_success'));
  63.  
  64. return redirect('admin/guestbook?page=' . $page);
  65. }
  66.  
  67. setInput($request->all());
  68. setFlash('danger', $validator->getErrors());
  69. }
  70.  
  71. return view('admin/guestbook/edit', compact('post', 'page'));
  72. }
  73.  
  74. /**
  75. * Ответ на сообщение
  76. *
  77. * @param int $id
  78. * @param Request $request
  79. * @param Validator $validator
  80. *
  81. * @return View|RedirectResponse
  82. */
  83. public function reply(int $id, Request $request, Validator $validator)
  84. {
  85. $page = int($request->input('page'));
  86. $post = Guestbook::with('user')->find($id);
  87.  
  88. if (! $post) {
  89. abort(404, __('main.message_not_found'));
  90. }
  91.  
  92. if ($request->isMethod('post')) {
  93. $reply = $request->input('reply');
  94.  
  95. $validator->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
  96. ->length($reply, 5, setting('guesttextlength'), ['msg' => __('validator.text')]);
  97.  
  98. if ($validator->isValid()) {
  99. $post->update([
  100. 'reply' => $reply,
  101. ]);
  102.  
  103. setFlash('success', __('guestbook.answer_success_added'));
  104.  
  105. return redirect('admin/guestbook?page=' . $page);
  106. }
  107.  
  108. setInput($request->all());
  109. setFlash('danger', $validator->getErrors());
  110. }
  111.  
  112. return view('admin/guestbook/reply', compact('post', 'page'));
  113. }
  114.  
  115. /**
  116. * Удаление сообщений
  117. *
  118. * @param Request $request
  119. * @param Validator $validator
  120. *
  121. * @return RedirectResponse
  122. */
  123. public function delete(Request $request, Validator $validator): RedirectResponse
  124. {
  125. $page = int($request->input('page', 1));
  126. $del = intar($request->input('del'));
  127.  
  128. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  129. ->true($del, __('validator.deletion'));
  130.  
  131. if ($validator->isValid()) {
  132. Guestbook::query()->whereIn('id', $del)->delete();
  133.  
  134. clearCache('statGuestbook');
  135. setFlash('success', __('main.messages_deleted_success'));
  136. } else {
  137. setFlash('danger', $validator->getErrors());
  138. }
  139.  
  140. return redirect('admin/guestbook?page=' . $page);
  141. }
  142.  
  143. /**
  144. * Очистка сообщений
  145. *
  146. * @param Request $request
  147. * @param Validator $validator
  148. *
  149. * @return RedirectResponse
  150. */
  151. public function clear(Request $request, Validator $validator): RedirectResponse
  152. {
  153. $validator
  154. ->equal($request->input('_token'), csrf_token(), __('validator.token'))
  155. ->true(isAdmin(User::BOSS), __('main.page_only_owner'));
  156.  
  157. if ($validator->isValid()) {
  158. Guestbook::query()->truncate();
  159. clearCache('statGuestbook');
  160.  
  161. setFlash('success', __('guestbook.messages_success_cleared'));
  162. } else {
  163. setFlash('danger', $validator->getErrors());
  164. }
  165.  
  166. return redirect('admin/guestbook');
  167. }
  168. }