<?php 
//34
    ##########################################################################
    ##########################################################################
    //VERIFICA SEGURIDAD: Perfil de Administrador requerido antes de continuar
    global $PCOSESS_LoginUsuario,$MULTILANG_ErrorTitAuth,$MULTILANG_WSErr06;
    if (!PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
        {
            PCO_Mensaje("{$MULTILANG_ErrorTitAuth}", "{$MULTILANG_WSErr06}", '', 'fa fa-exclamation-triangle fa-3x texto-rojo texto-blink', 'alert alert-warning alert-dismissible');
            PCO_Auditar("$PCOSESS_LoginUsuario Intenta acceso no autorizado Frm:-34","SECLog:event");
            die();
        }
    ##########################################################################
    ##########################################################################

    /*
    	Function: PCO_CargarObjeto_LlamadoInternoExplorador
    	Carga el elemento interno (Formulario -34) asociado al administrador de archivos
    	
        Variables de entrada basicas del Framework:
            URL - index.php?PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-34:0&Presentar_FullScreen=1&Precarga_EstilosBS=1
        
        Variables de entrada especificas para el elemento:
            PFE_ActivarDataTable - Valores 1 o 0 para determinar si se debe activar o no DataTables sobre la lista de archivos y carpetas recuperados
            PFE_VistaBasicaArchivos - Permite presentar vista básica o completa de la lista de archivos.  1=Activo 0=Inactivo  Cuando se activa se ocultan las columnas de Tamano, permisos, propietario, grupo y Fecha
            PFE_CalcularTamano - Cuando esta en true cuenta el numero de elementos dentro de un directorio.  Cuando se cuenta con directorios de miles de elementos es util deshabilitarlo.
            PFE_VisibleBotonDT - Determina si el boton de conversion a DataTables esta activado o no. Valores 0 o 1
            PFE_VisibleBotonCargarArchivo - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonCargarCloud - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonDescargar - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonNuevoArchivo - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonNuevoDirectorio - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonEliminar - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonRenombrar - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_VisibleBotonPermisos - Determina si el boton esta activado o no. Valores 0 o 1
            PFE_PermitirSubdirectorios - Determina si se permite navegar en subdirectorios o no. Valores 0 o 1
            PFE_CalcularTamano - Determina si se desea calcula o no cuantos items existen en cada directorio
            PFE_ElementosOcultos - Cadena con los elementos ocultos separados por PIPES | Siempre se agragaran el . y ..
            PFE_OcultarBarraHerramientas - Determina si se oculta o no la barra de herramientas superior
            PFE_OcultarArchivos - Determina si se oculta o no la lista de archivos. 0=Inactivo 1=Activo
            PFE_OcultarCarpetas - Determina si se oculta o no la lista de archivos. 0=Inactivo 1=Activo
            PFE_PresentarCarpetasEspeciales - Por defecto inactivo.  Determina si se deben presentar carpetas compartidas anteriormente mediante ElFinder en sus configuraciones especiales asi: 1)Carpeta publica, 2) Mis archivos (si existe carpeta personal), 3) Raiz del framework y 4) Cargas por formulario.  0=Inactivo 1=Activo
            PFE_OcultarMigasPan - Por defecto visible, permite ocultar los enlaces de migas de pan en la parte superior
            PFE_ActivarCargarEnPcoder - Por defecto desactivado (0), Para activar=1.  Permite convertir los nombres de archivo en enlaces hacia PCoder que permita cargar para edicion el elemento indicado
            PFE_BuscadorArchivos - Por defecto desactivado (0), Para activar=1.  Presenta en la parte superior un buscador de archivos profundo que recorre todas las carpetas.
            
    	Salida:
    		Administrador de archivos cargado en el navegador
    */

	global $dirLink,$PrefijoURLForm,$path,$LlaveDePaso,$Presentar_FullScreen,$Precarga_EstilosBS,$PFE_CalcularTamano,$PFE_PermitirSubdirectorios,$PFE_ActivarDataTable,$PFE_VistaBasicaArchivos;
	global $PFE_BuscadorArchivos,$PFE_ActivarCargarEnPcoder,$PFE_OcultarMigasPan,$PFE_PresentarCarpetasEspeciales,$PFE_DirectorioInicial,$PFE_OcultarCarpetas,$PFE_OcultarArchivos,$PFE_OcultarBarraHerramientas,$PFE_ElementosOcultos,$PFE_VisibleBotonPermisos,$PFE_VisibleBotonRenombrar,$PFE_VisibleBotonEliminar,$PFE_VisibleBotonNuevoDirectorio,$PFE_VisibleBotonNuevoArchivo,$PFE_VisibleBotonDescargar,$PFE_VisibleBotonCargarCloud,$PFE_VisibleBotonCargarArchivo,$PFE_VisibleBotonDT;

	//PARAMETROS BASICOS DE CONFIGURACION
	$PrefijoURLForm="&PCO_Accion=PCO_CargarObjeto&PCO_Objeto=frm:-34:0&Presentar_FullScreen={$Presentar_FullScreen}&Precarga_EstilosBS={$Precarga_EstilosBS}&PFE_ElementosOcultos={$PFE_ElementosOcultos}&PFE_CalcularTamano={$PFE_CalcularTamano}&PFE_PermitirSubdirectorios={$PFE_PermitirSubdirectorios}&PFE_OcultarBarraHerramientas={$PFE_OcultarBarraHerramientas}&PFE_ActivarDataTable={$PFE_ActivarDataTable}&PFE_VistaBasicaArchivos={$PFE_VistaBasicaArchivos}&PFE_OcultarArchivos={$PFE_OcultarArchivos}&PFE_OcultarCarpetas={$PFE_OcultarCarpetas}&PFE_PresentarCarpetasEspeciales={$PFE_PresentarCarpetasEspeciales}&PFE_OcultarMigasPan={$PFE_OcultarMigasPan}&PFE_VisibleBotonDT={$PFE_VisibleBotonDT}&PFE_VisibleBotonCargarArchivo={$PFE_VisibleBotonCargarArchivo}&PFE_VisibleBotonCargarCloud={$PFE_VisibleBotonCargarCloud}&PFE_VisibleBotonDescargar={$PFE_VisibleBotonDescargar}&PFE_ActivarCargarEnPcoder={$PFE_ActivarCargarEnPcoder}&PFE_VisibleBotonEliminar={$PFE_VisibleBotonEliminar}&PFE_VisibleBotonRenombrar={$PFE_VisibleBotonRenombrar}&PFE_VisibleBotonPermisos={$PFE_VisibleBotonPermisos}&PFE_VisibleBotonNuevoArchivo={$PFE_VisibleBotonNuevoArchivo}&PFE_VisibleBotonNuevoDirectorio={$PFE_VisibleBotonNuevoDirectorio}&PFE_BuscadorArchivos={$PFE_BuscadorArchivos}";

	$PFE_ElementosOcultos =".|..|".$PFE_ElementosOcultos;  //Define elementos que deben ser ocultados en la lista, ej: MiArchivo.Ext|MiCarpetaOculta
	$PFE_ElementosOcultos=explode("|",$PFE_ElementosOcultos);
	if ($PFE_PermitirSubdirectorios=="") $PFE_PermitirSubdirectorios="1";
	if ($PFE_CalcularTamano=="") $PFE_CalcularTamano="0";  //Para carpetas con miles de elementos puede tardar
	$ClaseCSSTamanosTextos="";  //btn-xs para reducir tamano de los elementos
	if ($PFE_OcultarBarraHerramientas=="1") $ClaseOcultacionBarra=" hidden ";
    $PFE_DirectorioInicial=getcwd();
    
	//Define donde comienza la navegacion del script.  Administradores en la raiz, usuarios en la carpeta publica y agrega index a los ocultos
    if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
        $DirectorioInicial=".";
    else
        {
            $DirectorioInicial="mod/fileman/archivos/_publico_";
            $PFE_ElementosOcultos[]="index.html";
        }

/***************************************************************************/
/**  INICIO DEL CODIGO DE APLICACION                                      **/
/***************************************************************************/
chdir($DirectorioInicial);
$snifServer = $_SERVER['HTTP_HOST'];
$separationString = "\t";
$descriptionFilenamesCaseSensitive = false;
$ArregloMensajesError = Array();

    //Marco para recepcion de eventos generados por el boton de guardar
    echo '<iframe height="0" width="0" name="frame_almacenamiento" id="frame_almacenamiento" src="about:blank" style="visibility:hidden; display:none"></iframe>';



################################################################################
################################################################################
/*
    Function: ObtenerTamanoLegible
    Formatea el tamano de archivo en unidades comprensibles (750 B, 3.4 KB etc.)
*/
function ObtenerTamanoLegible($size) {
	define("SIZESTEP", 1024.0);
	static $sizeUnits = Array();
	if (count($sizeUnits)==0) {
		$sizeUnits[] = " B";
		$sizeUnits[] = "KB";
		$sizeUnits[] = "MB";
		$sizeUnits[] = "GB";
		$sizeUnits[] = "TB";
	}
	
	if ($size==="")
		return "";
	
	$unitIndex = 0;
	while ($size>SIZESTEP) {
		$size = $size / SIZESTEP;
		$unitIndex++;
	}
	
	if ($unitIndex==0) {
		return number_format($size, 0)." ".$sizeUnits[$unitIndex];
	} else {
		return number_format($size, 1, ".", ",")." ".$sizeUnits[$unitIndex];
	}
}


/**
 * URLEncodes some characters in a string. PHP's urlencode and rawurlencode
 * produce very unsatisfying results for special and reserved characters in
 * filenames.
 **/
function myEncode($path, $filename) {
	// % must be the first, as it is the escape character
	/*
	$from = Array("%"," ","#","&");
	$to = Array("%25","%20","%23","%26");
	return str_replace($from, $to, $string);
	*/
	return $path.rawurlencode($filename);
}


################################################################################
################################################################################
/*
    Function: ConstruirURL
    Data una ruta determinada, construye la URL codificada para ser llamada mediante un enlace
*/
function ConstruirURL($Directorio)
    {
    	return $_SERVER["PHP_SELF"]."?path=".urlEncode($Directorio)."/";
    }


################################################################################
################################################################################
/*
    Function: ObtenerTamanoDirectorio
    Lee un directorio determinado y cuenta la cantidad de elementos internos
*/
function ObtenerTamanoDirectorio($Directorio)
    {
    	$LecturaDirectorio = dir($Directorio);
    	$ConteoArchivos = 0;
    	while ($Archivo = $LecturaDirectorio->read())
    		$ConteoArchivos++;
    	return $ConteoArchivos-2; // No incluye . y ..
    }


    ##########################################################################
    ######################### LISTADOR DEL DIRECTORIO  #######################
    // Verifica que pueda cambiar al directorio deseado antes de seguir adelante
    if ($path!="")
        {
        	if (!@chdir($path)) {
        		$ArregloMensajesError[] = sprintf("%s no es un subdirectorio del directorio actual.", $path);
        		$path = "";
        	}
        } 
    $dir = dir(".");


    //Construye arreglo bidimencional con los elementos y sus metadatos
    $files = Array();
    while($entry = $dir->read())
        {
        	// Valida si es un directorio y se encuentra activo el ocultamiento de directorios
        	if ($PFE_PermitirSubdirectorios=="0" AND is_dir($entry))
        		continue;
        	
        	//Valida que el elemento no sea oculto (que se encuentre en el arreglo definido de elementos ocultos)
        	if (in_array($entry, $PFE_ElementosOcultos))
        	    continue;
        	
        	
        	$f = Array();
        	
        	//Genera cadena en primera posicion de arreglo usada solo para ordenar la vista
        	if (is_dir($entry))
        	    $f["ValorInternoOrdenamiento"] = "....AAAA".$entry;  //Usa puntos y Aes para ubicarlo al principio
        	else
        	    $f["ValorInternoOrdenamiento"] = $entry;

        	$f["name"] = $entry;
        	$f["isDirectory"] = is_dir($entry);
        	$fDate = @filemtime($entry);
        	$f["date"] = $fDate;
        	$f["fullDate"] = date("r", $fDate);
        	$f["shortDate"] = date("Y-m-d H:m", $fDate);
        	$f["Permisos"] = substr(sprintf('%o', fileperms($entry)), -4);

            clearstatcache();
            $InformacionArchivo=@stat($entry);
            $InformacionPropietario=posix_getpwuid($InformacionArchivo["uid"]);
            $InformacionGrupo=posix_getgrgid($InformacionArchivo["gid"]);
        	$f["Propietario"] = $InformacionPropietario["name"];
        	$f["Grupo"] = $InformacionGrupo["name"];

        	if ($f["isDirectory"]) {
        		$f["type"] = "<DIR>";
        		$f["size"] = "";
        		$f["niceSize"] = "";
        		
        		// Construye el enlace al elemento
        		if ($entry=="..") {
        			// xxx strip the last directory from the path
                    $pathArr = explode("/",$path);
        			$link = implode("/",array_slice($pathArr,0,count($pathArr)-2));
        			
        			// if there is no path set, don't add it to the link
        			if ($link=="") {
        				// we're already in $baseDir, so skip the file
        				if ($path=="")
        					continue;
        				$f["link"] = $_SERVER["PHP_SELF"]."?lmqtp=no";
        			} else {
        				$link.= "/";
        				$f["link"] = $_SERVER["PHP_SELF"]."?path=".urlEncode($link);
        			}
        			$f["isBack"] = true;
        			$f["displayName"] = "[..]";
        		} else {
        			if ($PFE_CalcularTamano!="0")
        				{
        					$filesInDir = ObtenerTamanoDirectorio($entry);
        					if ($filesInDir==1) {
        						$f["niceSize"] = "1 item";
        					} else {
        						$f["niceSize"] = sprintf("%d items",$filesInDir);
        					}
        				}
        			else
        				{
        					$f["niceSize"] = ""; //Sin calcular
        				}
        			
        			$f["link"] = ConstruirURL($path.$entry);
        		}
        	} else {
                		if (is_link($entry)) {
                			$linkTarget = readlink($entry);
                			$pi = pathinfo($linkTarget);
                			$scriptDir = dirname($_SERVER["SCRIPT_FILENAME"]);
                			if (strpos($pi["dirname"], $scriptDir)===0) {
                				$f["type"] = "<LINK>";
                				// links have no date, so take the target's date
                				$f["date"] = filemtime($linkTarget);
                				$f["link"] = $path.urlencode(substr($linkTarget, strlen($scriptDir)+1));
                			} else {
                				// link target is outside of script directory, so skip it
                				continue;
                			}
                		} else {
                			$fSize = @filesize($entry);
                			$f["size"] = $fSize;
                			$f["fullSize"] = number_format($fSize,0,".",",");
                			$f["niceSize"] = ObtenerTamanoLegible($fSize);
                			$f["link"] = myEncode($path,$entry);
                		}

        	}
        	if (!$f["isBack"]) {
        		$f["displayName"] = htmlentities($f["name"]);
        	}

        	$files[] = $f;
 	
        }


    ##########################################################################
    ######################### INICIO DE LA MAQUETACION #######################
?>

	<DIV class="well  well-sm" style="margin:0px;">



        <?php 
            //Presenta cualquier error acumulado de los procesos anteriores de exploracion de archivos o similares
            if (count($ArregloMensajesError)>0)
            	foreach($ArregloMensajesError AS $MensajeError)
            		PCO_Mensaje("Error","$MensajeError","fa fa-2x fa-warning","alert alert-danger");

            //Genera las migas de pan (Path de navegacion)
			$baseDirname = $snifServer.htmlentities(dirname($_SERVER["PHP_SELF"]));
			$pathToSnif = explode("/",$baseDirname);
			echo "<div class='{$ClaseOcultacionBarra} btn-xs {$ClaseCSSTamanosTextos}' style='background-color:lightgray;'>";
			            
                    if ($PFE_OcultarMigasPan!="1")
                        {
    			            echo "<a href=\"".$_SERVER["PHP_SELF"]."?lmqtp=no{$PrefijoURLForm}\"><i class='fa fa-home fa-fw fa-1x' style='color:navy;'></i>Raíz ".join("/",array_slice($pathToSnif, -1))."</a>";
                			$pathArr = explode("/",$path);
                			for ($i=0; $i<count($pathArr)-1; $i++)
                    			{
                    				$dirLink = ConstruirURL(join("/",array_slice($pathArr, 0, $i+1)));
                    				$AnchoMigaPan=15+10*$i;
                    				echo "<br><i style='padding-left: {$AnchoMigaPan}px;' class='fa fa-folder-open-o'></i> <a href=\"{$dirLink}{$PrefijoURLForm}\">".htmlentities($pathArr[$i])."</a>";
                    			}
                        }

                //Barra de herramientas de carpeta
                echo "<div style='padding:5px; display:block;'>";
                
                    ###### Boton para Activar/Desactivar los datatables
                        if ($PFE_VisibleBotonDT!="0")
                            {
                                if ($path=="")
                                    {
                                        if ($PFE_ActivarDataTable=="1")
                			                echo "<a href=\"".$_SERVER["PHP_SELF"]."?lmqtp=no{$PrefijoURLForm}&PFE_ActivarDataTable=0\" data-toggle='tooltip' data-placement='bottom' title='Desactivar tabla dinamica responsive en archivos' class='btn btn-xs btn-success'><i class='fa fa-table fa-fw fa-1x'></i></a>";
                                        else    			                
                			                echo "<a href=\"".$_SERVER["PHP_SELF"]."?lmqtp=no{$PrefijoURLForm}&PFE_ActivarDataTable=1\" data-toggle='tooltip' data-placement='bottom' title='Activar tabla dinamica responsive en archivos' class='btn btn-xs btn-default'><i class='fa fa-table fa-fw fa-1x'></i></a>";
                                    }
                                else
                                    {
                                        if ($PFE_ActivarDataTable=="1")
                                	        echo "<a href='{$dirLink}{$PrefijoURLForm}&PFE_ActivarDataTable=0' data-toggle='tooltip' data-placement='bottom' title='Desactivar tabla dinamica en archivos' class='btn btn-xs btn-success'><i class='fa fa-table'></i></a>";
                                        else
                            	            echo "<a href='{$dirLink}{$PrefijoURLForm}&PFE_ActivarDataTable=1' data-toggle='tooltip' data-placement='bottom' title='Activar tabla dinamica en archivos'    class='btn btn-xs btn-default'><i class='fa fa-table'></i></a>";
                                    }
                            }

                    ###### BOTONES DE DIRECTORIO
                    //Define clase para habilitar o deshabilitar botones si se cuenta con permisos sobre la carpeta
                    $ClaseDesactivarElemento=" disabled ";
                    $PathPruebaPermisos="/".$path;
                    if (is_writable($PathPruebaPermisos))
                        $ClaseDesactivarElemento=" ";
                    //else
                        //echo " <font color=red><i class='fa fa-info-circle'></i> <i>sin permisos</i></font>";
                    
                    //Por defecto en directorios se esta dejando todo activo.  is_writable de PHP parece operar solo con archivos
                    $ClaseDesactivarElemento=" ";

                    //Presenta las opciones para el directorio que requieran permisos de escritura
                    if ($PFE_VisibleBotonNuevoDirectorio!="0")
                        echo " <a href='javascript:var LMQTP=PFE_CrearCarpeta();' data-toggle='tooltip' data-placement='bottom' title='Crear nueva carpeta' class='{$ClaseDesactivarElemento} btn btn-xs btn-default'><i class='fa fa-folder-o'></i></a>";

                    if ($PFE_VisibleBotonNuevoArchivo!="0")
                        echo " <a href='javascript:var LMQTP=PFE_CrearArchivo();' data-toggle='tooltip' data-placement='bottom' title='Crear archivo en blanco' class='{$ClaseDesactivarElemento} btn btn-xs btn-default'><i class='fa fa-file-o'></i></a>";

                    if ($PFE_VisibleBotonCargarArchivo!="0")
                        echo " <a href='javascript: var LMQTP=PFE_AdjuntarArchivo();' data-toggle='tooltip' data-placement='bottom' title='Cargar archivo desde mi PC' class='{$ClaseDesactivarElemento} btn btn-xs btn-default'><i class='fa fa-upload'></i></a>";

                    if ($PFE_VisibleBotonCargarCloud!="0")
                        echo " <a href='javascript:var LMQTP=PFE_ArchivoDesdeNube();' data-toggle='tooltip' data-placement='bottom' title='Cargar archivo desde URL' class='{$ClaseDesactivarElemento} btn btn-xs btn-default'><i class='fa fa-cloud-upload'></i></a>";


                //Presenta botones especiales para comparticiones y carpetas especificas
                if ($PFE_PresentarCarpetasEspeciales=="1")
                    {
                        echo "<div style='margin-left:20px; display:inline;'> Lugares: ";

                        //Carpeta PUBLICA
        				$dirLinkEspecial = $_SERVER["PHP_SELF"]."?path=".urlEncode("mod/fileman/archivos/_publico_/");
                        echo " <a href='{$dirLinkEspecial}{$PrefijoURLForm}' data-toggle='tooltip' data-placement='bottom' title='Carpeta Pública' class='{$ClaseDesactivarElemento} btn btn-xs btn-primary'><i class='fa fa-globe fa-1x'></i></a>";
                        
                        //Carpeta PERSONAL (si existe)
                        $PathPersonal="mod/fileman/archivos/".$PCOSESS_LoginUsuario;
                        $dirLinkEspecial = $_SERVER["PHP_SELF"]."?path=".urlEncode($PathPersonal."/");
                        if (file_exists($PFE_DirectorioInicial."/".$PathPersonal)==true)
                            echo " <a href='{$dirLinkEspecial}{$PrefijoURLForm}' data-toggle='tooltip' data-placement='bottom' title='Mis archivos personales (si existe)' class='{$ClaseDesactivarElemento} btn btn-xs btn-primary'><i class='fa fa-heart fa-1x'></i></a>";

                        //Carpeta TODOS LOS USUARIOS (si es admin)
        				$dirLinkEspecial = $_SERVER["PHP_SELF"]."?path=".urlEncode("mod/fileman/archivos/");
                        if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
                            echo " <a href='{$dirLinkEspecial}{$PrefijoURLForm}' data-toggle='tooltip' data-placement='bottom' title='Todos los usuarios' class='{$ClaseDesactivarElemento} btn btn-xs btn-primary'><i class='fa fa-group fa-1x'></i></a>";

                        //Carpeta RAIZ (si es admin)   ../../../../../'.$Directorio_instalacion.'/
        				$dirLinkEspecial = $_SERVER["PHP_SELF"]."?path=";
                        if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
                            echo " <a href='{$dirLinkEspecial}{$PrefijoURLForm}' data-toggle='tooltip' data-placement='bottom' title='Raiz del Framework' class='{$ClaseDesactivarElemento} btn btn-xs btn-primary'><i class='fa fa-home fa-1x'></i></a>";

                        //Carpeta CARGAS POR FORMULARIO (si es admin)   ../../cargas/
        				$dirLinkEspecial = $_SERVER["PHP_SELF"]."?path=".urlEncode("mod/fileman/cargas/");
                        if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
                            echo " <a href='{$dirLinkEspecial}{$PrefijoURLForm}' data-toggle='tooltip' data-placement='bottom' title='Cargas por formulario' class='{$ClaseDesactivarElemento} btn btn-xs btn-primary'><i class='fa fa-paper-plane fa-1x'></i></a>";

                        
                        //Buscador de archivos
                        if ($PFE_BuscadorArchivos=="1")
                            {
                                echo " <input name='elemento_busqueda' id='elemento_busqueda' placeholder='Buscar...' type='text' size=8 class='input input-xs' style='margin-left:15px !important;'>";
                                echo " <a href='javascript:var LMQTP=PFE_LanzarBuscador();' data-html='true' data-toggle='tooltip' data-placement='bottom' title='Buscar de manera profunda este archivo (o parte) en todo el arbol de directorios.  <b>Puede tardar</b> segun su cantidad de archivos en servidor.' class='{$ClaseDesactivarElemento} btn btn-xs btn-warning'><i class='fa fa-search fa-1x'></i></a>";
                            }


                        echo "</div>";
                    }

                echo "</div>";

    		echo "</div><br class='{$ClaseOcultacionBarra}'>";
        ?>
        
        <table id="TablaExploradorArchivos" class="<?php echo $ClaseCSSTamanosTextos; ?>">
            <thead>
            	<tr style="font-weight: bold; ">
            		<td style='padding-left: 10px;'>Acciones</td>
            		<td style='padding-left: 10px;'>Nombre</td>
            		<?php 
            		    if ($PFE_VistaBasicaArchivos!="1")
            		        {
            		?>
                        		<td style='padding-left: 10px;'>Tamaño</td>
                        		<td style='padding-left: 10px;'>Permisos</td>
                        		<td style='padding-left: 10px;'>Propietario</td>
                        		<td style='padding-left: 10px;'>Grupo</td>
                        		<td style='padding-left: 10px;'>Fecha</td>
            		<?php 
            		        }
            		?>
            	</tr>
        	</thead>
        	<tbody>
                	<?php 
                	//Ordena y Recorre el arreglo de archivos y carpetas
                    sort($files);
                	for ($i=0;$i<min(count($files),count($files));$i++)
                    	{
                    	    $SalidaElemento="";
                    	    $SalidaElemento.="<tr>";

                        			//ICONOS del elemento si es un directorio o un archivo
                        			$SalidaElemento.= "<td align=right nowrap style='padding-left: 10px;'>";
                            			if ($files[$i]["isDirectory"]) 
                                			{
                            			        if ($PFE_VisibleBotonRenombrar!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_Renombrar(\"{$files[$i]["name"]}\");' data-toggle='tooltip' title='Renombrar' class='btn1 1btn-xs 1btn-default'><i class='fa fa-fw fa-edit'></i></a>";
                            			            }
                            			        if ($PFE_VisibleBotonEliminar!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_EliminarCarpeta(\"{$path}{$files[$i]["name"]}\");' data-toggle='tooltip' title='Eliminar' class='btn1 1btn-xs 1btn-default' href='{$PHP_SELF}?PCO_Accion=PCO_EjecutarPostFormulario&Formulario=-34&Llave={$LlaveDePaso}&PFE_Accion=PFE_DescargarArchivo&path=".rawurlencode($path)."&download=".rawurlencode($files[$i]["name"])."'><i class='fa fa-fw fa-trash'></i></a>";
                            			            }
                            			        if ($PFE_VisibleBotonPermisos!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_CambiarPermisos(\"{$path}{$files[$i]["name"]}\",\"{$files[$i]["Permisos"]}\");' data-toggle='tooltip' title='Permisos' class='btn1 1btn-xs 1btn-default' href='{$PHP_SELF}?PCO_Accion=PCO_EjecutarPostFormulario&Formulario=-34&Llave={$LlaveDePaso}&PFE_Accion=PFE_DescargarArchivo&path=".rawurlencode($path)."&download=".rawurlencode($files[$i]["name"])."'><i class='fa fa-fw fa-lock'></i></a>";
                            			            }
                                			} 
                            			else
                            			    {
                            			        if ($PFE_VisibleBotonDescargar!="0")
                            			            {
                                                        $SalidaElemento.= "<a  data-toggle='tooltip' title='Descargar' class='btn1 1btn-xs 1btn-default' href='{$PHP_SELF}?PCO_Accion=PCO_EjecutarPostFormulario&Formulario=-34&Llave={$LlaveDePaso}&PFE_Accion=PFE_DescargarArchivo&path=".rawurlencode($path)."&download=".rawurlencode($files[$i]["name"])."'><i class='fa fa-fw fa-download'></i></a>";
                            			            }
                            			        if ($PFE_VisibleBotonRenombrar!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_Renombrar(\"{$files[$i]["name"]}\");' data-toggle='tooltip' title='Renombrar' class='btn1 1btn-xs 1btn-default'><i class='fa fa-fw fa-edit'></i></a>";
                            			            }
                            			        if ($PFE_VisibleBotonEliminar!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_EliminarArchivo(\"{$path}{$files[$i]["name"]}\");' data-toggle='tooltip' title='Eliminar' class='btn1 1btn-xs 1btn-default'><i class='fa fa-fw fa-trash'></i></a>";
                            			            }
                            			        if ($PFE_VisibleBotonPermisos!="0")
                            			            {
                                                        $SalidaElemento.= "<a href='javascript: var LMQTP=PFE_CambiarPermisos(\"{$path}{$files[$i]["name"]}\",\"{$files[$i]["Permisos"]}\");' data-toggle='tooltip' title='Permisos' class='btn1 1btn-xs 1btn-default'><i class='fa fa-fw fa-lock'></i></a>";
                            			            }
                            			    }
                        			$SalidaElemento.= "</td>";
                    
                        			//NOMBRE
                        			$EnlaceElemento="#";
                        			//Si es carpeta agrega enlace para navegar en ella
                        			if ($files[$i]["isDirectory"]) $EnlaceElemento="{$files[$i]['link']}{$PrefijoURLForm}";
                        			//Si es archivo y ademas se encuentra activada la apertura por PCoder genera el enlace correspondiente
        			                $LlaveParcial_FirmaSistema=substr($LlaveDePaso,-3);
                        			if (!$files[$i]["isDirectory"] && $PFE_ActivarCargarEnPcoder=="1") $EnlaceElemento="javascript: var LMQTP=PCOJS_CargarArchivoPCoderFS(\"{$LlaveParcial_FirmaSistema}\",\"\",\"\",\"{$path}{$files[$i]["name"]}\",\"Si\");";

                        			$ComplementoIconoCarpetas="<i class='fa fa-fw fa-file' style='color:gray'></i>";
                        			if ($files[$i]["isDirectory"]) $ComplementoIconoCarpetas="<i class='fa fa-fw fa-folder' style='color:orange'></i>";

                        			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'><a href='{$EnlaceElemento}'>{$ComplementoIconoCarpetas}{$files[$i]["displayName"]}</a></td>";

                        		    if ($PFE_VistaBasicaArchivos!="1")
                        		        {
                                    			//TAMANO
                                    			if ($files[$i]["fullSize"]!="") $TootipTamanoFull=" title='{$files[$i]["fullSize"]} Bytes'";    
                                    			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'><span {$TootipTamanoFull}>{$files[$i]['niceSize']}</span></td>";

                                    			//PERMISOS
                                    			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'>{$files[$i]['Permisos']}</td>";
                                    			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'>{$files[$i]['Propietario']}</td>";
                                    			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'>{$files[$i]['Grupo']}</td>";

                                    			//FECHA
                                    			$SalidaElemento.= "<td nowrap style='padding-left: 10px;'><span title='{$files[$i]['fullDate']}'>{$files[$i]['shortDate']}</span></td>";
                        		        }

                        	$SalidaElemento.="</tr>";

                    	    //PARA ARCHIVOS:  Determina si se debe presentar o no
                    	    if (!$files[$i]["isDirectory"] && $PFE_OcultarArchivos!="1")
                        	    echo $SalidaElemento;

                    	    //PARA CARPETAS:  Determina si se debe presentar o no
                    	    if ($files[$i]["isDirectory"] && $PFE_OcultarCarpetas!="1")
                        	    echo $SalidaElemento;

                    	} //Fin for que recorre archivos
                	?>
        	</tbody>
        </table>

	</DIV>

<?php
    //Retorna el directorio de trabajo al original del framework para evitar errores de inclusiones innecesarias
    //Las inclusiones se generan al final (marco abajo) pues al detectar ciertos PATH se trata de incluir ficheros
    //En rutas que al haber hecho un chdir previo obviamente no aplican
    chdir($PFE_DirectorioInicial);
?>