Location: PHPKode > scripts > PH Pexplorer > ph-pexplorer/menu.php
<?php
/*MODF:	01:00:00,27.09.07*/

// Loadsettings
include_once("inc/settings.php");

define('loc1',"",true);

function remdir($dir)
{
  if(!isset($GLOBALS['remerror']))
   $GLOBALS['remerror'] = false;

  if($handle = opendir(loc1 . $dir)){          // if the folder exploration is sucsessful, continue
   while (false !== ($file = readdir($handle))){ // as long as storing the next file to $file is successful, continue
     $path = $dir . '/' . $file;
     if(is_file(loc1 . $path)){
       if(!@unlink(loc1 . $path)){
         //echo '<u><font color="red">"' . $path . '" could not be deleted. This may be due to a permissions problem.</u><br>Directory cannot be deleted until all files are deleted.</font><br>';
         $GLOBALS['remerror'] = true;
         return false;
       }
     } else
     if(is_dir(loc1 . $path) && substr($file, 0, 1) != '.'){
       remdir($path);
       @rmdir(loc1 . $path);
     }
   }
   closedir($handle); // close the folder exploration
  }

  if(!$GLOBALS['remerror']) // if no errors occured, delete the now empty directory.
   if(!@rmdir(loc1 . $dir)){
     1; //echo '<b><font color="red">Could not remove directory "' . $dir . '". This may be due to a permissions problem.</font></b><br>';
     return false;
   } else
     return true;

  return false;
} // end of remdir()
function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}

/** Clean text from \'s infront of unwanted chars like '
 * @param   $string Text to clean
 * @return  String  Cleaned text   */
function string_clean($string)
{
  $string=preg_replace('/\\\/','',$string);
  
  return $string;
}


if( isset($_GET['do']) )
{
  switch ($_GET['do'])
  {
  	case 'srch' :
	{
		if( trim($_GET['term'])=="" || !$c_srch_enabled )
			die('NOQUERY');

		include_once('inc/icons.php');

		$path=str_replace('\\','/','/'.$_GET['chf']);
		$path=split("/",$path);
		unset($path[0]);
		unset($path[1]);
		$path=implode('/',$path);
		
		$path=securl($path);
		$fpath=t_folder.'/'.$path.'/';
		$fdir=opendir($fpath);
		
		$hits=array();
		$dirs=array();
		
		while($fdir && $file=readdir($fdir) )
		{
			if($file!=".." && $file!="." && f_show_hidden_file("$fpath/$file") )
			{
				if( /*strpos($file,$_GET['term']) ||*/ preg_match('/'.$_GET['term'].'/i',$file) )
				{
					$hits[count($hits)]=$file;
				}

				if( is_dir("$fpath/$file") )
					$dirs[count($dirs)]=string2jscode($file);
			}
		}
		
		echo count($dirs).'&&'.count($hits).'&&'.string2jscode($path).'&&'.implode('::',$dirs).'&&';
		
		foreach($hits as $file)
		{
			echo string2jscode($file)."::".
					date($l_time,fileatime("$fpath/$file")).'::'.
					date($l_time,filemtime("$fpath/$file")).'::'.
					date($l_time,filectime("$fpath/$file")).'::'.
					(is_dir("$fpath/$file")?'-1':FileEasySize(FileSize2("$fpath/$file"))).'::'.
					FilePermsDecode(fileperms("$fpath/$file")).'::'.
					give_filetype_image($file,$fpath).'@@';
		}
		echo "&&";
		break;
	}
    case "dl" :		// download
    {
      $_GET['chf']=securl($_GET['chf']);
      $file=t_folder."/".$_GET['chf'];
      //$file=str_replace("\\'","'",$_GET['file']);
      //die($file);
      
      if(is_file($file))
      {	
        @set_time_limit(0);	//Falls DL l�nger dauert
        $constart=0;							// Wo starten
        $conend=@filesize($file);	// Wo fetisch
        
        $p1=NULL;
        $p2=NULL;
        if( isset($_SERVER['HTTP_RANGE']) and strpos($_SERVER['HTTP_RANGE'],"bytes=")!==false )
        {
          $s=$_SERVER['HTTP_RANGE'];
          $p1=strpos($s,"bytes=")+6;
          $p2=strpos($s,"-",$p1);
          
          $constart=substr($s,$p1,$p2-$p1);
                  settype($constart,"integer");
          $conend=  substr($s,$p2+1);
                  settype($conend,"integer");
          if($conend<=$constart)
                  $conend=@filesize($file);
        }
        header("Accept-Ranges: bytes");
        header("Content-Type: application/x-download");
        header("Content-Range: bytes $constart-$conend/".($conend+1));
        header("Content-Length: ".($conend-$constart),true);
        header("Age: ".(time()-@filemtime($file)) );
        header("Date: ".gmdate("D, d M Y H:i:s")." GMT");
        header("Last-Modified: ".gmdate("r",filemtime($file)) );
        header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
        header("Content-Transfer-Encoding: binary");

        $fd=fopen($file,"rb");
        @fseek($fd,$constart,SEEK_SET);
        
        $i=$constart;
        while($i<$conend)
        {
                $dif=($conend-1-$i)%(1024*1024+1) +1;
                $postion=$conend+1;
                echo @fread($fd,$dif);
                $i+=$dif;
        }
      }
      break;
    }
    
    case "prv" :	// Show preview for thumbnail,clip or viewer
    {
      define("now",microtime_float());
      // Get filepath
      $file=t_folder."/".securl($_GET['chf']);
      
      // make $_GET['typ'] a save-to-use-in-filepath-variable
			if( !isset($_GET['typ']) )
				$_GET['typ']='thb';
      switch( $_GET['typ'] )
      {
        case 'clip':
        case 'big':
        case 'thb':
          break;
        default:
          $_GET['typ']="thb";
      }
      
      // generate unique cache name depending on file name, frame, and modification date
      srand(crc32($file));
	  if( isset( $_GET['tp'] ) )
	  	settype($_GET['tp'],'integer');
      $pfile=$c_cache_path."/".$_GET['typ']."_".rand(1000,9999)."-".rand(1000,9999)."-".( isset($_GET['tp'])?$_GET['tp']:'0').'-'; // basic cache file name
	  	// add filetype
      $cfile=$pfile.filemtime($file);
	  
      //clear all existing but no more valid clips of this file
      $dd=opendir($c_cache_path);
      while( $indirfile=readdir($dd) )
      {
        $indirfile=$c_cache_path."/".$indirfile;
        if( substr($indirfile,0,strlen($pfile)) == $pfile && $indirfile!=$cfile)
          unlink($indirfile);
      }
			
      // if this file exist, send this and don't recalculate it
      if( is_file($cfile) && $img_info=@getimagesize($cfile) )
      {
        $ctype="png";
        switch($img_info['2'])
        {
          case 1: 
            $ctype="gif";
            break;
          case 2:
            $ctype="jpg";
            break;
          case 3:
            $ctype="png";
            break;
        }
        header("Content-type: image/".$ctype);
        $fd=fopen($cfile,"rb");
        fpassthru($fd);
        fclose($fd);
        exit;
      }

      header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($file) ) . " GMT");

      $img_info=$bq_source=false;

      // See if file might be openable with some 2img plugins
      if( in_array(FileExtension($file),$c_ick_ext) && $c_ick2image)
      {
        include("inc/2img/imagemagick.php");
        $width=$c_fileview_thb_w;
        $height=$c_fileview_thb_h;
        
        if( isset($_GET,$_GET['typ']) )
        {
          switch($_GET['typ'])
          {
            case 'clip' :
              $width=$c_menu_img_w;
              $height=$c_menu_img_h;
              break;
            case 'big'  :
              $width=$c_show_w;
              $height=$c_show_h;
              break;
          }
        }
        $bq_source=imagecreatefromick($file,$width,$height);
      }
      elseif( in_array(FileExtension($file),$c_video_ext) && $c_video2img )
      {
        include("inc/2img/video.php");
        $bq_source=imagecreatefromvideo($file, isset($_GET['tp'])?$_GET['tp']:0);
	  }

      // 
      if($bq_source || $img_info=@getimagesize($file) )
      {
        $stop=false;
        if(!$bq_source)
          switch($img_info['2'])
          {
            case 1: 
              $bq_source=imagecreatefromgif ($file);
              break;
            case 2:
              $bq_source=imagecreatefromjpeg($file);
              break;
            case 3:
              $bq_source=imagecreatefrompng($file);
              break;
            case 6:
              if($c_bmp2img)
              {
                include("inc/2img/bmp.php");
                $bq_source=imagecreatefrombmp($file);
                break;
              }
            case 15:
              $bq_source=imagecreatefromwbmp($file);
              break;
            case 16:
              $bq_source=imagecreatefromxbm($file);
              break;
            default:
              $bq_source=NULL;	//unknown
              $stop=true;
              break;
          }
        $img_typ='jpg';	// wollen als ausgabe unbedingt ein jpg
        if(!$c_imagemodul)
                $stop=false;
        if(!$stop && $bq_source)
        {
          $whatbig=0;
          $bq_breite=imagesx($bq_source);
          $bq_hoehe=imagesy($bq_source);
          $qdim='thb';
          $stretch=false;
          if(isset($_GET['typ']))
            $qdim=$_GET['typ'];
          
          $prev_big=(isset($_GET['typ']) && $_GET['typ']=="big");
          
          switch($qdim)
          {
            case 'big' :
              $height=min($bq_hoehe,$c_show_h);
              $width =min($bq_breite,$c_show_w);
              $img_typ="png";
              break;
            case 'clip' :
              $width=$c_fileview_thb_w;
              $height=$c_fileview_thb_h;
              $stretch=true;
              break;
            case 'thb' :
            default :
              $width=$c_menu_img_w;
              $height=$c_menu_img_h;
              break;
          }

          $r = $bq_hoehe/$bq_breite;
          $r2= $height/$width;

          if($r>$r2)
          {
            $new_h = $height; //H�he max
            $new_w = $height/$r;
          }
          else
          {
            $new_w = $width; //Breite max
            $new_h = $width*$r;
            $whatbig=1;
          }

          $zb_source=imagecreatetruecolor(($stretch?$c_fileview_thb_w:$new_w),($stretch?$c_fileview_thb_h:$new_h)); //truecolor


          $kek=imagecolorallocate($zb_source,$menu_color_dec[0],$menu_color_dec[1],$menu_color_dec[2]);
          if($stretch)
            $kek=imagecolorallocate($zb_source,255,255,255);
          imagefill($zb_source,0,0,$kek);

          imagecopyresized( $zb_source,$bq_source,( (!$whatbig and $stretch) ?(($c_fileview_thb_w-$new_w)/2):0),
                            ( ($whatbig and $stretch)?(($c_fileview_thb_h-$new_h)/2):0),0,0,$new_w,$new_h,$bq_breite,$bq_hoehe); 
          if(isset($ftyp))
            $bq_typ=$ftyp;

          //imagestring($zb_source,1,0,0,"Time: ".(microtime_float()-now),0);
          
          // no caching? -> no cache-file
          if(!$c_cache_enable)
            $cfile=null;

          //header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
          header("Content-type: image/".$img_typ);	
          switch ($img_typ)
          {
            case 'jpg' : 
            case 'jpeg':
					imagejpeg($zb_source,$cfile,$menu_clip_quality);
              break;
            case 'gif' :
				if($cfile!=null)
					imagegif($zb_source,$cfile);
				else
					imagegif($zb_source);					
              break;
            case 'png' :
				if($cfile!=null)
			 		imagepng($zb_source,$cfile);
				else
			 		imagepng($zb_source);
              break;
          }
          // caching, so file was not send but only saved instead: send it
          if($c_cache_enable)
          {
            $fd=fopen($cfile,'rb');
            fpassthru($fd);
            fclose($fd);
          }
        }
        else
        {
	header("Content-type: image/gif");
	$fd=fopen("theme/invalidfile.png","rb"); //leer.gif
	fpassthru($fd);
	imagedestroy($gdim);
	break;
        /*  $zb_source=imagecreatetruecolor(min($c_menu_img_w,180),min($c_menu_img_h,8));
          $kek=imagecolorallocate($zb_source,$menu_color_dec[0],$menu_color_dec[1],$menu_color_dec[2]);
          imagefill($zb_source,0,0,$kek);
          imagestring($zb_source,1,0,0, str_replace('%f',$img_info['2'],html_entity_decode($l_men_inval_img)),$menu_color_error);
          header("Content-type: image/jpg");
          imagejpeg($zb_source,"",$menu_clip_quality); /**/
        }
        imagedestroy($zb_source);
        break;
      }
      header("Content-type: image/gif");
      $fd=fopen("theme/invalidfile.png","rb"); //leer.gif
      fpassthru($fd);
      imagedestroy($gdim);
      break;
    }

    case "ren" :	// renaming
    {
      if( isset($_GET['file'],$_GET['nname'],$_GET['path'],$_GET['oname']) && is_array($_GET['file']) )
      {
        if($f_right_to_rename)
        {	
          $error="";
          $_GET['nname']=preg_replace("@(\\\\|\"|\/|\:|\*|\?|\<|\>|\|)@si","-",str_replace("\'","'",$_GET['nname']));
          //	Get to know what has changed: Handle extension and name seperatly
          $next=pathinfo($_GET['nname'],PATHINFO_EXTENSION);  $ncut=(strlen($next)>=1?strlen($next)+1:0);
          $oext=pathinfo($_GET['oname'],PATHINFO_EXTENSION);  $ocut=(strlen($oext)>=1?strlen($oext)+1:0);
          $nnam=substr($_GET['nname'],0,strlen($_GET['nname'])-$ncut);
          $onam=substr($_GET['oname'],0,strlen($_GET['oname'])-$ocut);

          // either change name or extension. if all same, change extension, if both changed, change name
          $changename=($nnam!=$onam );
          $changeext =( ($next!=$oext && ($nnam==$onam || count($_GET['file'])==1 ) ) || ($next==$oext && $nnam==$onam));

          //die("CHN: '$changename'<br/>EXT: '$changeext'<br/>NEXT: '$nnam'.'$next'<br/>OEXT: '$onam'.'$oext'<br/>");

          // get path
          $path=securl($_GET['path']);

          foreach($_GET['file'] as $file)
          {
            $fext=pathinfo($file,PATHINFO_EXTENSION); $fcut=strlen($fext);
            $fnam=substr($file,0,max(0,strlen($file)-$fcut-(strpos($file,'.')?1:0) )  );

            $source=t_folder."/".str_replace("\\'","'",$path."/".$file);
            $extens=($changeext?($next!=""?".".$next:""):($fext!=""?".".$fext:""));
            $destin=t_folder."/".str_replace("\\'","'",$path."/".($changename?$nnam:$fnam)).$extens;
            $count=0;
            while( is_file($destin) || is_dir($destin) )
              $destin=t_folder."/".str_replace("\\'","'",$path."/".($changename?$nnam:$fnam)." (".(++$count).")".$extens );

            /*echo "$source<br/>$destin<br/>";
            exit;/**/

            if(!@rename( $source, $destin))
              $error.=str_replace("%f",basename($source),$l_men_no_rename)."\n\n";
          }
        }
        else
          $error.=$l_men_block_ren."\n\n";
              ?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
if($error!="")
  echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
echo "parent.folderview.opendir_spec(\"".string2jscode( securl($_GET['path']) ) ."\",true);\n";
?>//-->
</script>
<?php
      }
      break;
    }

    case "mov" :	// move
    {
      if( isset($_GET['file'],$_GET['path'],$_GET['dpath']) && is_array($_GET['file']) )
      {
        // get path
        $path=securl($_GET['path']);
        $dpath=securl($_GET['dpath']);
        if($f_right_to_moveNcopyto)
        {
          if( is_dir(t_folder."/".$dpath) )
          {
            $error="";
            foreach($_GET['file'] as $file)
            {
              // replace unwanted \'s
              $file=string_clean($file);
              if( is_dir(t_folder."/$path/$file") || is_file(t_folder."/$path/$file") )
              {
                if( !is_dir(t_folder."/$dpath/$file") && !is_file(t_folder."/$dpath/$file") )
                {
                  $source=securl($path."/".$file);
                  $destin=securl($dpath."/".$file);
                  if(!@rename( t_folder."/".$source, t_folder."/".$destin))
                          $error.=str_replace(array("%sfile%","%dfile%"),array("$path/$file","$dpath/$file"),$l_men_mv_failed)."\n\n";
                }
                else
                  $error.=str_replace("%dfile%","$dpath/$file",$l_men_mv_f_ex)."\n\n";
              }
              else
                $error.=str_replace("%sfile%","$path/$file",$l_men_mv_f_nex)."\n\n";
            }
          }
          else
            $error.=str_replace("%dfile%",$dpath,$l_men_mv_d_nex)."\n\n";
        }
        else
          $error.=$l_men_block_mNc."\n\n";
              ?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
if($error!="")
  echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
echo "parent.folderview.change2dir(parent.folderview.hexcode2string(\"".string2jscode($error==""?$dpath:$path)."\"));\n";
?>//-->
</script>
<?php
        }
      break;
    }
    case "cpy" :	// copy
    {
      if( isset($_GET['file'],$_GET['path'],$_GET['dpath']) && is_array($_GET['file']) )
      {
        // get path
        $path=securl($_GET['path']);
        $dpath=securl($_GET['dpath']);
        if($f_right_to_moveNcopyto)
        {
          if( is_dir(t_folder."/".$dpath) )
          {
            $error="";
            foreach($_GET['file'] as $file)
            {
              // replace unwanted \'s
              $file=string_clean($file);
              if( is_dir(t_folder."/$path/$file") || is_file(t_folder."/$path/$file") )
              {
                  if( !is_dir(t_folder."/$dpath/$file") && !is_file(t_folder."/$dpath/$file") )
                  {
                    include_once("inc/cpydir.php");
                    $source=securl($path."/".$file);
                    $destin=securl($dpath."/".$file);
                    if( (is_dir(t_folder."/".$source) && !dircpy(t_folder."/",$source,$destin) ) ||
                        (is_file(t_folder."/".$source) && !@copy( t_folder."/".$source, t_folder."/".$destin) ) )
                      $error.=str_replace(array("%sfile%","%dfile%"),array("$path/$file","$dpath/$file"),$l_men_cy_failed)."\n\n";
                  }
                  else
                    $error.=str_replace("%dfile%","$dpath/$file",$l_men_cy_f_ex)."\n\n";
              }
              else
                $error.=str_replace("%sfile%","$path/$file",$l_men_cy_f_nex)."\n\n";
            }
          }
          else
            $error.=str_replace("%dfile%",$dpath,$l_men_cy_d_nex)."\n\n";
        }
        else
          $error.=$l_men_block_mNc."\n\n";
        ?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
if($error!="")
  echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
echo "parent.folderview.change2dir(parent.folderview.hexcode2string(\"".string2jscode($error==""?$dpath:$path)."\"));\n";
?>//-->
</script>
<?php
        }
        break;
      }
		
      case "del" :	// deleting
      {
        if( isset($_GET['file']) && is_array($_GET['file']) )
        {
          $error="";
          foreach($_GET['file'] as $file)
          {
            $source=t_folder."/".securl(str_replace("\\'","'",$file) );
            if(	$f_right_to_delete)
            {
              if( strrpos($source,"/")==(strlen($source)-1) )						//	Letztes / entfernen, falls vorhandne
                $source=substr($source,0,strlen($source)-1);
              
              if(is_dir($source))
              {
                if(!remdir($source))
                  $error.=str_replace("%f",basename($source),$l_men_no_delete)."\n\n";
              }
              else
                if(!@unlink($source))
                  $error.=str_replace("%f",basename($source),$l_men_no_delete)."\n\n";
            }
            else
              $error.=$l_men_block_del."\n\n";
          }
?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
			if($error!="")
				echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
			echo "parent.folderview.opendir_spec(\"".string2jscode( dirname(securl($_GET['file'][0]) ) )."\",true);\n";
?>//-->
</script>
<?php
        }
        break;
      }
      case "crdir" :	// renaming
      {
        $destin=securl(str_replace("\\'","'",$_GET['path']));
        $namerec=$name=t_folder."/".securl( $destin."/".preg_replace("@(\\\\|\"|\/|\:|\*|\?|\<|\>|\|)@si","-",str_replace("\\'","'",$_GET['name'])));
        
        $error="";	

        if($f_right_to_crdir)
        {	
            // Rename file if path already exists
            $count=0;
            while( is_file($name) || is_dir($name) )
              $name="$namerec (".(++$count).")";

            if(!@mkdir($name))
              $error.="$l_men_no_crdir\n\n";
        }
        else
          $error.=$l_men_block_crd."\n\n";
?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
if($error!="")
  echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
echo "parent.folderview.opendir_spec(\"".string2jscode( securl($_GET['path']) )."\",true);\n";
?>//-->
</script>
<?php
      break;
      }
      case "chm";		// changing file permissons
      {
        if( isset($_GET['file'],$_GET['path'],$_GET['chm']) && is_array($_GET['file']) && !preg_match('/[^01234567]/',$_GET['chm']) && strlen($_GET['chm'])==3 )
        {
          $error="";
          if($f_right_to_chmod)
          {
            $path=securl($_GET['path'])."/";
            foreach($_GET['file'] as $file)
            {
              $npath=t_folder."/".securl($path.$file);
              if(is_dir($npath) || is_file($npath) )
              {
                $octv=decoct(base_convert($_GET['chm'],8,10));
                if( !chmod($npath,base_convert($_GET['chm'],8,10)) )
                  $error.=str_replace('%file%',$file,$l_men_chm_nw)."\n";
              }
              else
                $error.=str_replace('%file%',$file,$l_men_chm_nex)."\n";							
            }
          }
          else
            $error.=$l_men_block_chm."\n";
?>
<script language="javascript" type="text/javascript" src="theme/general.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
<?php
if($error!="")
  echo "alert(hexcode2string(\"".string2jscode(html_entity_decode($error))."\"));\n";
echo "parent.folderview.change2dir(parent.folderview.hexcode2string(\"".string2jscode($path)."\"));\n";
?>//-->
</script>
<?php
        }
      break;
      }
    }
}
?>
Return current item: PH Pexplorer