<?php
global $PFE_Accion,$_FILES,$download,$path,$displayError,$carpeta,$elemento,$permisos,$archivo,$nuevo_nombre,$viejo_nombre,$url;


################################################################################
################################################################################
function ExplorarDirectorio($ruta,$elemento)
    {
        global $TotalEncontrados,$TotalExaminados;
        // abrir un directorio y listarlo recursivo
        if (is_dir($ruta))
            {
                if ($dh = opendir($ruta))
                    {
                        //echo "<br />Buscando en <strong>$ruta</strong>"; // Aqui se imprime el nombre de la carpeta o directorio
                        while (($file = readdir($dh)) !== false)
                            {
                                //if (is_dir($ruta . $file) && $file!="." && $file!="..") // Si se desea mostrar solo directorios
                                if ($file!="." && $file!="..") // Si se desea mostrar directorios y archivos
                                    {
                                        $TotalExaminados++;
                                        //echo "<br />$ruta".DIRECTORY_SEPARATOR."$file"; // Aqui se imprime el nombre del Archivo con su ruta relativa
        								//Si se desea sensible a mayuscula selecciona la funcion correcta strpos / stripos
        								$PosicionBusqueda = stripos($file,$elemento);
        								//Muestra el elemento si cumple con el patron de busqueda
        								if ($PosicionBusqueda!==false)
        									{						
        										//OnDblClick=\"UltimoArchivoSeleccionado='"		  PCODER_CargarArchivo(path_operacion_elemento+"/"+nombre_elemento);				
        										echo '<li style="font-size:12px; font-family:Arial;">'.$ruta.'/<b style="color:red;">'.$file.'</b></li>';
        										$TotalEncontrados++;
        									}
                                        //Llamado recursivo para el resto del arbol
                                        ExplorarDirectorio($ruta . DIRECTORY_SEPARATOR. $file,$elemento);
                                    }
                            }
                        closedir($dh);
                    }
            }
    }
 
 
/*
	Function: PFE_BusquedaProfunda
	Toma el nombre de una archivo o carpeta y lo busca en todo el arbol de directorios
*/
if ($PFE_Accion=="PFE_BusquedaProfunda") 
	{
        global $DirectorioExploracion,$TotalEncontrados,$TotalExaminados;
        if ($DirectorioExploracion=="")	$DirectorioExploracion=".";
   	    
   		@ob_clean();
   	    echo "<div style='font-family:Arial;'>";       
   		if (strlen($elemento)<3)
   	        echo "El elemento a buscar debe ser de al menos tres caracteres";       
   	    else
   	        {
                $TotalEncontrados=0;
                $TotalExaminados=0;
   	            echo "<ol>";
  	            ExplorarDirectorio($DirectorioExploracion,$elemento);
   	            echo "</ol>";
   	            echo "<hr><b>Finalizado</b>";
   	            echo "<br>Examinados: {$TotalExaminados}, Econtrados: <b>{$TotalEncontrados}</b>";
   	        }
   	    echo "</div>";
   	    die();
   	}


/*
	Function: PFE_CrearCarpeta
	Agrega una carpeta sobre el path actual
*/
if ($PFE_Accion=="PFE_CrearCarpeta") 
	{
   		@ob_clean();
   	    if ($carpeta!="")
   	        {
                mkdir($path.$carpeta,0777);
            }
   	    die();
   	}

/*
	Function: PFE_EliminarCarpeta
	Elimina una carpeta sobre el path actual
*/
if ($PFE_Accion=="PFE_EliminarCarpeta") 
	{
   		@ob_clean();
   	    if ($carpeta!="")
            rmdir($carpeta);
   	    die();
   	}

/*
	Function: PFE_CambiarPermisos
	Cambia los permisos para un elemento determinado
*/
if ($PFE_Accion=="PFE_CambiarPermisos") 
	{
   		@ob_clean();
   	    if ($elemento!="")
   	        {
                //chmod($elemento, 0+$permisos);
                chmod($elemento, octdec($permisos));
            }
   	    die();
   	}


/*
	Function: PFE_EliminarArchivo
	Elimina un archivo sobre el path actual
*/
if ($PFE_Accion=="PFE_EliminarArchivo") 
	{
   		@ob_clean();
   	    if ($archivo!="")
            unlink($archivo);
   	    die();
   	}


/*
	Function: PFE_CrearArchivo
	Agrega una carpeta sobre el path actual
*/
if ($PFE_Accion=="PFE_CrearArchivo") 
	{
   		@ob_clean();
   	    if ($archivo!="")
   	        {
                touch($path.$archivo);
            }
   	    die();
   	}


/*
	Function: PFE_Renombrar
    Renombra un elemento en el path actual
*/
if ($PFE_Accion=="PFE_Renombrar") 
	{
   		@ob_clean();
   	    if ($viejo_nombre!="" && $nuevo_nombre!="")
   	        {
                rename($path.$viejo_nombre, $path.$nuevo_nombre);
            }
   	    die();
   	}


/*
	Function: PFE_ArchivoDesdeNube
    Toma una URL y la descarga en la ruta actual
*/
if ($PFE_Accion=="PFE_ArchivoDesdeNube") 
	{
   		@ob_clean();
   	    if ($archivo!="")
   	        {
   	            $Contenido = file_get_contents($url);
                file_put_contents($path.$archivo, $Contenido);
            }
   	    die();
   	}

/*
	Function: PFE_DescargarArchivo
    Descarga el contenido de un archivo determinado
*/
if ($PFE_Accion=="PFE_DescargarArchivo") 
	{
   		@ob_clean();
   		$ArchivoDescargado=$download;
        $download=$path.$download;
		Header("Content-Length: ".filesize($download));
		Header("Content-Type: application/x-download");
		Header("Content-Disposition: attachment; filename=\"".rawurlencode($ArchivoDescargado)."\"");
		readfile($download);

   	    die();
   	}


/*
	Function: PFE_ArchivoDesdePC
    Carga uno o mas archivos locales
*/
if ($PFE_Accion=="PFE_ArchivoDesdePC") 
	{
   		@ob_clean();

        $TotalArchivosCargados = count($_FILES['archivo_adjunto']['name']);
        //Recorre todos los archivos recibidos
        for($i=0;$i<$TotalArchivosCargados;$i++)
            {
                $NombreArchivoFinal = $path.$_FILES['archivo_adjunto']['name'][$i];
                //Intenta mover el archivo temporal a la carpeta definitiva
                move_uploaded_file($_FILES['archivo_adjunto']['tmp_name'][$i],$NombreArchivoFinal);
            }
        
        sleep(1);
        //Llama a la funcion del parent para redireccionar al path despues de la carga
        echo "<script language='JavaScript'>
            window.parent.PFE_GUARDAR_AdjuntarArchivoRedireccion();
        </script>";
   	    //die();
   	}

