public static function &get_uploader($prefix = '', $destdir = '')
 {
     $mod = cge_utils::get_cge();
     $obj = new cge_uploader($prefix, $destdir);
     $obj->set_accepted_filetypes($mod->GetPreference('alloweduploadfiles'));
     $obj->set_accepted_imagetypes($mod->GetPreference('imageextensions'));
     $obj->set_preview($mod->GetPreference('allow_resizing', 0));
     $obj->set_preview_size($mod->GetPreference('resizeimage', 0));
     $obj->set_watermark($mod->GetPreference('allow_watermarking', 0));
     $obj->set_thumbnail($mod->GetPreference('allow_thumbnailing', 0));
     $obj->set_thumbnail_size($mod->GetPreference('thumbnailsize'));
     $obj->set_delete_orig($mod->GetPreference('delete_orig_image'));
     return $obj;
 }
 public static function transform_image($srcSpec, $destSpec, $size = '')
 {
     $config = cmsms()->GetConfig();
     require_once $config['root_path'] . '/lib/filemanager/ImageManager/Classes/Transform.php';
     if ($size == '') {
         $cge = cge_utils::get_cge();
         $size = $cge->GetPreference('thumbnailsize');
     }
     $it = new Image_Transform();
     $img = $it->factory($config['image_manipulation_prog']);
     $img->load($srcSpec);
     if ($img->img_x < $img->img_y) {
         $long_axis = $img->img_y;
     } else {
         $long_axis = $img->img_x;
     }
     if ($long_axis > $size) {
         $img->scaleByLength($size);
         $img->save($destSpec, 'jpeg');
     } else {
         $img->save($destSpec, 'jpeg');
     }
     $img->free();
 }
 /**
  * Resize an image to have the specifified number of pixels in the logest dimension while retaining aspect ratio.
  *
  * @param string $srcSpec The complete path to the input file.
  * @param string $destSpec The complete path to the output file.
  * @param int $size The maximum size of the longest dimension of the image (in pixels).
  */
 public static function transform_image($srcSpec, $destSpec, $size = null)
 {
     if (!file_exists($srcSpec)) {
         throw new \CmsInvalidDataException('File ' . $srcSpec . ' not found');
     }
     if (!is_readable($srcSpec)) {
         throw new \CmsInvalidDataException('File ' . $srcSpec . ' is not readable');
     }
     $destdir = dirname($destSpec);
     if (!is_writable($destdir)) {
         throw new \CmsInvalidDataException($destdir . ' is not writable');
     }
     if (file_exists($destSpec) && !is_writable($destSpec)) {
         throw new \CmsInvalidDataException($destSpec . ' exists, but cannot be overwritten.');
     }
     $imginfo = getimagesize($srcSpec);
     if ($imginfo === FALSE) {
         throw new \RuntimeException($srcSpec . ' is not a valid image file (could not get dimensions)');
     }
     if ($size < 1) {
         // get a default thumbnail size.
         $cge = cge_utils::get_cge();
         $size = (int) $cge->GetPreference('thumbnailsize');
     }
     // calculate new sizes.
     $new_w = $new_h = 0;
     if ($imginfo[0] >= $imginfo[1]) {
         // image is taller than wide
         $new_w = $size;
         $new_h = round($new_w / $imginfo[0] * $imginfo[1], 0);
     } else {
         $new_h = $size;
         $new_w = round($new_h / $imginfo[1] * $imginfo[0], 0);
     }
     self::resize($srcSpec, $destSpec, $new_w, $new_h);
 }
 /**
  * Geerate tags (such as stylesheet tags) that are required for the HEAD portion of the HTML output.
  *
  * @return string The HTML tags to go into the HEAD portion.
  */
 protected function get_head_contents()
 {
     $out = '';
     if (count($this->_stylesheets)) {
         $mod = \cge_utils::get_cge();
         foreach ($this->_stylesheets as $one) {
             if (!file_exists($one)) {
                 continue;
             }
             $url = \cge_utils::file_to_url($one);
             if (!$url) {
                 continue;
             }
             $out .= '<link rel="stylesheet" type="text/css" href="' . $url . '">';
         }
     }
     return $out;
 }
 /**
  * Preprocess the uploaded image file.  If the file is in the accepted image types.
  * by default this method will generate a preview image (if enabled), and then optionally watermark it.
  *
  * @param array $fileinfo The fileinfo array passed from the $_FILES upload global.
  * @return string The path and filename of the destination file.
  */
 protected function preprocess_upload($fileinfo)
 {
     $srcname = $fileinfo['tmp_name'];
     if (!$this->is_accepted_imagefile($fileinfo['name'])) {
         return $srcname;
     }
     if ($this->_do_preview && $this->_preview_size > 0) {
         // I guess we're resizing the master image.
         $destdir = dirname($srcname);
         $destname = 'rs_' . basename($srcname);
         $tmpname = $destdir . '/' . $destname;
         cge_image::transform_image($srcname, $tmpname, $this->_preview_size);
         if (!file_exists($tmpname)) {
             $mod = cge_utils::get_cge();
             $this->set_error($mod->Lang('error_image_transform'));
             return FALSE;
         } else {
             if ($this->_delete_orig) {
                 @unlink($srcname);
                 @rename($tmpname, $srcname);
             } else {
                 $srcname = $tmpname;
             }
         }
     }
     if ($this->_do_watermark) {
         // I guess we're creating a watermark image.
         $destdir = dirname($srcname);
         $destname = 'wm_' . basename($srcname);
         $tmpname = $destdir . '/' . $destname;
         $obj = $this->get_watermark_obj();
         try {
             $res = $obj->create_watermarked_image($srcname, $tmpname);
             @unlink($srcname);
             $srcname = $tmpname;
         } catch (\Exception $e) {
             $this->set_error('WATERMARKING: ' . $e->GetMessage());
         }
     }
     return $srcname;
 }