Ya pude vincular cursos moodle con docentes y alumnos. Al mirar las distintas vistas me encuentro con un mensaje un poco aterrador en el Autogestión Docente
“Los Alumnos de la Comisión no coinciden con los matriculados en el Curso Virtual.” no tan aterrador como el botón que le sigue “Actualizar Alumnos”.
Me asusta ahora no conocer el resultado o la forma exacta de operar de ese botón, que puede ver un profesor TITULAR (en Guaraní) con perfil de PROFESOR (en Moodle).
Voy a un ejemplo de como tenemos nuestro Guaraní y nuestras aulas virtuales.
Tenemos una ACTIVIDAD xxx de 2000 alumnos que se divide en 20 COMISIONES de 100 alumnos c/u. (001 a la 020)
Cada comisión tiene su docente, o sea que hay 20 docentes para la actividad.
En Moodle tenemos un CURSO xxx por toda la actividad, y los alumnos están divididos en 20 GRUPOS según la comisión de Guaraní (001 al 020).
Los docentes comparten el espacio común y pueden poner secciones exclusivas para su grupo.
En la integración Guaraní - Moodle, cada comisión está relacionada con la actividad, no con los grupos. O al menos nunca lo explicité. Para elegir como vincular, me aparecieron los cursos relacionados con el docente, pero nada sobre los grupos
Entonces ¿qué va a pasar si el docente de la comisión 015 aprieta ese botón ?
a) Se agrega la lista completa de 100 alumnos de la comisión 015 al curso de Moodle (los que existían se ignoran, los nuevos se agregan)
b) Reemplaza la lista completa de 2000 alumnos del curso por la lista completa de 100 alumnos de la comisión 015
c) Reemplaza la lista completa de 100 alumnos aprox del grupo 015 (lo busca por docente de alguna manera) por la lista completa de 100 alumnos de la comisión 015
d) Se agrega la lista completa de alumnos de la comisión 015 al grupo 015
Y si en un curso comparten el aula física (espacio compartido) y virtual dos actividades con comisiones diferentes ? Al Actualizar con los alumnos de una comisión de la actividad, se pierden todos los alumnos de la otra ?
Supongo que todo esto lo debería averiguar solito en el ambiente de desarrollo, pero estamos con el acceso restringido en el período de cuarentena.
Te comento lo que hacen los botones Actualizar Alumnos y Actualizar Docentes:
Toma todos los alumnos de la comisión (con estado pendiente o aceptado en dicha comisión, y calidad activo en la carrera).
Se fija de esos alumnos, los que hay que matricular en Moodle. También se fija los que hay que desmatricular, alumnos que se dieron de baja de la comisión.
Si el alumno ya esta creado en Moodle (se fija en la tabla int_pv_usuarios de Guaraní), solamente lo matriculo al curso de Moodle (curso asociado con la comisión). Si no existe, creo el usuario en Moodle y lo matriculo al curso.
Similar hace con los docentes!!!
Consideraciones:
A la hora de matricular, verifica que si ya esta matriculado en Moodle.
Si hay alumnos sin email en la comisión, no se lleva a cabo la actualización en Moodle, y muestra un mensaje de error con los alumnos que no tienen email (obligatorio en Moodle).
Por una cuestión de performance, cuando se crean o matriculan usuarios en Moodle se hace todo de manera masiva. Osea, si hay un usuario con datos inválidos no se matricula a ninguno, ya que se hace una sola petición a Moodle con todos los usuarios.
Entonces ¿qué va a pasar si el docente de la comisión 015 aprieta ese botón ?
a) Se agrega la lista completa de 100 alumnos de la comisión 015 al curso de Moodle (los que existían se ignoran, los nuevos se agregan)
Exacto, solo matricula los de esa comisión.
b) Reemplaza la lista completa de 2000 alumnos del curso por la lista completa de 100 alumnos de la comisión 015
No reemplaza, agrega alumnos al curso.
c) Reemplaza la lista completa de 100 alumnos aprox del grupo 015 (lo busca por docente de alguna manera) por la lista completa de 100 alumnos de la comisión 015
No, busca los alumnos con estado aceptado o pendiente de la comisión, y luego los matricula al curso asociado en Moodle.
d) Se agrega la lista completa de alumnos de la comisión 015 al grupo 015
Se agregan/matriculan en el curso de Moodle. Cuando vas al curso, donde dice "Usuarios matriculados" vas a ver que se agregan.
Y si en un curso comparten el aula física (espacio compartido) y virtual dos actividades con comisiones diferentes ? Al Actualizar con los alumnos de una comisión de la actividad, se pierden todos los alumnos de la otra ?
No, va a agregar, no vas a perder los alumnos de la otra comisión.
Igualmente, te recomiendo que armen un ambiente de prueba, y comiencen a probar estos casos que te traen inquietudes, y cualquier cosa nos reportan.
Hice la prueba con Docentes primero, pensando que iba a ser más inofensiva.
Primero, linkeé al docente de la comisión 015 de la actividad XXX con su usuario de Moodle en “Administrar persona”.
Luego en “Administrar comisiones”, en la solapa Moodle me mostró todos los cursos que ese docente tiene en Moodle y estaba incluído el curso XXX.
Procedí a vincular la comisión 015 con el curso XXX y el resultado fue que me dejó a ese docente solo y borró del curso XXX a todos los otros 19 docentes de las comisiones 001 a 014 y 016 a 020 (que todavía no están con vinculación con moodle).
Me dí cuenta recién hoy cuando empezaron a llover los llamados de los otros 19 docentes …
No se si concluir que la vinculación Guaraní - Moodle está pensada para un esquema donde un curso de moodle es una comisión de Guaraní. Mientras que en nuestro esquema, un GRUPO de un curso de Moodle es una comsión de Guaraní, mientras que un curso de Moodle es una actividad de Guaraní para nosotros.
El tema es que Moodle ya está funcionando independiente. Ya tenemos 125 cursos con más de 300 grupos cada uno con sus 200 docentes y 4500 alumnos cargados y trabajando hace 15 días…
Por lo que me sugerís, entiendo que si un curso lo relaciono primero con 20 comisiones, luego cuando empiezo a vincular los docentes, el primero va a borrar de Moodle a todos los preexistentes que no fueron vinculados via Guaraní (que fue lo que pasó en lo que comenté arriba). Pero al vincular el segundo vía Guaraní , me va dejar los ya vinculados por la misma vía.
1) Primero vinculen todos las comisiones con el curso de Moodle, sin matricular alumnos o docentes.
Por lo que ví, para hacer la vinculación en la pestaña de Moodle en una comisión de "Actualizar comisiones", tengo que:
- Vincular docente Guaraní con Docente Moodle
- El listado de cursos a elegir va a depender de los cursos a los que está habilitado el docente.
- Cuando elijo uno de esos cursos para vincular, el docente ya queda vinculado.
No sé dónde se puede vincular una comisión con un curso Moodle sin matricular al docente…
Como no podemos acceder al entorno de desarrollo de Guaraní durante la cuarentena, estamos preparando un entorno de desarrollo de Moodle… Total lo que se rompe al experimentar es Moodle… Queremos tener el dominio absoluto para comprender exactamente qué estamos haciendo en cada paso y no simplemente seguir una guía de instrucciones .
El tema es que Moodle ya está funcionando independiente. Ya tenemos 125 cursos con más de 300 grupos cada uno con sus 200 docentes y 4500 alumnos cargados y trabajando hace 15 días....
Ahí esta el problema, son profesores de Moodle que no están asociados a los docentes de Guaraní.
Existen los docentes en Guaraní para vincularlos?
Hay dos opciones:
Si la respuesta a “Existen los docentes en Guaraní para vincularlos?” es “si”, entonces le podemos adelantar un comando que ya tenemos desarrollado que hace la vinculación.
Si la respuesta es “no”, deberían personalizar el código para que no “desmatricule” a dichos docentes que Guaraní no conoce.
Hoy no existen. Simplemente estoy esperando la info de los últimos para dar de alta a todos juntos con el script de migración. En Guaraní hay mayor requerimiento de datos que en Moodle, y los datos de Moodle no me alcanzan. Con la universidad abierta se consiguen rápido… pero a distancia es más complicado.
El tema va surgir con los alumnos. Suponiendo que funciona de manera similar, va a estar todo perfecto con los que están en Guaraní (en nuestro caso los ingresantes 2020) pero los que no están (ingresos anteriores) van a caer dentro de
2) Si la respuesta es “no”, deberían personalizar el código para que no “desmatricule” a dichos docentes que Guaraní no conoce.
pero alumnos en vez de docentes.
Para hacer la vinculación total, lo ideal sería terminar primero la migración completa y después vincular al menos los cursos que tengan gente compartida de ambas situaciones (alumnos en guaraní, alumnos en sistema viejo).
Por ahora solo convendría vincular a todos los docentes , y solo a los alumnos de cursos que tengan ingresantes 2020.
Gracias por toda esta ayuda para comprender los detalles.
Con los alumnos funciona diferente, se fija los alumnos que fueron dados de baja de la comisión (siempre y cuando dichos alumnos no estén en otra comisión asociada al mismo curso de Moodle), y los desmatricula del curso de Moodle (no borra el usuario, sino que lo quita del curso).
Con los docentes funciona como te comentaba antes, si hay docentes en Moodle que Guaraní no reconoce, los desmatricula del curso. Si necesitas cambiar esta funcionalidad, con gusto te explico como personalizarlo.
Con los docentes no es problema. Porque a la larga todos los que están en Moodle tienen que estar en Guaraní.
Con los alumnos, el problema sería con:
a) En este momento, con los que todavía no están en Guaraní pero comparten comisión con los que sí están. Por lo que me contás, no los daría de baja. porque solo da de baja a los que fueron dados de baja en la comisión e Guaraní. (Imaginando que “dados de baja”, significa que están en la tabla de la comisión pero con algún flag de baja).
b) Después de tener a todos en Guaraní, con los oyentes (ejemplo: un alumno regular pero sin final, que ingresa a los contenidos del curso como repaso para el final). Están matriculados y autorizados en Moodle. Pero en Guaraní no están registrados en la comisión porque por ejemplo ya regularizaron la materia. (Y todavía no investigué si se pueden regustar oyentes de alguna manera en Guaraní).
Esto en realidad técnicamente sería el mismo caso que “a)”
Con los docentes no es problema. Porque a la larga todos los que están en Moodle tienen que estar en Guaraní.
Para la próxima versión (3.18.0) tenemos desarrollado un comando que vincula los usuarios de Moodle (los que aun no fueron vinculados) con personas de Guaraní, para ello debe haber uno o mas campos de matcheo, ej: que tengan el mismo email, nombre de usuario, nombre y apellido.
Si mas adelante necesitan un adelanto de dicho comando, creen un GDS solicitándolo.
a) En este momento, con los que todavía no están en Guaraní pero comparten comisión con los que sí están. Por lo que me contás, no los daría de baja. porque solo da de baja a los que fueron dados de baja en la comisión e Guaraní. (Imaginando que "dados de baja", significa que están en la tabla de la comisión pero con algún flag de baja).
Exacto, porque para los alumnos tenes una tabla donde registramos las bajas. Con los docentes no tenemos registro, solo sabemos quienes están en la comisión ahora mismo.
Para la próxima versión (3.18.0) tenemos desarrollado un comando que vincula los usuarios de Moodle (los que aun no fueron vinculados) con personas de Guaraní
a) ¿La vinculación propiamente dicha es poner “persona” de Guaraní mdp_personas en “idnumber” de Moodle mdl_user ? ¿O hay algún campo más en algún otro lugar ?
b) ¿ Hay algo a favor o en contra en tener la base de Moodle en un schema dentro de la base de Guaraní ?
La primera que me viene a la cabeza sin pensar mucho es que si se rompe la base por Moodle, se cae también Guaraní.
a) ¿La vinculación propiamente dicha es poner "persona" de Guaraní mdp_personas en "idnumber" de Moodle mdl_user ? ¿O hay algún campo más en algún otro lugar ?
Parecido, pero funciona distinto: Primero trae los usuarios de Moodle que aun no fueron vinculados con una persona de Guaraní. Luego se hace el mapeo con las personas de Guaraní, si elegís por ejemplo que matchee por email dicho campo debe ser igual en ambos sistemas, este matcheo lo muestra en una tabla en la consola. Luego revisas, y si confirmas que haga la vinculación lo que hace es guardar en la tabla int_pv_usuarios de Guaraní, y llama al WS de Moodle core_user_update_users para completar el campo idnumber.
b) ¿ Hay algo a favor o en contra en tener la base de Moodle en un schema dentro de la base de Guaraní ?
Los pasos de [url=https://docs.moodle.org/38/en/Installing_Moodle]instalación de Moodle[/url] dicen [url=https://docs.moodle.org/38/en/Installing_Moodle#Create_an_empty_database]Create an empty database[/url]. Mi recomendación seria tener una DB aparte.
Después de investigar un poco, comparto lo fácil que es linkear las dos bases Moodle y Guaraní desde distintos servidores
En la base de Guaraní creo un nuevo schema moodle que guardará las tablas reales de Moodle. (Al hacer update/insert/delete desde Guaraní, lo está haciendo sobre la base real de Moodle)
CREATE EXTENSION postgres_fdw;
CREATE SERVER Moodle
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'ip de Moodle o nombre host', port '5432', dbname 'MiBaseMoodle');
CREATE USER MAPPING FOR postgres
SERVER Moodle
OPTIONS (user 'usuarioAdminMoodle', password 'passwdDeEseUsuario');
IMPORT FOREIGN SCHEMA public LIMIT TO (tablas_a_linkear_separadas_por_comas)
FROM SERVER Moodle INTO moodle;
Luego desde Guaraní se puede hacer
SELECT * from moodle.mdl_user
y UPDATES / INSERTS / DELETES como si fuera una tabla más del Guaraní
Hola Fernando, antes que nada gracias por el aporte!!!
Igualmente veo un par de cosas en contra con este esquema:
Estas acoplando Guaraní y Moodle, la idea seria que se conecten por Web Services, y no directamente por Base de datos. Tenes que tener cuidado, porque podes borrar algo de un sistema a otro, etc.
Muchas universidades tienen instalaciones previas de Moodle, e instaladas en distintos servidores. Con lo cual no seria recomendable dicha solución.
La idea no es trabajar todo de esa forma, sino tener una conexión directa más que nada por un tema de integridad, ya que al estar con instalaciones con distintos orígenes de datos es muchísimo más rápido detectar emails duplicados (que Guaraní permite y Moodle no), usuarios no vinculados , a través de una sentencia SQL que bajando a Excel los distintos datos de cada servidor y luego cruzando esos datos.
Un simple ejemplo, con esta consulta detecto rápidamente usuarios no vinculados o usuarios vinculados que en Guaraní comparten mail…
select id, username, idnumber, firstname, lastname, u.email, t.email, t.persona, apellido, nombres from moodle.mdl_user u
join mdp_personas_contactos t on u.email=t.email
join mdp_personas p on p.persona=t.persona
where contacto_tipo='MP' and idnumber <> cast (t.persona as text)
Ok, igualmente no es una practica que recomendamos!!!
Lo que te podría recomendar en tal caso seria exportar los usuario de Guaraní a Moodle a través de CSV, te dejo documentación: https://docs.moodle.org/all/es/37/Subir_usuarios. Esto también es arcaico pero es mas recomendable que lo anterior.
Trabajé con datos, docentes y comisiones reales. Con los alumnos funcionó perfecto para matricularlos al curso. Para nuestros requerimientos nos falta meter los alumnos matriculados adentro de un grupo, y al no existir en moodle (o no haberla encontrado) esa opción de meter en un grupo masivamente a los que no tienen grupo, no consiguimos una ventaja mayor a generar un archivo para matriculación por archivo de moodle, especialmente cuando un curso está integrado por más de dos comisiones.
Lo más raro que encontré hasta ahora fue con los docentes. Cuando matriculo al primer docente, o sea cuando vinculo el curso con la comisión, me borra al resto de los docentes del curso que no estén vinculados en Guaraní a ese mismo curso, aunque estén vinculados a Moodle. Entonces, para vincular al segundo en Guaraní, tengo que ir a Moodle a agregarlo otra vez, ya que solo puedo vincular a la comisión con el curso a través de los cursos a los cuales el docente está inscripto.
Funciona si agrego uno a Guaraní, vuelvo a Moodle a reagregar al 2do, vinculo al 2do a Guaraní, vuelvo a Moodle a reagregar al 3ro, vinculo al 3ro a Guaraní y así…
Cuando lo más lógico sería que el primero no me borrara al resto, y vincular el 2do a Guaraní, vincular el 3ro a Guaraní, y no volver a Moodle.
Lo que pasa es que cuando Guaraní encuentra profesores en el curso de Moodle que no se corresponden con los docentes de la comisión, los desmatricula del curso de Moodle. Lo que tenemos en mente a futuro es que desmatricule solo si esos profesores de Moodle se corresponden con docentes de Guaraní, con lo cual todo profesor que agregues por fuera de la conexión Guaraní-Moodle no sera desmatriculado.
Por ahora te recomiendo lo siguiente:
En la función coincidenDocentesMoodle de la clase php/nucleo/moodle/moodle_nucleo.php vas a tener que eliminar/comentar la linea que dice: