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

Размер файла: 4.59Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Ignore;
  9. use App\Models\User;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13.  
  14. class IgnoreController extends Controller
  15. {
  16. /**
  17. * Конструктор
  18. */
  19. public function __construct()
  20. {
  21. $this->middleware('check.user');
  22. }
  23.  
  24. /**
  25. * Главная страница
  26. *
  27. * @param Request $request
  28. * @param Validator $validator
  29. *
  30. * @return View|RedirectResponse
  31. */
  32. public function index(Request $request, Validator $validator)
  33. {
  34. $login = $request->input('user');
  35.  
  36. if ($request->isMethod('post')) {
  37. $page = int($request->input('page', 1));
  38.  
  39. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'));
  40.  
  41. $user = getUserByLogin($login);
  42. $validator->notEmpty($user, ['user' => __('validator.user')]);
  43.  
  44. if ($user) {
  45. $validator->notEqual($user->login, getUser('login'), ['user' => __('ignores.forbidden_yourself')]);
  46.  
  47. $totalIgnore = Ignore::query()->where('user_id', getUser('id'))->count();
  48. $validator->lte($totalIgnore, setting('limitignore'), __('ignores.ignore_full', ['max' => setting('limitignore')]));
  49.  
  50. $validator->false(getUser()->isIgnore($user), ['user' => __('ignores.already_ignore')]);
  51. $validator->notIn($user->level, User::ADMIN_GROUPS, ['user' => __('ignores.forbidden_admins')]);
  52. }
  53.  
  54. if ($validator->isValid()) {
  55. Ignore::query()->create([
  56. 'user_id' => getUser('id'),
  57. 'ignore_id' => $user->id,
  58. 'created_at' => SITETIME,
  59. ]);
  60.  
  61. if (! $user->isIgnore(getUser())) {
  62. $text = textNotice('ignore', ['login' => getUser('login')]);
  63. $user->sendMessage(null, $text);
  64. }
  65.  
  66. setFlash('success', __('ignores.success_added'));
  67.  
  68. return redirect('ignores?page=' . $page);
  69. }
  70.  
  71. setInput($request->all());
  72. setFlash('danger', $validator->getErrors());
  73. }
  74.  
  75. $ignores = Ignore::query()
  76. ->where('user_id', getUser('id'))
  77. ->orderByDesc('created_at')
  78. ->with('ignoring')
  79. ->paginate(setting('ignorlist'));
  80.  
  81. return view('ignores/index', compact('ignores', 'login'));
  82. }
  83.  
  84. /**
  85. * Заметка для пользователя
  86. *
  87. * @param int $id
  88. * @param Request $request
  89. * @param Validator $validator
  90. *
  91. * @return View|RedirectResponse
  92. */
  93. public function note(int $id, Request $request, Validator $validator)
  94. {
  95. $ignore = Ignore::query()
  96. ->where('user_id', getUser('id'))
  97. ->where('id', $id)
  98. ->first();
  99.  
  100. if (! $ignore) {
  101. abort(404, __('main.record_not_found'));
  102. }
  103.  
  104. if ($request->isMethod('post')) {
  105. $msg = $request->input('msg');
  106.  
  107. $validator->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
  108. ->length($msg, 0, 1000, ['msg' => __('users.note_to_big')]);
  109.  
  110. if ($validator->isValid()) {
  111. $ignore->update([
  112. 'text' => $msg,
  113. ]);
  114.  
  115. setFlash('success', __('users.note_saved_success'));
  116.  
  117. return redirect('ignores');
  118. }
  119.  
  120. setInput($request->all());
  121. setFlash('danger', $validator->getErrors());
  122. }
  123.  
  124. return view('ignores/note', compact('ignore'));
  125. }
  126.  
  127. /**
  128. * Удаление контактов
  129. *
  130. * @param Request $request
  131. * @param Validator $validator
  132. *
  133. * @return RedirectResponse
  134. */
  135. public function delete(Request $request, Validator $validator): RedirectResponse
  136. {
  137. $page = int($request->input('page', 1));
  138. $del = intar($request->input('del'));
  139.  
  140. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  141. ->true($del, __('validator.deletion'));
  142.  
  143. if ($validator->isValid()) {
  144. Ignore::query()
  145. ->where('user_id', getUser('id'))
  146. ->whereIn('id', $del)
  147. ->delete();
  148.  
  149. setFlash('success', __('main.records_deleted_success'));
  150. } else {
  151. setFlash('danger', $validator->getErrors());
  152. }
  153.  
  154. return redirect('ignores?page=' . $page);
  155. }
  156. }