<?php 
	// 2003 - 2023 @ Yal Publicidad - yPanel
	//* defino camino al sistema 
	include_once( dirname(__DIR__) . '/.ypanel.php' );
	
	// ** Ejecuto accion Guardar / Modificar
	if( $_POST['acc'] == 'usuario' ){
		//** obtengo ID de usuario
		$post	= ( isset( $_POST['post'] ) ) ? $_POST['post'] : 0;
		//** obtengo datos de zona horaria
		$utc_dat2		= explode( '|', $_POST['utc'] );
		//** obtengo idioma de usuario
		$idioma	= ( isset( $_POST['lng'] ) ) ? $_POST['lng'] : "es";
		//** obtengo nivel de usuario
		$nivel	= ( isset( $_POST['nivel'] ) ) ? $_POST['nivel'] : "asistente";
		//** obtengo usuario, si es nuevo
		$usuario= ( isset( $_POST['user'] ) ) ? utf8_decode( _mysql_real_escape_string( $_POST['user'] ) ) : "anonimo";
		//** obtengo nivel actual de usuario
			$nivel_actual= strtolower( _mysql_obtener_reg( MYSQL_PREFIJO_SISX . "usuarios", "usuario='$usuario'", "nivel" ) );
		//** obtengo nombre de usuario
		$nombre	= ( isset( $_POST['nombre'] ) ) ? utf8_decode( _mysql_real_escape_string( $_POST['nombre'] ) ) : NULL;
		//** obtengo email de usuario
		$email	= ( isset( $_POST['email'] ) ) ? strtolower( $_POST['email'] ) : NULL;
		//** obtengo si está habilitado / deshabilitado
		$habilitado= ( isset( $_POST['habilitado'] ) ) ? $_POST['habilitado'] : 0;
		//** imprimo fecha y hora actual
		$fecha	= date( 'Y-m-d H:i:s' );
		//** obtengo IP publica
		$ip		= $_SERVER['REMOTE_ADDR'];
		//** encripto 'pass' si es nuevo o se modifica
		$pass	= ( !empty( $_POST['pass'] ) && strlen( $_POST['pass'] ) > 5 ) ? md5( encriptar( $_POST['pass'], $usuario ) ) : NULL;
		
		//** leo datos cuentas_usuarios
		$cuentas_usuarios	= _DIR_PAQUETE . YDS . '.ypanel/datos/cuentas_usuarios';
		//** si existe ususario creo datos 
		if( file_exists( $cuentas_usuarios ) ) {
			$data	= file_get_contents( $cuentas_usuarios );
			$data	= json_decode( $data, true );
			
			$data[$usuario]['nivel']	= $nivel;
			$data[$usuario]['lenguaje']	= $idioma;
			if( isset( $utc_dat2[1] ) ) {
				$data[$usuario]['utc_id'] = $utc_dat2[0];
				$data[$usuario]['utc'] = $utc_dat2[1];
			}
			
			// -- Guardo las modificciones
			$json = json_encode($data);
			file_put_contents($cuentas_usuarios, $json);
		}
		//** evaluo si creo o modifico usuario
		if( $post > 0 ){
			//** modifico pass si se ingresa una contraseña válida
			$pass	= ( $pass != NULL ) ? " `password`='$pass', " : '';
			//** modifico datos
			echo _mysql_query( "UPDATE `" . MYSQL_PREFIJO_SISX . "usuarios` SET `nivel`='$nivel',  $pass `nombre_usuario`='$nombre', `email`='$email', `ipusr`='$ip', `bloqueado`='$habilitado' WHERE id='$post'" );
			//** si el usuario cambia de nivel, modifico valores
			if( $nivel != $nivel_actual ){
				$modulos	= array();
				//** obtengo array de acceso por niveles
					$privilegios_base	= yPanel::niveles()->$nivel->privilegios;
					//** obtengo todos los paneles activos 
					//** junto al nivel de privelegios que le corresponde
					$paneles_uri		= _DIR_PAQUETE . YDS . '.ypanel/paneles.y';
					$paneles			= json_decode( file_get_contents( $paneles_uri ) );
					foreach( $paneles->modulos as $n => $r ){
						$modulos[$n]=$privilegios_base;
					}
				//** obtengo acceso a privilegios personalizado de usuario
					$priv_usuario	= _DIR_PAQUETE . YDS . '.ypanel/datos/priv/' . $usuario;
				// -- Guardo las modificciones
				$json = json_encode( $modulos ); 
				file_put_contents($priv_usuario, $json);
			}
		}else{
			if( _mysql_existe( MYSQL_PREFIJO_SISX . "usuarios", "usuario", "usuario='$usuario'" ) ){
				echo 3;
			}else{
				echo _mysql_query("INSERT INTO `" . MYSQL_PREFIJO_SISX . "usuarios`(`nivel`, `usuario`, `password`, `nombre_usuario`, `email`, `registrado`, `tokens`, `ipusr`, `bloqueado`) VALUES ( '$nivel', '$usuario', '$pass', '$nombre', '$email', '$fecha', '//==%', '$ip', '$habilitado' )") or die( _mysql_error() );
			}
		}
	}
	
	if( $_POST['acc'] == 'privilegios' ){
		$data		= array();
		$usuario	= ( $_POST['user'] ) ? $_POST['user'] : 'anonimo';
			
		//** creo array de modulos existentes
			foreach( $_POST as $c0 => $v0 ){
				$mod	= explode( '_', $c0 );
				if( $mod[0] == 'mod' ){
					$data[$mod[1]][$mod[2]] = $v0;
				}
			}
		//** cargo volores definidos por el usuario
			foreach( $_POST as $c => $v ){
				$modulo	= explode( '_', $c );
				if( $modulo[0] == 'modulo' ){
					$data[$modulo[1]][$modulo[2]] = $v;
				}
			}
		//** obtengo acceso a privilegios personalizado de usuario
			$priv_usuario	= _DIR_PAQUETE . YDS . '.ypanel/datos/priv/' . $usuario;
		// -- Guardo las modificciones
		$json = json_encode($data); 
		file_put_contents($priv_usuario, $json);
		
		echo msg_error( 'Se guardó correctamente.', 'fa-check-circle', 'alert-success' );
	}
	
	//** restablecer valores por defecto
	if( $_POST['acc'] == 'res-priv' ){
		$modulos	= array();
		$nivel_u	= ( isset( $_POST['n'] ) ) ? $_POST['n'] : 'asistente';
		$usuario	= ( $_POST['user'] ) ? $_POST['user'] : 'anonimo';
		//** obtengo nivel seleccionado
			$nivel		= strtolower( $nivel_u );
		//** obtengo array de acceso por niveles
			$privilegios_base	= yPanel::niveles()->$nivel->privilegios;
			//** obtengo todos los paneles activos 
			//** junto al nivel de privelegios que le corresponde
			$paneles_uri		= _DIR_PAQUETE . YDS . '.ypanel/paneles.y';
			$paneles			= json_decode( file_get_contents( $paneles_uri ) );
			foreach( $paneles->modulos as $n => $r ){
				$modulos[$n]=$privilegios_base;
			}
		//** obtengo acceso a privilegios personalizado de usuario
			$priv_usuario	= _DIR_PAQUETE . YDS . '.ypanel/datos/priv/' . $usuario;
		// -- Guardo las modificciones
		$json = json_encode( $modulos ); 
		file_put_contents($priv_usuario, $json);
		echo 1;
	}
	
	// ** Ejecuto accion Deshabilitar / Habilitar usuario
	if( $_POST['acc'] == 'usr-csess' ){
			//$post = str_replace('cbHabilitar','', $_POST['post'] );
			//echo com_reg_post( 'usuarios', 'bloqueado', $_POST['bloqueado'], $post );
			echo _mysql_modificar_reg( MYSQL_PREFIJO_SISX . 'usuarios', "id='{$_POST['post']}'", "tokens='Off==%'" );
	}
	
	// ** Ejecuto accion eliminar usuario
	if( $_POST['acc'] == 'usr-eliminar' ){
		$usuario = _mysql_obtener_reg( MYSQL_PREFIJO_SISX . 'usuarios', "id='{$_POST['post']}'", "usuario" );
		// ** elimino usuario del sistema
			$cuentas_usuarios	= EXT_PATH . YDS . '.ypanel/datos/cuentas_usuarios';
			if( file_exists( $cuentas_usuarios ) ) {
				$data	= file_get_contents( $cuentas_usuarios );
				$data	= json_decode( $data, true );
				unset( $data[ $usuario ] );
				// -- Guardo las modificciones
				$json = json_encode($data);
				file_put_contents($cuentas_usuarios, $json);
			}
				
			sleep(2);
				
		// ** Elimino de la base de datos
				echo _mysql_eliminar_reg( MYSQL_PREFIJO_SISX . 'usuarios', $_POST['post'] );
	}
	
	// ** Ejecuto accion Deshabilitar / Habilitar usuario
	if( $_POST['acc'] == 'usr-habilitar' ){
			//$post = str_replace('cbHabilitar','', $_POST['post'] );
			//echo com_reg_post( 'usuarios', 'bloqueado', $_POST['bloqueado'], $post );
			echo _mysql_modificar_reg( MYSQL_PREFIJO_SISX . 'usuarios', "id='{$_POST['post']}'", "bloqueado='{$_POST['h']}'" );
	}
?>	