Вход Регистрация
Файл: modules/album/includes/image_upload.php
Строк: 106
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

use 
InterventionImageImageManager;

defined('_IN_JOHNCMS') || die('Error: restricted access');

/**
 * @var PDO $db
 * @var JohncmsSystemLegacyTools $tools
 * @var JohncmsSystemUsersUser $user
 * @var JohncmsSystemHttpRequest $request
 * @var JohncmsNavChain $nav_chain
 */

$config = di('config')['johncms'];

$data = [];
$title = __('Upload image');
// Выгрузка фотографии
if (($al && $foundUser['id'] === $user->id && empty($user->ban)) || $user->rights >= 7) {
    
$nav_chain->add($title);
    
$req_a = $db->query("SELECT * FROM `cms_album_cat` WHERE `id` = '${al}' AND `user_id` = " . $foundUser['id']);
    if (! 
$req_a->rowCount()) {
        
// Если альбома не существует, завершаем скрипт
        
echo $view->render(
            
'system::pages/result',
            [
                
'title'    => $title,
                
'type'     => 'alert-danger',
                
'message'  => __('Wrong data'),
                
'back_url' => '/album/',
            ]
        );
        exit;
    }

    
$res_a = $req_a->fetch();
    if (
$request->getMethod() === 'POST') {
        
/** @var ImageManager $image_manager */
        
$image_manager = di(ImageManager::class);

        
$files = $request->getUploadedFiles();
        
/** @var GuzzleHttpPsr7UploadedFile $file */
        
$file = $files['imagefile'];

        if (
$file->getSize() > 1024 * $config['flsz']) {
            
$error[] = __('The weight of the file exceeds') . ' ' . $config['flsz'] . 'kb.';
        }

        
$dir = UPLOAD_PATH . 'users/album/' . $foundUser['id'] . '/';
        
$original_file = 'img_' . time() . '.jpg';
        
$tmb_file = 'tmb_' . time() . '.jpg';

        
$image_uploaded = false;
        if (empty(
$error) && (is_dir($dir) || mkdir($dir, 0777) || is_dir($dir))) {
            try {
                
// Сохраняем оригинал
                
$img = $image_manager->make($file->getStream());
                
$img->resize(
                    
1920,
                    
1080,
                    static function (
$constraint) {
                        
/** @var $constraint InterventionImageConstraint */
                        
$constraint->aspectRatio();
                        
$constraint->upsize();
                    }
                );

                
$img->save($dir . '/' . $original_file, 100, 'jpg');

                
$width = 400;
                
$height = 300;
                
// Создаем превью
                
$resized = $image_manager->make($file->getStream())->resize(
                    
$width,
                    
$height,
                    static function (
$constraint) {
                        
/** @var $constraint InterventionImageConstraint */
                        
$constraint->aspectRatio();
                        
$constraint->upsize();
                    }
                );

                
// Создаем подложку для картинки и помещаем в неё сжатую до нужных размеров копию
                
$bg = $img->fit($width, $height)
                    ->
blur(20)
                    ->
insert($resized, 'center');

                
$bg->save($dir . '/' . $tmb_file, 100, 'jpg');

                
$description = $request->getPost('description', '');
                
$description = mb_substr($description, 0, 1500);

                
$db->prepare(
                    
'
                      INSERT INTO `cms_album_files` SET
                      `album_id` = ?,
                      `user_id` = ?,
                      `img_name` = ?,
                      `tmb_name` = ?,
                      `description` = ?,
                      `time` = ?,
                      `access` = ?
                    '
                
)->execute(
                    [
                        
$al,
                        
$foundUser['id'],
                        
$original_file,
                        
$tmb_file,
                        
$description,
                        
time(),
                        
$res_a['access'],
                    ]
                );

                echo 
$view->render(
                    
'system::pages/result',
                    [
                        
'title'         => $title,
                        
'type'          => 'alert-success',
                        
'message'       => __('Image uploaded'),
                        
'back_url'      => './show?al=' . $al . '&amp;user=' . $foundUser['id'],
                        
'back_url_name' => __('Continue'),
                    ]
                );
                exit;
            } catch (
Exception $exception) {
                
$error[] = $exception->getMessage();
            }
        }
    }
    
$data['action_url'] = './image_upload?al=' . $al . '&amp;user=' . $foundUser['id'];
    
$data['back_url'] = './show?al=' . $al . '&amp;user=' . $foundUser['id'];
    
$data['error_message'] = $error ?? [];
    echo 
$view->render(
        
'album::add_photo',
        [
            
'title'      => $title,
            
'page_title' => $title,
            
'data'       => $data,
        ]
    );
} else {
    
// У пользователя не достаточно прав - завершаем скрипт
    
echo $view->render(
        
'system::pages/result',
        [
            
'title'    => $title,
            
'type'     => 'alert-danger',
            
'message'  => __('Wrong data'),
            
'back_url' => '/album/',
        ]
    );
    exit;
}
Онлайн: 2
Реклама