* Required: PhpThumbOf snippet for resizing images */ if ($modx->event->name != 'OnFileManagerUpload') {return;} /* Settings */ $config = array( '/' => array( // default config 'w' => 800 // max width of uploaded images ,'h' => 600 // max height of uploaded images ,'zc' => 0 // zoom & crop ,'bg' => '#fff' // backgroud, needed only for zc=0 ,'q' => 100 // quality ) //,'/assets/images/' => array() ); /*----------*/ $file = $modx->event->params['files']['file']; $directory = $modx->event->params['directory']; if ($file['error'] != 0) {return;} $name = $file['name']; $extensions = explode(',', $modx->getOption('upload_images')); if (array_key_exists($directory, $config)) { $config = $config[$directory]; } else { $config = $config['/']; } $filename = MODX_BASE_PATH . $directory . $name; $ext = substr(strrchr($name, '.'), 1); if (in_array($ext, $extensions)) { $sizes = getimagesize($filename); $format = substr($sizes['mime'],6); if ($sizes[0] > $config['w'] || $sizes[1] > $config['h']) { if ($sizes[0] < $config['w']) {$config['w'] = $sizes[0];} if ($sizes[1] < $config['h']) {$config['h'] = $sizes[1];} $options = ''; foreach ($config as $k => $v) { $options .= '&'.$k.'='.$v; } $resized = $modx->runSnippet('PhpThumbOf', array( 'input' => $directory.$name ,'options' => $options )); rename(MODX_BASE_PATH . substr($resized, 1), $filename); } } // source: https://bezumkin.ru/sections/components/118/