Просмотр файла app/Controllers/User/PictureController.php

Размер файла: 3.31Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\User;
  6.  
  7. use App\Classes\Validator;
  8. use App\Controllers\BaseController;
  9. use App\Models\User;
  10. use Illuminate\Http\Request;
  11. use Intervention\Image\ImageManagerStatic as Image;
  12.  
  13. class PictureController extends BaseController
  14. {
  15. /**
  16. * @var User
  17. */
  18. public $user;
  19.  
  20. /**
  21. * Конструктор
  22. */
  23. public function __construct()
  24. {
  25. parent::__construct();
  26.  
  27. if (! $this->user = getUser()) {
  28. abort(403, __('main.not_authorized'));
  29. }
  30. }
  31.  
  32. /**
  33. * Главная страница
  34. *
  35. * @param Request $request
  36. * @param Validator $validator
  37. * @return string
  38. */
  39. public function index(Request $request, Validator $validator): string
  40. {
  41. if ($request->isMethod('post')) {
  42. $photo = $request->file('photo');
  43.  
  44. $validator->equal($request->input('token'), $_SESSION['token'], ['photo' => __('validator.token')]);
  45.  
  46. $rules = [
  47. 'maxsize' => setting('filesize'),
  48. 'minweight' => 100,
  49. ];
  50. $validator->file($photo, $rules, ['photo' => __('validator.image_upload_failed')]);
  51.  
  52. if ($validator->isValid()) {
  53. //-------- Удаляем старую фотку и аватар ----------//
  54. if ($this->user->picture) {
  55. deleteFile(HOME . $this->user->picture);
  56. deleteFile(HOME . $this->user->avatar);
  57.  
  58. $this->user->picture = null;
  59. $this->user->avatar = null;
  60. $this->user->save();
  61. }
  62.  
  63. //-------- Генерируем аватар ----------//
  64. $avatar = $this->user->uploadAvatarPath . '/' . uniqueName('png');
  65. $img = Image::make($photo);
  66. $img->fit(64);
  67. $img->save($avatar);
  68.  
  69. $file = $this->user->uploadFile($photo, false);
  70.  
  71. $this->user->picture = $file['path'];
  72. $this->user->avatar = str_replace(HOME, '', $avatar);
  73. $this->user->save();
  74.  
  75. setFlash('success', __('users.photo_success_uploaded'));
  76. redirect('/profile');
  77. }
  78.  
  79. setInput($request->all());
  80. setFlash('danger', $validator->getErrors());
  81. }
  82.  
  83. $user = $this->user;
  84. return view('users/picture', compact('user'));
  85. }
  86.  
  87. /**
  88. * Удаление фотографии
  89. *
  90. * @param Request $request
  91. * @param Validator $validator
  92. */
  93. public function delete(Request $request, Validator $validator): void
  94. {
  95. $validator->equal($request->input('token'), $_SESSION['token'], ['photo' => __('validator.token')]);
  96.  
  97. if (! $this->user->picture) {
  98. $validator->addError(__('users.photo_not_exist'));
  99. }
  100.  
  101. if ($validator->isValid()) {
  102. deleteFile(HOME . $this->user->picture);
  103. deleteFile(HOME . $this->user->avatar);
  104.  
  105. $this->user->picture = null;
  106. $this->user->avatar = null;
  107. $this->user->save();
  108.  
  109. setFlash('success', __('users.photo_success_deleted'));
  110. } else {
  111. setFlash('danger', $validator->getErrors());
  112. }
  113.  
  114. redirect('/profile');
  115. }
  116. }