Вход Регистрация
Файл: app/Http/Controllers/User/PictureController.php
Строк: 60
<?php

declare(strict_types=1);

namespace 
AppHttpControllersUser;

use 
AppClassesValidator;
use 
AppHttpControllersController;
use 
AppModelsUser;
use 
IlluminateHttpRedirectResponse;
use 
IlluminateHttpRequest;
use 
IlluminateViewView;
use 
InterventionImageFormat;
use 
InterventionImageImageManager;

class 
PictureController extends Controller
{
    public ?
User $user;

    
/**
     * Конструктор
     */
    
public function __construct()
    {
        
$this->middleware('check.user');

        
$this->middleware(function ($request$next) {
            
$this->user getUser();

            return 
$next($request);
        });
    }

    
/**
     * Главная страница
     */
    
public function index(
        
Request $request,
        
Validator $validator,
        
ImageManager $imageManager,
    ): 
View|RedirectResponse {
        if (
$request->isMethod('post')) {
            
$photo $request->file('photo');

            
$rules = [
                
'maxsize'    => setting('filesize'),
                
'extensions' => explode(','setting('media_extensions')),
                
'minweight'  => 100,
            ];
            
$validator->file($photo$rules, ['photo' => __('validator.image_upload_failed')]);

            if (
$validator->isValid()) {
                
// -------- Удаляем старое фото и аватар ----------//
                
if ($this->user->picture) {
                    
deleteFile(public_path($this->user->picture));
                    
deleteFile(public_path($this->user->avatar));

                    
$this->user->picture null;
                    
$this->user->avatar null;
                    
$this->user->save();
                }

                
// -------- Генерируем аватар -------//
                
$image $imageManager->decode($photo);
                
$image->coverDown(6464);
                
$image->encodeUsingFormat(Format::PNG);

                
$avatar $this->user->uploadAvatarPath '/' uniqueName('png');
                
$image->save(public_path($avatar));

                
// -------- Загружаем фото ----------//
                
$file $this->user->uploadFile($photofalse);

                
$this->user->picture $file['path'];
                
$this->user->avatar $avatar;
                
$this->user->save();

                
setFlash('success'__('users.photo_success_uploaded'));

                return 
redirect('profile');
            }

            return 
redirect('/pictures')
                ->
withErrors($validator->getErrors())
                ->
withInput();
        }

        
$user $this->user;

        return 
view('users/picture'compact('user'));
    }

    
/**
     * Удаление фотографии
     */
    
public function delete(Validator $validator): RedirectResponse
    
{
        if (! 
$this->user->picture) {
            
$validator->addError(__('users.photo_not_exist'));
        }

        if (
$validator->isValid()) {
            
deleteFile(public_path($this->user->picture));
            
deleteFile(public_path($this->user->avatar));

            
$this->user->picture null;
            
$this->user->avatar null;
            
$this->user->save();

            
setFlash('success'__('users.photo_success_deleted'));
        } else {
            
setFlash('danger'$validator->getErrors());
        }

        return 
redirect('profile');
    }
}
Онлайн: 0
Реклама