Вход Регистрация
Файл: system/controllers/images/actions/upload.php
Строк: 56
<?php

class actionImagesUpload extends cmsAction {

    public function 
run($name){

        if (!
$this->cms_user->is_logged) {
            return 
$this->cms_template->renderJSON(array(
                
'success' => false,
                
'error'   => 'auth error'
            
));
        }

        
// Разрешаем загрузку по ссылке
        // устанавливаем разрешенные типы изображений
        
$this->cms_uploader->enableRemoteUpload()->setAllowedMime($this->allowed_mime);

        
cmsEventsManager::hook('images_before_upload', array($name$this->cms_uploader), null$this->request);

        
// Непосредственно загружаем
        
$result $this->cms_uploader->upload($name);

        
// Начинаем работу с изображением
        
if ($result['success']){

            try {
                
$image = new cmsImages($result['path']);
            } catch (
Exception $exc) {
                
$result['success'] = false;
                
$result['error']   = LANG_UPLOAD_ERR_MIME;
            }

        }

        
// Не получилось, удаляем исходник, показываем ошибку
        
if (!$result['success']){
            if(!empty(
$result['path'])){
                
files_delete_file($result['path'], 2);
            }
            return 
$this->cms_template->renderJSON($result);
        }

        
// Переданные пресеты
        
$sizes $this->request->get('sizes''');
        
// Желаемое имя файла
        
$file_name $this->request->get('file_name''');

        if (!empty(
$sizes) && preg_match('/([a-z0-9_,]+)$/i'$sizes)){
            
$sizes explode(','$sizes);
        } else {
            
$sizes array_keys((array)$this->model->getPresetsList());
            
$sizes[] = 'original';
        }

        
// Результирующий массив изображений после конвертации
        
$result['paths'] = [];

        
// Дополняем оригиналом, если нужно
        
if (in_array('original'$sizestrue)){
            
$result['paths']['original'] = array(
                
'path' => $result['url'],
                
'url'  => $this->cms_config->upload_host '/' $result['url']
            );
        }

        
// Получаем пресеты
        
$presets $this->model->orderByList(array(
            [
'by' => 'is_square''to' => 'asc'],
            [
'by' => 'width''to' => 'desc']
        ))->
getPresets();

        list(
$result$presets$sizes) = cmsEventsManager::hook('images_after_upload', array($result$presets$sizes), null$this->request);

        
$file_context = [
            
'target_controller' => $this->request->get('target_controller'''),
            
'target_subject'    => $this->request->get('target_subject'''),
            
'target_id'         => $this->request->get('target_id'0)
        ];

        
// Создаём изображения по пресетам
        
foreach($presets as $p){

            if (!
in_array($p['name'], $sizestrue)){
                continue;
            }

            
$resized_path $image->resizeByPreset($p$file_name);

            if (!
$resized_path) { continue; }

            
$result['paths'][$p['name']] = [
                
'path' => $resized_path,
                
'url'  => $this->cms_config->upload_host '/' $resized_path
            
];

            if(
$file_context['target_controller']){
                
$this->registerUploadFile($file_context);
            }

            
$this->registerFile(['path' => $resized_path]);
        }

        list(
$result$presets$sizes) = cmsEventsManager::hook('images_after_resize', array($result$presets$sizes), null$this->request);

        if (!
in_array('original'$sizestrue)){
            
files_delete_file($result['path'], 2);
        }

        if (
$this->request->isInternal()){
            return 
$result;
        }

        unset(
$result['path']);

        return 
$this->cms_template->renderJSON($result);
    }

}
Онлайн: 1
Реклама