<?php 
	/*
	 *
	 * 2003 - 2020 @ Yal Publicidad - Yal Gestor de Archivos
	 * www.yalpublicidad.com
	 * online@yalpublicidad.com
	 *
	 */
	
	include_once( 'mod.func.php' );
	
	$acc = ( isset( $_GET['a'] ) ) ? $_GET['a'] : false;
	
	/* Directorio principal : JS homedir */
		//$homedir= ( isset( $_GET['homedir'] ) ) ? $_GET['homedir'] : '/';
		$homedir= realpath( YEROOT );
	/* Ruta del directorio base a listar : JS dir */
		$basedir	= ( isset( $_GET['basedir'] ) ) ? '/' . trim( $_GET['basedir'], '/' ) : '';
	/* Ruta del directorio actual a listar */
		$dir_actual	= ( isset( $_GET['dir_actual'] ) ) ? trim( $_GET['dir_actual'], '/' ) : '';
	/* recibo directorio a explorar y que se mostrará en la barra e navegacion */
		$ldir		= ( isset( $_GET['ldir'] ) ) ? $_GET['ldir'] : '';
	/* verifico si activo opcion de insertar imagen */
		//$insImg	= ( isset( $_GET['insImg'] ) ) ? $_GET['insImg'] : 'no';
		
	/* Path completo a explorar */
		$path	= $homedir . $basedir;
	
	if ( YE::veriSess() ) {
		
		
		 
		 
		 
		 /* funcion para obtener slug */
		 function obtCadenaSlug($cadena){
			$cadena	= trim( strip_tags( $cadena ) );
			$cadena	= str_replace( ' ', '-', $cadena );
			$cadena	= preg_replace('([^A-Za-z0-9\-])', '', $cadena);
			return strtolower( $cadena );
		}
		 
		 /*
		 * Funcion para detectar tamaño del directorio
		 */
		function peso_dir( $dir=".", $subdirs=1 ) 
		{ 
		   $dir = ( empty( $dir) ) ? "." : $dir;
		   
			/* Creamos un array con todos los nombres de directorios y 
			archivos contenidos dentro del directorio inicial */ 
			$arr = scandir($dir); 
	
			/* establecemos que la variable $sizedir es igual a cero */ 
			$sizedir = 0; 
			$bytes = 0;
	
			/* YA NO Recorremos el array saltando los directorios . y .. */ 
			for ($i=0; $i<count($arr); $i++)
				{
					/* Comprobamos que el archivo/directorio actual no sea "." ni ".." */
				  if ($arr[$i]!="." && $arr[$i]!="..")
				   {
					 /* Si es un directorio hacer..... */ 
					 if (is_dir($dir ."/". $arr[$i])) 
						 { 
							 /* Establecemos que la variable $sizedir es igual 
							 a ella misma m?s el valor devuelto por MeDir */ 
							 if ($subdirs==1) $sizedir += peso_dir($dir . "/" . $arr[$i]); 
						 } 
					 /* Si es un archivo hacer ... */ 
					 else 
						 { 
							 /* Establecemos que la variable $sizedir es igual 
							 a ella misma m?s el tama?o del fichero $dir ."/". $arr[$i] */ 
							 $sizedir += filesize($dir ."/". $arr[$i]); 
						 } 
				   }
				}
			
			return $sizedir;
			
			/* Devolvemos el valor total de $sizedir 61,894,073 */ 
			//return $sizedir; 
		}
		
		 /*
		 * Funcion para convertir bytes a MB
		 */
		function peso_fichero( $fichero = NULL ){
			if( $fichero == NULL ) return false;
			
			$bytes = filesize( $fichero );
			
			if( $bytes > 1024 && $bytes < 1048576 )
				return number_format( ( $bytes / 1024 ), 2 ) . ' kb';
				
			if( $bytes > 1048576 && $bytes < 1073741824 )
				return number_format( ( $bytes / 1048576 ), 2 ) . ' MB';
				
			if( $bytes > 1073741824  )
				return number_format( ( $bytes / 1048576 ), 2 ) . ' GB';
				
			return $bytes . ' bytes';
			
		}
		 
		 // Parametro: archivo
		function rmime( $file )
		{
		   if( !empty( $file ) ){
				//$ext = array_pop( explode( '.', basename( $file ) ) );
				$ext = explode( '.', basename( $file ) );
				$ext = strtolower( end( $ext ) );
				
				return $ext;
			}
			return false;
			/*switch ( $ext )
			{
			
				case "arj"	:	$mime ="arj"; break;
				case "gz"	:	$mime ="gz"; break;
				case "rar"	:	$mime ="rar"; break;
				case "zip"	:	$mime ="zip"; break;
				case "tar"	:	$mime ="tar"; break;
		
				case "ttf"	:	$mime ="fuente"; break;
			
				default		:	$mime ="none"; break;
			}
			return $mime;*/
		}
		
		/* Obteer la ultima modificacion */
		function ultima_modificacion( $fichero = NULL ){
			if( $fichero == NULL ) return false;
			$fecha = date( 'd-m-Y H:i', filemtime( $fichero ) );
			$fecha_actual = date( 'd-m-Y H:i' );
			
			$fecha = ( comparar_fechas( $fecha , $fecha_actual ) == 0 ) ? 'Hoy ' . date( 'H:i', filemtime( $fichero ) ) : $fecha;
			$fecha = ( comparar_fechas( $fecha , $fecha_actual ) == -1 ) ? 'Ayer ' . date( 'H:i', filemtime( $fichero ) ) : $fecha;
			return $fecha;
		}
		 
		/* Listo sub carpetas del dir */
		if( $acc == 'abrir_carpeta' ){
			/* Directorio principal */
			
			//$dir	= $path . $ldir;
			
			if( file_exists( realpath( YEPATH . '/' . $ldir ) ) ){
				/* Listo carpetas */
				echo '<ul>';
					echo abrir_carpeta_nav( $ldir, $ldir );
				echo '</ul>';
			}
		}
		
		
		/* Crear archivos en el dir seleccionado */
		if( $acc == 'copiar' ){
			/* array de archivos a copiar */
			$elementos = ( isset( $_GET['arraydir'] ) ) ? trim( $_GET['arraydir'], ';' ) : '';
			$elementos = explode( ';', $elementos );
			
			$nlocation	= $path . '/' . $ldir . '/';
			
			if( !is_dir( $nlocation ) ){
				echo 2; exit;
			}
			
			$hecho = false;
			for( $e = 0; $e < count( $elementos ); $e++ ){
				$hecho = rcopiar( $path . '/' . $elementos[$e], $nlocation . basename( $elementos[$e] ) );
			}
			echo $hecho;
		}
		
		/* Crear archivos en el dir seleccionado */
		if( $acc == 'comprimir' ){
			/* Directorio principal */
				//$homedir	= ( isset( $_GET['homedir'] ) ) ? $_GET['homedir'] . '/' : '/';
				$homedir	= YEPATH . '/';
			/* array de archivos a copiar */
				$elementos = ( isset( $_GET['arraydir'] ) ) ? trim( $_GET['arraydir'], ';' ) : '';
				$elementos = explode( ';', $elementos );
			/* recibo locacion de la carpeta */
				$location=( isset( $_GET['ldir'] ) ) ? $_GET['ldir'] : '';
				
				/* Llamo a la clase zip */
					$zip		= new ZipArchive();
				/* Comprimo los archivos si es directorio o mayor a un elemento */
					$zip->open( $homedir . $location, ZIPARCHIVE::CREATE);
						for( $e = 0; $e < count( $elementos ); $e++ ){
							/* verifico si es directorio o archivo */
							if( !is_dir( $homedir . $elementos[$e] ) ){
								$zip->addFile( $homedir . $elementos[$e], basename( $elementos[$e] ) ); 
							}else{
								$carpeta = basename( $elementos[$e] ) . '/';
								comprimir_dir( $homedir . $elementos[$e], $carpeta, $zip );
							}
						}
					$zip->close();
			echo 1;
		}
		
		/* Crear archivos en el dir seleccionado */
		if( $acc == 'crear_archivo' ){
			/* Ruta del directorio a listar */
			$archivo= ( isset( $_GET['nombre'] ) ) ? '/' . $_GET['nombre'] : '';
			
			$archivo	= YEPATH . '/' . $ldir . $archivo;
			
			if( file_exists( $archivo ) ){
				echo 2; exit;
			}
			
			echo ( fopen( $archivo,"w+") ) ? 1 : 0;
		}
		
		/* Crear carpetas en el dir seleccionado */
		if( $acc == 'crear_carpeta' ){
			/* Ruta del directorio a listar */
			$nomdir	= ( isset( $_GET['nomdir'] ) ) ? '/' . $_GET['nomdir'] : '';
			
			//$dir	= $homedir . $location . $dir;
			$dir	= YEPATH . '/' . $ldir . $nomdir;
			
			if( file_exists( $dir ) ){
				echo 2; exit;
			}
			
			echo ( mkdir( $dir, 0755) ) ? 1 : 0;
		}
		
		/* Eliminar archivo y/o carpeta */
		if( $acc == 'eliminar_archivo' ){
			
			$hecho = false;
			
			/* Recibo array de elementos a eliminar */
			$elementos = ( isset( $_GET['arraydir'] ) ) ? trim( $_GET['arraydir'], ';' ) : '';
			$elementos = explode( ';', $elementos );
			
			for( $e = 0; $e < count( $elementos ); $e++ ){
					if( is_dir( YEPATH . '/' . $elementos[$e] ) ){
						$hecho = eliminarDir( YEPATH . '/' . $elementos[$e] );
					}else{
						$hecho = unlink( YEPATH . '/' . $elementos[$e] );
					}
			}
			
			echo $hecho;
		}
		 
		 /* Mover archivos */
		 if( $acc == 'mover' ){
			/* array de archivos a copiar */
			$elementos = ( isset( $_GET['arraydir'] ) ) ? trim( $_GET['arraydir'], ';' ) : '';
			$elementos = explode( ';', $elementos );
			
			$nlocation	= YEPATH . '/' . $ldir . '/';
			
			if( !file_exists( $nlocation ) ){
				echo 2; exit;
			}
			
			$hecho = false;
			for( $e = 0; $e < count( $elementos ); $e++ ){
				$hecho = rename( YEPATH . '/' . $elementos[$e], $nlocation . basename( $elementos[$e] ) );
			}
			echo $hecho;
		 }
		 
		 //* Renombrar archivo */
		 if( $acc == 'renombrar' ){
			/* array de archivos a copiar */
			$nNombre = ( isset( $_GET['nNombre'] ) ) ? trim( $_GET['nNombre'], ';' ) : '';
			
			$fichero = YEPATH . '/' . $ldir;
			
			echo rename( $fichero, dirname( $fichero ) . '/' . $nNombre );
		 }
		 
		 //** Subir ficheros */
		 if( $acc == 'subir' ){
				$mPath	= ( isset( $_POST['upload_preset'] ) ) ? YEROOT . $_POST['upload_preset'] : '';	
					
						$multimedia			= $_FILES['file'];
						$multimedia_nombre	= str_replace(' ', '-', $multimedia['name'] );
						$multimedia_peso	= $multimedia['size'];
						
						$multimedia_path_parts	= pathinfo( $multimedia['name'] );
						$multimedia_extension	= $multimedia_path_parts["extension"];
						$multimedia_extension = strtolower( $multimedia_extension );
						
						if ( $multimedia_extension=="jpg" or $multimedia_extension=="jpeg" or $multimedia_extension=="png" or $multimedia_extension=="gif" or $multimedia_extension=="bmp" or $multimedia_extension=="mp3" or $multimedia_extension=="wav" or $multimedia_extension=="mp4" or $multimedia_extension=="avi" or $multimedia_extension=="mov" or $multimedia_extension=="flv" or $multimedia_extension=="pdf" or $multimedia_extension=="doc" or $multimedia_extension=="docx" )
							{
							if( $multimedia_peso > ( 10240 * 1000) ){
									echo 'El archivo es mayor a 10 MB, debes reducirlo antes de subirlo a la nube.';
								}else{
									if( copy( $multimedia['tmp_name'], $mPath . '/' . $multimedia_nombre ) ){
										//$data = array('success' => true);
									}
								}
						}else{
							echo 'El archivo no es un formato multimedia.';
						}
						
		}
		 
		 
		 
		//** 
		// Listo todas las carpetas del homedir */
		if( $acc == 'panelNav' ){			
			echo '<div class="contenedor-panel">
				<ul style="width:100%">
					<li style="width:100%" onClick="yGestorArchivos.explorar_archivo( \'\', \'\' )">
						<span id="mm" class="fa fa-minus-square-o"></span> <i class="fa fa-home fs-18"></i> ' . YEPATH . ' 
					</li>' . 
					abrir_carpeta_nav() . '
				</ul>
			</div>';
		 }
		 
		//**
		// Explorar contenido de carpeta */
		if( $acc == 'explorar_carpeta' ){
			/* Tipo de vista */
			$vista	= ( isset( $_GET['vista'] ) ) ? $_GET['vista'] : 'iconos';
			
			//$dir	= realpath( $homedir . $basedir . $ldir );
			
			/* Listo carpetas */
				echo explorar_carpeta( $ldir, $ldir, $vista );
		 }
		 
	}else{ print 'Carpeta vacía'; }
	 
?>