Mapuche 3.31 falla exportacion de usuarios para arai

Hola!

Estamos teniendo inconvenientes a la hora de generar el JSON desde Mapuche 3.31.0.

El primero, en el archivo vendor/siu-toba/framework/php/modelo/aplicacion/toba_aplicacion_modelo_base.php tenemos que castear los strigns dentro del trim sino da muchos Notices del tipo deprecated:

$datosUsuarios[$clave] = array(
     'usuario' => $datosUsuarioToba['usuario'],
     'nombres' => trim((string) $nombresApellidos['nombres']),
     'apellidos' => trim((string) $nombresApellidos['apellidos']),
     'nombre_completo' => trim((string) $datosUsuarioToba['nombre']),
     'bloqueado' => strval($datosUsuarioToba['bloqueado']),
     'emails' => trim((string) $datosUsuarioToba['email']) != "" ? trim((string) $datosUsuarioToba['email']) : NULL,
     'clave' => $datosUsuarioToba['clave'],
     'autentificacion' => $datosUsuarioToba['autentificacion_arai'],

Lo solucionamos con un replace dentro de vim:

:%s/trim(\$/trim((string) \$/gc

Despues, y esta es la importante, al generar el json falla la validacion:

(arivas)root@mapuche-7-dev:/srv/prueba/mapuche_prueba_3_3310# ./bin/toba proyecto exportar_usuarios_arai -p mapuche -f cuentasMapuchePrueba.json
 Creando JSON de personas y cuentas:
301/301 [========================================================================================>] 100.00% 00:00:00   
PHP Fatal error:  Uncaught SIU\JsonUtil\JsonValidationException: "/srv/prueba/mapuche_prueba_3_3310/instalacion/usersExportFiles/cuentasMapuchePrueba.json.json" does not match the expected JSON schema in /srv/prueba/mapuche_prueba_3_3310/vendor/siu/json-util/src/SIU/JsonUtil/JsonFile.php:304
Stack trace:
#0 /srv/prueba/mapuche_prueba_3_3310/vendor/siu/json-util/src/SIU/JsonUtil/JsonFile.php(148): SIU\JsonUtil\JsonFile::validateStringSchema()
#1 /srv/prueba/mapuche_prueba_3_3310/vendor/siu/arai-json-migrator/src/SIU/AraiJsonMigrator/AraiMigratorManager.php(76): SIU\JsonUtil\JsonFile->validateHashSchema()
#2 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/modelo/aplicacion/toba_aplicacion_comando_base.php(199): SIU\AraiJsonMigrator\AraiMigratorManager->save()
#3 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/consola/comandos/comando_proyecto.php(87): toba_aplicacion_comando_base->opcion__exportar_usuarios_arai()
#4 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/consola/comando.php(90): comando_proyecto->ejecutar_opcion()
#5 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/consola/consola.php(78): comando->procesar()
#6 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/consola/consola.php(55): consola->invocar_comando()
#7 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/php/consola/run.php(32): consola->run()
#8 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/bin/launcher.php(31): require_once('...')
#9 /srv/prueba/mapuche_prueba_3_3310/vendor/siu-toba/framework/bin/toba(2): require_once('...')
#10 /srv/prueba/mapuche_prueba_3_3310/bin/toba(119): include('...')
#11 {main}
  thrown in /srv/prueba/mapuche_prueba_3_3310/vendor/siu/json-util/src/SIU/JsonUtil/JsonFile.php on line 304

Si nosotros comentamos la validacion, dejando solo que escriba lo que haya generado, en el archivo vendor/siu/arai-json-migrator/src/SIU/AraiJsonMigrator/AraiMigratorManager.php ,

    public function save($path, AraiMigrator $araiMigrator)
    {
        $jsonFile = new JsonFile($path);
        $hash = $araiMigrator->toArray();
        //if ($jsonFile->validateHashSchema($hash, $this->getSchemaPath())) {
            $jsonFile->write($hash);
        //}
        return true;
    }

el json se genera y segun las pruebas que hicimos, se genera corretamente**,** por lo que asumimos que hay algun error en esa funcion, lo mas probable es que sea por el paso a php 8.x, ya que en una instalacion en php 7 funciona bien y en otra instalacion en php 8, pero de la version 3.30.2-r1 produce la misma falla.

Saluds!

Andrés Rivas

Universidad Nacional de Córdoba

Hola Andres, en el log de apache te muestra algún error ?.

Saludos,

Mariela

pasó un tiempo ya, no me acuerdo..

Igual, esto se ejecuta por consola, no via web

Hola Andrés, me podrían cargar un GDS para seguir este caso?

Gracias,
Mariela

Hola Andres, podrían verificar que no tengan mails que no son aceptados. Luego de generar el archivo agentes-arai.json con la modificación que me pasaron anteriormente del if comentado. Verificar con el siguiente comando si existe algún mail que no esté aceptado.

jq -r ‘paths(scalars) as $p | select(getpath($p) | type == “string” and test(“@”)) | select(getpath($p) | test(“^[a-z0-9#%_~-]+(?:\\.[a-z0-9#%_~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$”) | not) | {path: $p, value: getpath($p)}’ agentes-arai.json

Saludos,
Mariela