<?php
 class elFinderPluginAutoResize extends elFinderPlugin {
 public function __construct($opts) {
 $defaults = array( 'enable' => true, 'maxWidth' => 1024, 'maxHeight' => 1024, 'quality' => 95, 'preserveExif' => false, 'forceEffect' => false, 'targetType' => IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP, 'offDropWith' => null, 'disableWithContentSaveId' => true );
 $this->opts = array_merge($defaults, $opts);
 }
 public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume) {
 $opts = $this->getCurrentOpts($volume);
 if (!$this->iaEnabled($opts, $elfinder)) {
 return false;
 }
 $imageType = null;
 $srcImgInfo = null;
 if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
 $mime = mime_content_type($src);
 if (substr($mime, 0, 5) !== 'image') {
 return false;
 }
 }
 if (extension_loaded('exif') && function_exists('exif_imagetype')) {
 $imageType = exif_imagetype($src);
 if ($imageType === false) {
 return false;
 }
 }
 else {
 $srcImgInfo = getimagesize($src);
 if ($srcImgInfo === false) {
 return false;
 }
 $imageType = $srcImgInfo[2];
 }
 $imgTypes = array( IMAGETYPE_GIF => IMG_GIF, IMAGETYPE_JPEG => IMG_JPEG, IMAGETYPE_PNG => IMG_PNG, IMAGETYPE_BMP => IMG_WBMP, IMAGETYPE_WBMP => IMG_WBMP );
 if (!isset($imgTypes[$imageType]) || !($opts['targetType'] & $imgTypes[$imageType])) {
 return false;
 }
 if (!$srcImgInfo) {
 $srcImgInfo = getimagesize($src);
 }
 if ($opts['forceEffect'] || $srcImgInfo[0] > $opts['maxWidth'] || $srcImgInfo[1] > $opts['maxHeight']) {
 return $this->resize($volume, $src, $srcImgInfo, $opts['maxWidth'], $opts['maxHeight'], $opts['quality'], $opts['preserveExif']);
 }
 return false;
 }
 private function resize($volume, $src, $srcImgInfo, $maxWidth, $maxHeight, $jpgQuality, $preserveExif) {
 $zoom = min(($maxWidth / $srcImgInfo[0]), ($maxHeight / $srcImgInfo[1]));
 $width = round($srcImgInfo[0] * $zoom);
 $height = round($srcImgInfo[1] * $zoom);
 $unenlarge = true;
 $checkAnimated = true;
 return $volume->imageUtil('resize', $src, compact('width', 'height', 'jpgQuality', 'preserveExif', 'unenlarge', 'checkAnimated'));
 }
 }
 