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

Размер файла: 2.45Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\User;
  9. use Illuminate\Http\Request;
  10.  
  11. class DelUserController extends AdminController
  12. {
  13. /**
  14. * Конструктор
  15. */
  16. public function __construct()
  17. {
  18. parent::__construct();
  19.  
  20. if (! isAdmin(User::BOSS)) {
  21. abort(403, __('errors.forbidden'));
  22. }
  23. }
  24.  
  25. /**
  26. * Главная страница
  27. *
  28. * @param Request $request
  29. *
  30. * @return string
  31. */
  32. public function index(Request $request): string
  33. {
  34. $users = collect();
  35. $period = int($request->input('period'));
  36. $point = int($request->input('point'));
  37.  
  38. if ($request->isMethod('post')) {
  39. if ($period < 180) {
  40. abort('default', __('admin.delusers.invalid_period'));
  41. }
  42.  
  43. $users = User::query()
  44. ->where('updated_at', '<', strtotime('-' . $period . ' days', SITETIME))
  45. ->where('point', '<=', $point)
  46. ->get();
  47.  
  48. if ($users->isEmpty()) {
  49. abort('default', __('admin.delusers.users_not_found'));
  50. }
  51. }
  52.  
  53. $total = User::query()->count();
  54.  
  55. return view('admin/delusers/index', compact('users', 'total', 'period', 'point'));
  56. }
  57.  
  58. /**
  59. * Очистка пользователей
  60. *
  61. * @param Request $request
  62. * @param Validator $validator
  63. *
  64. * @return void
  65. */
  66. public function clear(Request $request, Validator $validator): void
  67. {
  68. $period = int($request->input('period'));
  69. $point = int($request->input('point'));
  70.  
  71. $validator
  72. ->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  73. ->gte($period, 180, __('admin.delusers.invalid_period'));
  74.  
  75. $users = User::query()
  76. ->where('updated_at', '<', strtotime('-' . $period . ' days', SITETIME))
  77. ->where('point', '<=', $point)
  78. ->get();
  79.  
  80. $validator->true($users->isNotEmpty(), __('admin.delusers.users_not_found'));
  81.  
  82. if ($validator->isValid()) {
  83. foreach ($users as $user) {
  84. $user->deleteAlbum();
  85. $user->delete();
  86. }
  87.  
  88. setFlash('success', __('admin.delusers.success_deleted'));
  89. } else {
  90. setFlash('danger', $validator->getErrors());
  91. }
  92.  
  93. redirect('/admin/delusers');
  94. }
  95. }