Вход Регистрация
Файл: 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(64, 64);
                
$image->encodeUsingFormat(Format::PNG);

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

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

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

                return 
redirect('profile')
                    ->
with('success', __('users.photo_success_uploaded'));
            }

            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()) {
            return 
redirect('profile')
                ->
withErrors($validator->getErrors());
        }

        
deleteFile(public_path($this->user->picture));
        
deleteFile(public_path($this->user->avatar));

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

        return 
redirect('profile')
            ->
with('success', __('users.photo_success_deleted'));
    }
}
Онлайн: 2
Реклама