Error Solicitar Certificaciones Gestión 3.23

Hola Buenos días .
Tenemos un problema en la operación “Solicitar Certificaciones” en Egresados > Actualizaciones.

Desde el usuario toba, es posible acceder a la operación, pero los usuarios del Área de Títulos genera un error por pantalla.
En la versión anterior de producción , 3.19 no se presenta este error

Se han encontrado los siguientes problemas:

Se esta pasando null, un array o una matriz a un campo que espera un valor escalar

Adjunto logs del sistema, apache y perfil funcional.

Saludos.
apache access.txt (1,2 KB)
perfil_admin_titiulos.xml.txt (39,4 KB)
sistema.txt (1,9 KB)

Ir a la issue

Hola Diego buenas tardes

Vamos analizar bien esto y le respondemos si? mientras le consultamos :

PUdieron comparar el perfil funcional del usuario toba contra el del usuario del Área de Títulos ? esto les sucede con ttodos los usuarios del Área de Títulos o solo con algun/os?

2 - corroboraron que esos perfiles del area de titulos no tengan asignado perfiles de datos?

3 - esto les sucede solo en la operacion de Solicitar Certificaciones o también en otras operaciones de Egresados?

saludos

Hola Sebastián.

El usuario toba, al ser administrador del sistema tiene acceso a toda la funcionalidad.
Compare el perfil funcional de títulos de la versión 3.19 con la 3.23 fuera de las nuevas operaciones tienen similitud en las operaciones seleccionadas.

Los usuarios del área de Títulos tiene los perfiles de Datos correctos.
El problema lo tienen los usuarios con ese perfil funcional, también se presento el mismo error al asignar el perfil a un usuario de prueba que utilizamos en el área de sistemas

Por el momento el área de Títulos nos presento el error en “Solicitar Certificaciones”.

EL cambio de versión lo realizamos hace unas semanas.

adjunto perfil de la V319

perfil_admin_titulos-319.xml.txt (38,5 KB)

Saludos.

Buenas tardes Diego!

El archivo toba_escapador.php contiene una linea comentada, debug_print_backtrace(), que puede generar logs más precisos de la situación.
Descomentenla y generen logs del momento donde se lanza el error para adjuntarlos acá y poder tener más detalles.

Saludos!

Hola Gabriel buenas tardes!

Descomente el archivo.

Adjunto los logs que se generaron.
Muchas Gracias.

Saludos.
apache_error.txt (1,5 KB)
salida-error-pantalla.txt (1,3 KB)
sistemas_log_debug.txt (1,9 KB)

Hola @dbogado , gracias por los logs, veo lo siguiente en la traza:

Solicitar Certificaciones 
#0 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/lib/toba_escapador.php(43): toba_escapador->quitar_tags(NULL) 
#1 /usr/local/proyectos/guarani/php/extension_toba/componentes/interface/guarani_ei_pantalla.php(217): toba_escapador->escapeHtmlAttr(NULL) 
#2 /usr/local/proyectos/guarani/php/extension_toba/componentes/interface/guarani_ei_pantalla.php(177): guarani_ei_pantalla->extras_cabecera() 
#3 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ei_pantalla.php(443): guarani_ei_pantalla->generar_html_barra_sup('...', true, '...') 
#4 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ci.php(839): toba_ei_pantalla->generar_html() 
#5 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/toba_solicitud_web.php(256): toba_ci->generar_html() 
#6 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/toba_solicitud_web.php(188): toba_solicitud_web->servicio__generar_html(Array) 
#7 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/toba_solicitud_web.php(60): toba_solicitud_web->procesar_servicios() 
#8 /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/nucleo/toba_nucleo.php(96): toba_solicitud_web->procesar() 
#9 /usr/local/proyectos/guarani/www/aplicacion.php(33): toba_nucleo->acceso_web() 

Seguramente tenes en composer.lock una versión de siu-toba/framework inferior a v3.4.0, ya que en la función escapeHtml de vendor/siu-toba/framework/php/nucleo/lib/toba_escapador.php valida que $input no sea NULL:

	function escapeHtml($input)
	{		
        if (is_null($input)) {
            return '';
        }
	    ...
	}

¿que version de Guaraní y siu-toba/framework tenes instalada?

Para siu-toba/framework v3.3.26 e inferior ya no valida que $input no sea NULL.

3.4.0 (2023-12-06)
Se eliminan parámetros nulos en los vinculos para que no falle el escapado de los mismos.

Saludos.

Hola Eduardo, gracias por la respuesta.

Esta es la salida cuando llamo a toba en la carpeta bin/.
También adjunto mi archivo composer.lock
Alguna forma de chequear el framework que se esta utilizando?

Esta es una actualización de la versión 3.19 a la 3.23, pero en un nuevo servidor siguiendo la documentación.

https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.23.0/actualizacion_de_produccion/gestion_paralelo

Saludos.
composer.lock.txt (294,7 KB)


 ---------------------------------------------------------------------------------------------------
  SIU-TOBA ( Ambiente de desarrollo WEB )                                                           
 ---------------------------------------------------------------------------------------------------

 Versi�n: 3.4.1
 
 Directorio de la INSTALACION: /usr/local/proyectos/guarani/vendor/siu-toba/framework

 Comandos disponibles
 --------------------

 instalacion              Administracion de la INSTALACION
 base                     Administracion de BASES de DATOS
 instancia                Administracion de INSTANCIAS
 proyecto                 Administracion de PROYECTOS
 personalizacion          Administracion de PERSONALIZACIONES
 test                     Ejecucion de baterias de TEST
 servicios_web            Administracion de servicios web

 ___________________________________________________________________________________________________
 TIEMPO: 0,005 segundos

Hola Diego, gracias por la info!!!

Veo que dice lo siguiente:

        {
            "name": "siu-toba/framework",
            "version": "v3.4.3",

Lo cual esta bien según como esta en colab: https://colab.siu.edu.ar/svn/guarani3/nodos/uno/gestion/trunk/3.23.0/composer.lock

Revisa Esquema de instalación y actualización de SIU-Guaraní Gestión, tanto en Actualización del entorno de desarrollo con personalizaciones como en Actualización del entorno de desarrollo sin personalizaciones en un punto debes ejecutar composer install, ¿lo ejecutaste? ¿tenes vendor/siu-toba/framework/php/nucleo/lib/toba_escapador.php con la validación de is_null?

Saludos.

Hola Eduardo

Seguro instale de esta manera, ya revise la documentación que me enviaste.

composer install --prefer-dist --no-dev --optimize-autoloader

Y adjunto este archivo, no veo lo que nombras de el campo “validacion”

Saludos.

toba_escapador.php.txt (2,5 KB)

Veo que está la validación:

	function escapeHtml($input)
	{		
        if (is_null($input)) {
            return '';
        }
		if (isset($this->_es_editor) && ($this->_es_editor === true)) {
			return htmlentities($input, ENT_QUOTES , apex_default_charset);
		}  
		$tags = $this->quitar_tags($input);
		if (! empty($tags)) {
			$resultado = '';
			for( $i = 0; $i < count(current($tags)); $i++) {
				if (isset($tags[1][$i])) {
					$valor =  parent::escapeHtml($tags[2][$i]);
					$resultado .=  "<{$tags[1][$i]}>{$valor}</{$tags[1][$i]}>";
				}
			}
		} else {
			$resultado = parent::escapeHtml((null !== $input) ? $input: '');
		}
		return  $resultado;
	}

Hay algo raro, si $input es NULL nunca debería llegar a ejecutarse $tags = $this->quitar_tags($input);, con lo cual el error throw new toba_error_def('Se esta pasando null, un array o una matriz a un campo que espera un valor escalar'); nunca se debería dar.

¿estamos hablando del error inicial o ahora te esta dando otro error distinto?

No, me estuve confundiendo, veo que se está llamando a la función escapeHtmlAttr con $input = NULL, eso pasa en php/extension_toba/componentes/interface/guarani_ei_pantalla.php linea 217 donde hace $url_vinculo = toba::escaper()->escapeHtmlAttr($url_vinculo);.

Ahora bien, ¿por qué $url_vinculo es NULL?

¿qué esta devolviendo lo siguiente?

					$url_vinculo = toba::vinculador()->crear_vinculo(
						toba_proyecto::get_id(), 
						'41000154', 
						array('codigo_operacion' => $codigo_operacion, 'nombre_operacion' => mb_convert_encoding($nombre_operacion, "UTF-8"), 'tm' => '1'), 
						array('celda_memoria' => 'popup_ver_params')
					);

Yo al ingresar a la operación » Egresados » Actualizaciones » Solicitar Certificaciones debuggeando me muestra lo siguiente:

string(186) "/guarani/gestion/aplicacion.php?ah=st6a3c4410afabf3.53582768&ai=guarani%7C%7C41000154&tcm=popup_ver_params&codigo_operacion=800SIUEGR005&nombre_operacion=Solicitar%20Certificaciones&tm=1"

¿tenes las operación Visualizar parámetros (41000154) deshabilitada?

Hola Eduardo, buenos días.

Ese es el parámetro que faltaba en el perfil funcional.

Visualizar parámetros (41000154)

En la versión 3.19 no estaba seleccionada esa operación, entonces al crear el perfil en la versión 3.23, no se activo.

Muchas gracias, por la ayuda.
Saludos.