No se en que estado esta su instalación de la 3.18, por lo que veo en el error (Username already exists) ya existe un usuario en Moodle con un username dado (ej: pepe), si en SIU-Guaraní existe un usuario cuyo username también es “pepe” va a dar error.
La cuestión es porque ya existe ese usuario en Moodle? Se están conectado al mismo Moodle desde dos o mas instalaciones de SIU-Guaraní?
El Moodle en cuestión ya estuvo conectado con una instalación de SIU-Guaraní, y ahora lo están reconectando con otra instalación nueva?
En la universidad ya existe un moodle hace años, con cursos y usuarios. Nunca se conectó a ningún guarani, sería la primera vez.
Yo conecté mi copia local de prueba a un modle de prueba con cursos y usuarios y quise actualizar los alumnos del curso de moodle relacionado desde guarani.
Ese alumno ya existe en moodle ya que como te decía, es un moodle con varios años de uso, es decir, están ya todos los alumnos de la universidad como usuarios practicamente.
No deberia detectar que existe, y sólo agregarlo en el curso>?
Mi compañero que se ocupa de Moodle me dice que está bien configurado y que en el log figura que fue llamado ese servicio, sin error. Alguna otra cosa a mirar ?
Si en el archivo /instalacion/i__desarrollo/p__guarani/logs/sistema.log no esta escribiendo el error, entonces vamos a hacer que se muestre por consola. En la función validarResponse del archivo /php/nucleo/moodle/moodle_nucleo.php, ni bien empieza la función agrega lo siguiente de forma temporal:
var_dump(print_r($response, true));
Ahora cada vez que corras el comando va a mostrar por consola cuando haya un error de comunicación con Moodle. Envíame lo que te muestra.
Parece que no pusieron bien la linea que les pase en el mensaje anterior, yo la agregue y me muestra el mensaje de error en la consola (provoqué el error deshabilitando la función core_user_get_users en Moodle).
Te pediría que revises y vuelvas a intentar, porque dicho mensaje nos dirá puntualmente cual es el problema.
Pasos:
Ir a la función validarResponse del archivo php/nucleo/moodle/moodle_nucleo.php.
Al principio de todo agregar la siguiente linea: var_dump(print_r($response, true)); (no subir los cambios, es solo algo temporal para ver el error).
Volver a ejecutar el comando.
En mi caso el error es “Access to the function core_user_get_users() is not allowed.”, pero en su caso debe ser otra causa.
La línea está bien puesta, copié igualmente la tuya y la puse y en moodle no da error.
En el log de moodle figura que fue llamada la función sin error.
Probé eliminar la función en moodle y si me mostró el error que adjunto. Pero cuando la agrego, falla sin mostrar nada.
Volve a correr el comando, y pasame lo que muestra por consola.
NOTA: Hay un problema en el cual los logs de consola no se están guardando, ya que esta información que te estoy pidiendo debería estar en los logs, vamos a ver de corregirlo.
Tiempo de respuesta de Moodle, si se trata de muchos usuarios Moodle puede tardar mucho en responder el webservice, y esto hace que se produzca un timeout. Estos valores de timeout se pueden incrementar en los servidores donde están instalados Guaraní y Moodle.
Otra cosa que observo es que Moodle esta devolviendo lo siguiente:
debuginfo "users => Detectado valor de respuesta no válido: username => Detectado valor de respuesta no válido: Invalid external api response: the value is \"28960853 \" of PHP type \"string\", the server was expecting \"username\" type"
Si te fijas bien tenes un usuario en Moodle cuyo Nombre de usuario es "28960853 " (con un espacio al final). Esto hace que se rompa la respuesta de Moodle, ya que dicho campo no puede contener espacios.
La pregunta es, como llego ese espacio allí? ya que Moodle te valida en el alta de la persona. ustedes dieron de alta via CSV?
Dale, ponele mas énfasis al punto 3 que creo que es el mas importante (puse mal el orden).
En cuanto al Nombre de usuario en Moodle, el mismo se encuentra en la tabla mdl_user columna username, se podría correr una query como sigue para sacar los espacios:
Por ahora podes quitar ese var_dump que agregamos, fíjate que en tus mensajes fui borrando el token que es un dato sensible, igual veo que te trata de un entorno de prueba.
El error ahora es este:
debuginfo "users => Detectado valor de respuesta no válido: username => Detectado valor de respuesta no válido: Invalid external api response: the value is \"IN0001\" of PHP type \"string\", the server was expecting \"username\" type"
Tenes un usuario cuyo Nombre de usuario contiene mayúsculas (IN0001), podes hacer esto para corregirlo: