Academia Deltamontero · Documentación
Desarrollolocal_deltamodules

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

OrigenMecanismo de MoodleComportamiento
Por cargoMatrícula por cohorte (enrol_cohort) con cohortes cargo_* (nombre "Cargo: …"), rol studentDiná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 clienteMatrícula por cohorte con cohortes cli_*Igual que por cargo. Ver Clientes.
IndividualMatrí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 cohorteSe muestra como "Grupo: …".
DesactivadoFila en local_deltamodules_excl + matrícula por cohorte suspendidaPara 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étodoQué 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áginaRuta en la plataformaCapacidadQué hace
modaccess.php?id=<courseid>Módulos → Personasmoodle/course:createLista 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ódulosmoodle/course:createTodos 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.

En esta página