Avatar

doc and pdf upload possibility (Features)

by Micha ⌂, Friday, November 06, 2009, 16:05 (5257 days ago) @ Eelco
edited by Auge, Friday, April 29, 2016, 12:13

Hi,

check this modification.

 
<?php
if(!defined('IN_INDEX'))
 {
  header('Location: ../index.php');
  exit;
 }
 
// upload folder:
$uploaded_images_path   = 'images/uploaded/';
$images_per_page = 5;
$isAddionalAcceptedFile = false; // a simple flag
 
// see: http://www.php.net/manual/de/function.move-uploaded-file.php#94126
$rEFileTypes = 
  "/^\.(zip|rar|ace|jar|doc|docx|txt|rtf|pdf|xls|xlsx| 
        ppt|pptx){1}$/i"; 
 
 
if(($settings['upload_images']==1 && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type']>0)||($settings['upload_images']==2 && isset($_SESSION[$settings['session_prefix'].'user_id']))||($settings['upload_images']==3))
 {
  // upload:image:
  if(isset($_FILES['probe']) && $_FILES['probe']['size'] != 0 && !$_FILES['probe']['error'])
   {
    unset($errors);
    $image_info = getimagesize($_FILES['probe']['tmp_name']);
    if (preg_match($rEFileTypes, strrchr(trim($_FILES['probe']['name']), '.')) && $_FILES['probe']['size'] <= $settings['upload_max_img_size']*1000) {
  $filename = preg_replace( 
      array("/\s+/", "/[^-\.\w]+/"), 
      array("_", ""), 
      trim($_FILES['probe']['name'])
  );
  $filename = date("YmdHis").uniqid('')."_".$filename;
  @move_uploaded_file ( 
     $_FILES['probe']['tmp_name'], 
     $uploaded_images_path.$filename
  ) or $errors[] = 'upload_error';
  $isAddionalAcceptedFile = true;
 }
 elseif(!is_array($image_info) || $image_info[2] != 1 && $image_info[2] != 2 && $image_info[2] != 3) 
  $errors[] = 'invalid_file_format';
 
    if(empty($errors) && !$isAddionalAcceptedFile)
     {
      if($_FILES['probe']['size'] > $settings['upload_max_img_size']*1000 || $image_info[0] > $settings['upload_max_img_width'] || $image_info[1] > $settings['upload_max_img_height'])
       {
        #$compression = 10;
        $width=$image_info[0];
        $height=$image_info[1];
 
        // resize if too large:
        if($width > $settings['upload_max_img_width'] || $height > $settings['upload_max_img_height'])
         {
          if($width >= $height)
           {
            $new_width = $settings['upload_max_img_width'];
            $new_height = intval($height*$new_width/$width);
           }
          else
           {
            $new_height = $settings['upload_max_img_height'];
            $new_width = intval($width*$new_height/$height);
           }
         }        
        else
         {
          $new_width=$width;
          $new_height=$height;
         }
 
        $img_tmp_name = uniqid(rand()).'.tmp';
 
        for($compression = 100; $compression>1; $compression=$compression-10)
         {
          if(!resize_image($_FILES['probe']['tmp_name'], $uploaded_images_path.$img_tmp_name, $new_width, $new_height, $compression)) 
           { 
            $file_size = $_FILES['probe']['size']; // @filesize($_FILES['probe']['tmp_name']); 
            break; 
           }
          $file_size = @filesize($uploaded_images_path.$img_tmp_name);
          if($image_info[2]!=2 && $file_size > $settings['upload_max_img_size']*1000) break;
          if($file_size <= $settings['upload_max_img_size']*1000) break;
         }
        if($file_size > $settings['upload_max_img_size']*1000) 
         {
          $smarty->assign('width',$image_info[0]);
          $smarty->assign('height',$image_info[1]);
          $smarty->assign('filesize',number_format($_FILES['probe']['size']/1000,0,',',''));
          $smarty->assign('max_width',$settings['upload_max_img_width']);
          $smarty->assign('max_height',$settings['upload_max_img_height']);
          $smarty->assign('max_filesize',$settings['upload_max_img_size']);
          $errors[] = 'file_too_large';
         } 
        if(isset($errors))
         {
          if(file_exists($uploaded_images_path.$img_tmp_name))
           {
            @chmod($uploaded_images_path.$img_tmp_name, 0777);
            @unlink($uploaded_images_path.$img_tmp_name);
           }
         }
       }
     }
 
    if(empty($errors) && !$isAddionalAcceptedFile)
     {
      $filename = date("YmdHis").uniqid('');
      switch($image_info[2])
       {
        case 1:
         $filename .= '.gif';
         break;
        case 2:
         $filename .= '.jpg';
         break;
        case 3:
         $filename .= '.png';
         break;
       }
      if(isset($img_tmp_name))
       {
        @rename($uploaded_images_path.$img_tmp_name, $uploaded_images_path.$filename) or $errors[] = 'upload_error';
        $smarty->assign('image_downsized',true);
        $smarty->assign('new_width',$new_width);
        $smarty->assign('new_height',$new_height);
        $smarty->assign('new_filesize',number_format($file_size/1000,0,',',''));
       }
      else
       {
        @move_uploaded_file($_FILES['probe']['tmp_name'], $uploaded_images_path.$filename) or $errors[] = 'upload_error';
       }
     }
    if(empty($errors))
     {
      @chmod($uploaded_images_path.$filename, 0644);
      $smarty->assign('uploaded_file',$filename);
     }
    else 
     {
      $smarty->assign('errors',$errors);
      $smarty->assign('form',true);
     } 
   }
 
  // delete image:
  elseif(isset($_REQUEST['delete']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type']>0) 
   {
    if(empty($_REQUEST['delete_confirm']))
     {
      $smarty->assign('delete_confirm',true);
      $smarty->assign('delete',htmlspecialchars($_REQUEST['delete']));
      if(isset($_REQUEST['current'])) $smarty->assign('current',intval($_REQUEST['current']));
     }
    else
     {
      if(preg_match('/^([a-z0-9]+)\.(gif|jpg|png)$/', $_REQUEST['delete']) && file_exists($uploaded_images_path.$_REQUEST['delete']))
       {
        @chmod($uploaded_images_path.$_REQUEST['delete'], 0777);
        @unlink($uploaded_images_path.$_REQUEST['delete']);
       }
      if(isset($_REQUEST['current'])) $bi = '&browse_images='.intval($_REQUEST['current']);
      else $bi = '&browse_images=1';
      header('Location: index.php?mode=upload_image'.$bi);
      exit;
     }
   }
 
  // browse uploaded images:
  elseif(isset($_GET['browse_images'])) 
   {
      $browse_images = intval($_GET['browse_images']);
      if($browse_images<1)$browse_images=1;
      $handle=opendir($uploaded_images_path);
      while ($file = readdir($handle))
       {
        if(preg_match('/\.jpg$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file))
         {
          $images[] = $file;
         }
        }
      closedir($handle);
      if(isset($images))
       {
        rsort($images);
        $images_count = count($images);
        if($browse_images > ceil($images_count/$images_per_page)) $browse_images=ceil($images_count/$images_per_page);  
        $start = $browse_images * $images_per_page - $images_per_page;
        $show_images_to = $browse_images * $images_per_page;
        if($show_images_to>$images_count) $show_images_to = $images_count;
       }
      else $images_count = 0;
      $smarty->assign('current',$browse_images);
      if($browse_images*$images_per_page < $images_count) $smarty->assign('next',$browse_images+1);
      if($browse_images > 1) $smarty->assign('previous',$browse_images-1);
      $smarty->assign('browse_images',true);
      $smarty->assign('images_per_page',$images_per_page);
      if(isset($images)) $smarty->assign('images',$images);
      if(isset($start)) $smarty->assign('start',$start);
   }
 
  // display form to upload image:
  elseif(empty($_GET['browse_images']))
   {
    $smarty->assign('form',true);
   }
 
  if(empty($errors) && isset($_FILES['probe']['error'])) 
   {
    $smarty->assign('server_max_filesize', ini_get('upload_max_filesize'));
    $errors[] = 'upload_error_2';
    $smarty->assign('errors',$errors);
   }   
 
 }
 
$template = 'upload_image.tpl'; 
?>
 

regards Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

locked
15672 views

Complete thread:

 RSS Feed of thread