Acceso a módulos
Quién ve cada módulo y por qué, con matrículas nativas de Moodle por cargo, por empresa cliente o individuales, y la tabla de exclusiones.
El acceso a los módulos se resuelve con matrículas nativas de Moodle; classes/access.php las administra y explica su origen.
Orígenes del acceso
| Origen | Mecanismo de Moodle | Comportamiento |
|---|---|---|
| Por cargo | Matrícula por cohorte (enrol_cohort) con cohortes cargo_* (nombre "Cargo: …"), rol student | Dinámica: quien entra a la cohorte del cargo recibe el módulo; quien sale lo pierde. Las rutas obligatorias del manual (Módulos 1–12) se crean con create-training-paths.php. |
| Por empresa cliente | Matrícula por cohorte con cohortes cli_* | Igual que por cargo. Ver Clientes. |
| Individual | Matrícula manual (enrol_manual) | A una persona, a un equipo o a un área (se matricula a cada persona; quien entre después se agrega con el mismo botón). |
| Grupo (otras cohortes) | Matrícula por cohorte | Se muestra como "Grupo: …". |
| Desactivado | Fila en local_deltamodules_excl + matrícula por cohorte suspendida | Para quitarle a una persona un módulo que le llega por cargo o empresa sin sacarla de la cohorte. Su avance se conserva. |
Los módulos del manual (access::MANUAL: M01 a M12) tienen rutas obligatorias por cargo que no se quitan desde la plataforma: access::remove_cohort() lanza una excepción si se intenta quitar una cohorte cargo_* de uno de esos módulos; a una persona se le desactiva el módulo.
API de access
| Método | Qué hace |
|---|---|
members($courseid) | Personas con acceso: userid => ['user', 'origins' => [...], 'manual', 'cohort', 'excluded'], ordenadas por apellido. |
cohorts($courseid) | Cohortes que dan el módulo: enrolid => ['cohortid', 'name', 'kind' => cargo, cliente u otro, 'student']. |
add_cohort($courseid, $cohortid) | Da el módulo a un cargo o a una empresa (instancia enrol_cohort como estudiante) y sincroniza. |
remove_cohort($courseid, $enrolid) | Quita la instancia (no las rutas del manual). |
enrol_users($courseid, $userids) | Matrícula individual (crea o activa la instancia manual); no matricula super administradores; quita la exclusión si la había. |
unenrol_user($courseid, $userid) | Quita la matrícula individual. |
exclude($courseid, $userid) | Inserta en local_deltamodules_excl, quita la matrícula individual y suspende las matrículas por cohorte. |
include($courseid, $userid) | Borra la exclusión y reactiva sus matrículas por cohorte. |
set_person($courseid, $userid, $on) | Interruptor por persona: encendido = incluye y, si no le llega por cohorte, la matricula individualmente; apagado = si le llega por cohorte la excluye, si no, la desmatricula. Devuelve on, off o none. Ignora a los super administradores. |
state($m) | none (no lo tiene), off (excluido) u on. |
person_modules($userid) | Todos los cursos (menos PTS) con origen, si lo ve, si está excluido. Lo usa personmodules.php. |
Observador access::enforce
La sincronización de cohortes de Moodle puede reactivar una matrícula suspendida. access::enforce se suscribe a \core\event\user_enrolment_created y \core\event\user_enrolment_updated: si la matrícula es por cohorte y la persona está en local_deltamodules_excl para ese curso, la vuelve a suspender al instante.
Pantallas
| Página | Ruta en la plataforma | Capacidad | Qué hace |
|---|---|---|---|
modaccess.php?id=<courseid> | Módulos → Personas | moodle/course:create | Lista con todo el personal y los usuarios de empresas cliente; interruptor por persona, filtros (área, cargo o empresa, equipo, estado), acción masiva y lista de cargos y empresas que reciben el módulo automáticamente. |
personmodules.php?id=<userid> | Personal Deltamontero → Módulos | moodle/course:create | Todos los módulos de una persona, marcados los que ve y por qué; al guardar aplica set_person a cada cambio. |
health::check() informa cuando hay personas que ven videos de un módulo sin tenerlo asignado (Moodle no registra su avance) y enlaza a Módulos → Personas.