Snippets

CompAero ImageThumbOnUpload

Created by mvoevodskiy NA
<?php
switch ($modx->event->name) {
    case 'OnFileManagerUpload':
        foreach($files as $f){
      
            // $modx->log(1, 'file: '.print_r($f,1));
            $addDir = '';
            if (isset($_POST['p_id']) and isset($_POST['tv_id'])) $addDir = date('Y').'/'.date('m').'/'.$_POST['p_id'].'/';
            $currentdoc = $modx->newObject('modResource');
            $f['name'] = $currentdoc->cleanAlias($f['name']);
              
            if(explode("/",$f['type'])[0]=="image"){
                $thms=$modx->fromJSON($thumbs);
                foreach($thms as $thumb){
                    //Directory check
                    //$modx->log(MODx::LOG_LEVEL_ERROR,print_r($source->toArray(),true));
                    if($source){
                        $arr=$source->toArray();
                        $directory=$arr['properties']['basePath']['value'];
                        if ($source->id == 16) $directory .= $addDir;
                    }
                    if (!file_exists(MODX_BASE_PATH.$directory.$thumb['name'])) {
                         mkdir(MODX_BASE_PATH.$directory.$thumb['name'], 0775, true);
                    }
        
                    if (!class_exists('modPhpThumb')) {
            			/** @noinspection PhpIncludeInspection */
            			require MODX_CORE_PATH . 'model/phpthumb/modphpthumb.class.php';
            		}
            		$phpThumb = new modPhpThumb($modx);
            		$phpThumb->initialize();
        
                    // Указываем исходник
                    $phpThumb->setSourceFilename(str_replace('//', '/', MODX_BASE_PATH.$directory.$f['name']));
                    
                    // Выставляем параметры
                    foreach ($thumb['props'] as $k => $v) {
                    	$phpThumb->setParameter($k, $v);
                    }
                    
                    // Генерируем уменьшенную копию
                    if ($phpThumb->GenerateThumbnail()) {
                    	if (!$phpThumb->renderToFile(MODX_BASE_PATH.$directory.$thumb['name']."/".$f['name'])) {
                    		$modx->log(modX::LOG_LEVEL_ERROR, 'Could not save rendered image to'.MODX_BASE_PATH.$directory.$thumb['name']."/".$f['name']);
                    	}
                    	
                    
                    }
                    else {
                    	// Если возникла ошибка - пишем лог работы в журнал MODX
                    	$modx->log(modX::LOG_LEVEL_ERROR, print_r($phpThumb->debugmessages, 1));
                    }
        
                }
            }
        }
        break;
        
    case 'OnMODXInit':
        if (empty($_FILES)) return;
        foreach ($_FILES as &$file) {
            $currentdoc = $modx->newObject('modResource');
            $file['name'] =  str_replace(' ', '-', $currentdoc->cleanAlias($file['name']));
        }
        break;
        
    
 
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.