<?php 
	//* 2003 - 2023 Yal Publicidad
	
	$MS_DIR_LOCAL_TMP	= _DIR_PAQUETE . YDS . '.tmp';
	
	define( "MS_DIR_LOCAL_TMP", _DIR_PAQUETE . YDS . '.tmp' );
	
	function actnusis( $ini = false, $acc = NULL ){
		
		if( $ini == false ) return false;
		
		$acc = ( $acc != NULL ) ? $acc : 'nulo';
		
		switch($acc){
			case 'carpeta_tmp':
					echo 'creando carpeta de descarga...<br>';
					if( wya_crear_carpeta_tmp( MS_DIR_LOCAL_TMP ) ){
						echo 'carpeta de descarga creada correctamente &nbsp; <i class="fa fa-check-circle"></i><br>';
						actnusis( true, 'descargar_actualizador' );
					}else{
						echo 'error al crear la carpeta de descarga en ' . MS_DIR_LOCAL_TMP . ' &nbsp; <i class="fa fa-times"></i><br>';
					}
					
				break;
			case 'descargar_actualizador':
					echo 'descargando actualizador...<br>';
						
						//$dir = "/var/www/directorio/local/";
						//$archivoFinal = fopen($dir . basename($url), "w");
					if( !file_exists( MS_DIR_LOCAL_TMP . YDS . basename( $_POST['zip'] ) ) ){
						$MS_ZIP_ACTUALIZADOR = fopen( MS_DIR_LOCAL_TMP . YDS . basename( $_POST['zip'] ), "w" );
						 
						$ch = curl_init();
						curl_setopt($ch, CURLOPT_URL, $_POST['zip']);
						curl_setopt($ch, CURLOPT_HEADER, 0);
						//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
						//curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
						curl_setopt($ch, CURLOPT_FILE, $MS_ZIP_ACTUALIZADOR);
						curl_exec ($ch);
						 
						fclose( $MS_ZIP_ACTUALIZADOR );
						curl_close($ch);
					}
						
					echo 'actualizador descargado  &nbsp; <i class="fa fa-check-circle"></i><br>';
					
					actnusis( true, 'instalar_app' );
					
					/*$datos = file_get_contents( $_POST['zip'] ) or die( 'WYA_ERR_LEER_PAQUETE' );
					
					file_put_contents( $_POST['path'] . '/ypanel/wy_tmp/' . basename( $_POST['zip'] ), $datos) or die( 'WYA_ERR_DESCARGAR_PAQUETE' );
					
					echo 'copiar_tmp';*/
				break;
			case 'instalar_app':
					echo 'Instalando actualización...<br>';
					$ZipApp = wya_instalar_app( MS_DIR_LOCAL_TMP . YDS . basename( $_POST['zip'] ), _DIR_PAQUETE_WEB . YDS );
					if( $ZipApp ){
						echo 'actualización instalada correctamente  &nbsp; <i class="fa fa-check-circle"></i><br>';
						actnusis( true, 'eliminar_tmp' );
					}else{
						echo 'ERROR: no se instaló la actualización &nbsp; <i class="fa fa-times"></i><br>';
					}
					
				break;
				
			// ** accion para actualizar sistema desde PC
			case 'instalar_app_pc':
					$actualizador = $_FILES['actualizador'];
					$ZipApp = wya_instalar_app( $actualizador['tmp_name'], _DIR_PAQUETE_WEB . YDS );
					if( $ZipApp )
						echo 'instalar_app_pc';
					else
						echo 'ERROR: no se instaló la actualización &nbsp; <i class="fa fa-times"></i><br>';
					
				break;
			
			case 'eliminar_tmp':
					echo 'Eliminando archivos obsoletos...<br>';
					sleep(3);
					wya_eliminarDir( MS_DIR_LOCAL_TMP . YDS );
					echo 'archivos obsoletos eliminados correctamente  &nbsp; <i class="fa fa-check-circle"></i><br>';
				break;
			default:
				echo 'Err: no se reconoce el comando de llamada.';
		}
	}
	
	function wya_crear_carpeta_tmp( $dir = '' )
	{
		if (is_dir( $dir )) return true;
		if (!is_dir( $dir ) ) {
			return mkdir( $dir, 0777, true);
		}
		
		return false;
	}
	
	/*
	 * Funcion para eliminar directorio
	 */
	function wya_eliminarDir($dir) { 
		$files = array_diff(scandir($dir), array('.','..')); 
		foreach ($files as $file) {
			(is_dir("$dir/$file")) ? wya_eliminarDir("$dir/$file") : unlink("$dir/$file"); 
		}
		return rmdir($dir);
	}
	
	function wya_instalar_app( $Paquete, $PathInstalacion )
	{
						
			$tmp_index = false;
			$tmp_info = false;
			
			///$instalar_sql = false;
			///$tmp_sql = array();
			
						$zip = new ZipArchive;
						
						if ($zip->open($Paquete) === TRUE) {
							$sql = 1;
							for($i = 0; $i < $zip->numFiles; $i++) {
								$filename = $zip->getNameIndex($i);
								
								// Leo sólo el nombre del archivo ej. carpeta/documento.txt retorna documento.txt
									$nombreArchivo = basename( $filename );
								// extraer partes de informacion
									$partes	= pathinfo($nombreArchivo);
									$extension	= ( isset( $partes["extension"] ) ) ? $partes["extension"] : NULL;
								
								if( basename($filename) == 'index.php')  $tmp_index = true;
								if( basename($filename) == 'iData.y' ){ $tmp_info = true; $tmp_info_path = $filename; }
								
								///if( strtolower($extension) == 'sql') { $instalar_sql = true; $tmp_sql[$sql] = $filename; $sql++; }
							}
							
							
							if( $tmp_index && $tmp_info ){
								$zip->extractTo( $PathInstalacion );
								
								// Comprobar si se instala datos sql
								/*if( $instalar_sql == true ){									
									for( $j=1; $j <= count($tmp_sql); $j++ ){
										if( file_exists( $PathInstalacion . $tmp_sql[$j] ) )
											importar_sql( $PathInstalacion . $tmp_sql[$j] );
									}
								}*/
								
							}else{
								//return "NO_FORMATO_INSTALACION";
								return false;
							}
							
							$zip->close();
							
							return true;
							
						} else {
							//return "NO_INSTALO";
							return false;
						}
	}
	
	
	
	
	if( isset( $_POST['accion'] ) ){
		echo '<hr class="m-b-25">';
		actnusis( true, $_POST['accion'] );
		ob_flush();
        flush();
		sleep(1);
	}
	
	/*$a = array();
	for($i=0;$i<13;$i++){
		echo 'número ' . $i . '<br>';
		ob_flush();
        flush();
        sleep(1);
	}*/
	
?>