<?php
	/*
	 *
	 * 2003 - 2023 @ Yal Publicidad - yPanel
	 * www.yalpublicidad.com
	 * online@yalpublicidad.com
	 *
	 * formulario de modulo
	 */
	
	/* Autorizo acceso */
		defined('YPANEL_INI') or die( 'No dispones de acceso' );
		

		$nom_app		= ( isset( yActualizar::servDatos()->nombre ) ) ? yActualizar::servDatos()->nombre : 'App';
		$url_descarga	= ( isset( yActualizar::servDatos()->url_descarga ) ) ? yActualizar::servDatos()->url_descarga : 'https://www.webyplus.com';
		$version_n		= ( isset( yActualizar::servDatos()->version ) ) ? yActualizar::servDatos()->version : 0.0;
		$version_actual	= yActualizar::$version_actual;
		$version	= str_replace( '.', '', $version_n );
		$version_a	= str_replace( '.', '', $version_actual );
		
		if( $version > $version_a ) : 
?>
				
				<div id="estado" style="margin-bottom:10px;">Instalar versión <?php echo $version_actual ?></div>
				<div id="estado1"></div>
				<!--div><progress id="progressBar" value="0" max="100" style="width:80%;min-width:250px;height:28px;margin-bottom:10px;border-radius:3px;"></progress> <span id="n_total">0%</span></div-->
				
				<div id="wyActualizarC">
					<button id="wyaInstalar" class="boton-verde">Actualizar en línea</button> 
					<button id="wyaInstalarPC" class="boton-verde">Actualizar desde PC</button> 
					<button id="wyaDescargar">Descargar versión <?php echo $version_n ?></button>
				</div>
				
				<form method="post" enctype="multipart/form-data" id="fSubirPC">
					<input type="hidden" name="accion" value="instalar_app_pc" />
					<input type="file" name="actualizador" onChange="wyActualizar.subirPC( this, this.form );" style="display:none;">
				</form>
				
				<!-- consola de proceso -->
				<div id="yconsola" class="m-t-15" style="max-height:380px;max-width:100%;overflow:auto;"></div>
				
				
<?php 
		else :
						
			//echo msg_error( 'No hay actualizaciones disponibles.', NULL, "alert-info" );
					
		endif;
?>
			
			<script type="text/javascript">
				var $estado = 'carpeta_tmp';
				var $wya_descarga = '<?php echo $url_descarga ?>';
				
				var $WYA_ERR_LEER_PAQUETE =  '<?php echo msg_error( 'No se puede leer el paquete de instalción o se encuentra dañado.', NULL, "alert-warning" ) ?>';
				var $WYA_ERR_DESCARGAR_PAQUETE =  '<?php echo msg_error( 'No se puede descargar el paquete de instalción o se encuentra dañado.', NULL, "alert-warning" ) ?>';
				var $WYA_NO_FORMATO_INSTALACION =  '<?php echo msg_error( 'El formato del paquete de instalación es incorrecto o se encuentra dañado.', NULL, "alert-warning" ) ?>';
				var $WYA_NO_INSTALO =  '<?php echo msg_error( 'No se puede instalar el paquete o se encuentra dañado.', NULL, "alert-danger" ) ?>';
				
				wyActualizar = {
						init: function(){
								$__("#estado").innerHTML = '<img src="images/loading_ic_s.gif" height="24"> Procesando la instalación...';
								$__('#wyaInstalar').innerHTML = 'Actualizando...';
								$__('#wyaInstalar').disabled = true;
								//$__('#wyaInstalarPC').disabled = true;
								
								$a = wyActualizar.ajax({
										url: '<?php echo com_base() ?>actualizar_nucleo.php',
										metodo: 'POST',
										contenidoTipo: 'application/x-www-form-urlencoded',
										data: 'accion=carpeta_tmp&zip=' + $wya_descarga,
										suceso: function(respuesta){
											$__("#yconsola").innerHTML = respuesta;
										}
									});
								
						},
						ajax: function(ajustes){
			
							var wye_Request = new XMLHttpRequest();
							var url = (ajustes.metodo == 'GET') ? ajustes.url + '?' + ajustes.data : ajustes.url;
							
							//wye_Request.upload.addEventListener("progress", progressHandler, false);
							wye_Request.addEventListener("load", completeHandler, false);
							wye_Request.addEventListener("error", errorHandler, false);
							wye_Request.addEventListener("abort", abortHandler, false);
							wye_Request.addEventListener("progress", progressHandler, false);
							
							wye_Request.open(ajustes.metodo, url, true);
							if(ajustes.contenidoTipo != 'undefined') wye_Request.setRequestHeader('Content-Type',ajustes.contenidoTipo);
							
							wye_Request.onreadystatechange = function(){
														if (wye_Request.readyState == 4 && wye_Request.status == 200) {
																	ajustes.suceso(wye_Request.responseText);
														} else if ( wye_Request.status == 200) {
																	ajustes.suceso(wye_Request.responseText);
														} else {
																	ajustes.suceso(wye_Request.status);
														}
												};
							
							if(ajustes.metodo === 'GET') {
										wye_Request.send(null);
									}else{
										wye_Request.send(ajustes.data); //alert('post')
							}
						},
						subirPC: function( e, form ){
							
							$estado = 'instalar_app_pc';
							
							if(e.value.length > 5) 
							{	
								$__("#estado").innerHTML = 'Iniciando la instalación desde PC...';
								$__('#wyaInstalar').disabled = true;
								$__('#wyaInstalarPC').disabled = true;
								
								var Data = new FormData(form);
								
								var wye_Request = new XMLHttpRequest();
								
								wye_Request.upload.addEventListener("progress", progressHandler, false);
								wye_Request.addEventListener("load", completeHandler, false);
								wye_Request.addEventListener("error", errorHandler, false);
								wye_Request.addEventListener("abort", abortHandler, false);
							
								wye_Request.open('POST', '<?php echo com_base() ?>actualizar_nucleo.php', true);
								
								wye_Request.send(Data);
							}
						}
					
					}
				
				// -- Iniciar instalación en línea
				$__('#wyaInstalar').onclick = function(){ wyActualizar.init(); }
				
				// -- Iniciar instalacion desde PC	
				$__('#wyaInstalarPC').onclick = function(){ $__('#fSubirPC').actualizador.click(); }
				
				// -- Iniciar descarga desde servidor
				$__('#wyaDescargar').onclick = function(){ location.href = $wya_descarga; }
					
				function $__(selector){
					return document.querySelector(selector);
				}
				
				function estadoActualizacion(Estado,Evento){
					if(Estado == 'carpeta_tmp'){
						if(Evento == 0){
							$__("#estado").innerHTML = 'Configurando carpeta temporal...';
							$__('#wyaInstalar').innerHTML = 'Actualizando...';
							$__('#wyaInstalar').disabled = true;
							$__('#wyaInstalarPC').disabled = true;
						}else{ 
							$__("#estado").innerHTML = 'Carpeta temporal creada';
							
							$a = wyActualizar.ajax({
											url: '<?php echo com_base() ?>actualizar_nucleo.php',
											metodo: 'POST',
											contenidoTipo: 'application/x-www-form-urlencoded',
											data: 'accion=copiar_tmp&zip=' + $wya_descarga
										});
									
							$estado = 'copiar_tmp';
						}
					}
					
					if(Estado=='copiar_tmp'){
						if(Evento == 0){
							$__("#estado").innerHTML = 'Descargando paquete de instalación...';
						}else{
							$__("#estado").innerHTML = 'Paquete de instalación descargado correctamente';
							
							$a = wyActualizar.ajax({
											url: '<?php echo com_base() ?>actualizar_nucleo.php',
											metodo: 'POST',
											contenidoTipo: 'application/x-www-form-urlencoded',
											data: 'accion=instalar_app&zip=' + $wya_descarga
										});
										
							$estado = 'instalar_app';
						}
					}
					
					if(Estado=='instalar_app'){
						if(Evento == 0){
							$__("#estado").innerHTML = 'Instalando aplicación en ' + $wya_instalacion + '...';
						}else{
							$__("#estado").innerHTML = 'Aplicación actualizada correctamente';
							
							$a = wyActualizar.ajax({
											url: '<?php echo com_base() ?>actualizar_nucleo.php',
											metodo: 'POST',
											contenidoTipo: 'application/x-www-form-urlencoded',
											data: 'accion=eliminar_tmp'
										});
										
							$estado = 'eliminar_tmp';
						}
					}
					
					// ** Actualización desde PC
					if(Estado=='instalar_app_pc'){
						if(Evento == 0){
							$__("#estado").innerHTML = 'Instalando aplicación en ' + $wya_instalacion + '...';
						}else{
							$__("#estado").innerHTML = 'Aplicación actualizada correctamente';
							$__('#wyaDescargar').disabled = true;
						}
					}
					
					if(Estado=='eliminar_tmp'){
						if(Evento == 0){
							$__("#estado").innerHTML = 'Eliminando archivos temporales...';
						}else{
							$__("#estado").innerHTML = 'Tu sitio Weby+ está actualizado correctamente';
							
							$__('#wyaInstalar').disabled = true; $__('#wyaInstalar').innerHTML = 'App Actualizada';
							$__('#wyaInstalar').style.color = '#ccc';
							$__('#wyaDescargar').disabled = true; $__('#wyaDescargar').style.color = '#ccc';
							
						}
					}
					
					if(Estado=='WYA_ERR_LEER_PAQUETE'){
						$__("#estado").innerHTML = 'Falló la conexión';
						$__("#Msj").innerHTML = $WYA_ERR_LEER_PAQUETE;
					}
					
					if(Estado=='WYA_ERR_DESCARGAR_PAQUETE'){
						$__("#estado").innerHTML = 'Falló la descarga';
						$__("#Msj").innerHTML = $WYA_ERR_DESCARGAR_PAQUETE;
					}
					
					if(Estado=='NO_FORMATO_INSTALACION'){
						$__("#estado").innerHTML = 'El formato del paquete es incorrecto';
						$__("#Msj").innerHTML = $WYA_NO_FORMATO_INSTALACION;
					}
					
					if(Estado=='NO_INSTALO'){
						$__("#estado").innerHTML = 'No se pudo instalar el paquete';
						$__("#Msj").innerHTML = $WYA_NO_INSTALO;
					}
					
				}
				
				
				function progressHandler(event){
					//$__("#n_total").innerHTML = "0%";
					//$__("#n_total").innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total;
					//estadoActualizacion($estado,0);
					//var percent = (event.loaded / 100) * 100;
					//var percent = (event.loaded / 100) * 100;
					//$__("#progressBar").value = Math.round(percent);
					//$__("#n_total").innerHTML = Math.round(percent) + "%";
				}
				function completeHandler(event){
					//$__("#estado").innerHTML = event.target.responseText;
					$__("#estado").innerHTML = 'Completado';
					$__('#wyaInstalar').disabled = false;
					$__('#wyaInstalarPC').disabled = false;
					location.reload();
					/*$estado = event.target.responseText;
					estadoActualizacion($estado,1);
					$__("#n_total").innerHTML = "0%";
					$__("progressBar").value = 0;*/
				}
				function errorHandler(event){
					$__("#estado").style.color = '#f00';
					$__("#estado").innerHTML = "Conexión fallida";
				}
				function abortHandler(event){
					$__("#estado").style.color = '#f00';
					$__("#estado").innerHTML = "Conexión abortada";
				}
				
			</script>
			<!-- p>Mientras que su sitio está siendo actualizado, estará en modo de mantenimiento. Tan pronto como las actualizaciones estén completadas, su sitio volverá a la normalidad.</p -->
