Tareas programadas
Tareas programadas y ad hoc de local_deltamodules y cómo corre el cron de Moodle en el contenedor moodle-cron.
Tareas (db/tasks.php)
| Clase | Nombre visible | Programación | Qué hace |
|---|---|---|---|
local_deltamodules\task\review_reminder | Cadena task_reviewreminder | Día 1 de cada mes, 08:00 | Avisa a Talento Humano (delta_jefaturas) los módulos con revisión anual vencida, por vencer (menos de 60 días) o sin revisión. Ver Revisión anual. |
local_deltamodules\task\client_expiry | Clientes: desactivar las empresas con el acceso vencido | Todos los días, 01:30 | clients::expire(): desactiva las empresas cuya fecha de acceso pasó y suspende a sus usuarios. |
local_deltamodules\task\send_mail | Correo: enviar los correos en cola | Cada minuto | mailer::process(): envía dentro de los límites, reintenta y limpia el registro. |
local_deltamodules\task\mail_reminders | Correo: recordatorio de módulos pendientes | Lunes, 09:00 | mailer::reminders(): recordatorio a quien no entra hace 14 días a módulos sin terminar. |
Todas tienen blocking = 0. La hora es la de la zona del sitio (America/Guayaquil, fijada por moodle-config.sh). Se pueden ajustar desde Administración del sitio → Servidor → Tareas programadas (solo el super administrador).
Tarea ad hoc
| Clase | Cuándo se encola | Qué hace |
|---|---|---|
local_deltamodules\task\delete_client_users | clients::delete() al eliminar una empresa cliente | Borra las cuentas recibidas en custom_data->userids (ya suspendidas), salvo super administradores y quien pertenezca a otra empresa cli_* o a una cohorte cargo_*. |
Cron en el contenedor
El cron de Moodle no corre en el contenedor del sitio sino en moodle-cron (misma imagen), con cron-entrypoint.sh:
- Genera el mismo
config.phpque el sitio (write-config.sh). - Espera a que exista la tabla
mdl_config(instalación terminada). - Ejecuta
admin/cli/cron.phpcada 60 segundos. Si termina bien y la salida no contiene "upgrade pending" ni "cron execution suspended", escribe la hora en/tmp/cron-last-ok(lo usa el healthcheck dedocker-compose.yml). - Nunca termina el contenedor: ante un error lo escribe en el registro y sigue reintentando. Con 10 fallos seguidos por "upgrade pending" advierte que la imagen del cron no coincide con la del sitio.
moodle-config.sh fija cronclionly = 1 (el cron solo se ejecuta por línea de comandos). Si el cron no corre hace más de 15 minutos, el super administrador ve un aviso dentro de Moodle (hook_callbacks::admin_alerts).
El contenedor moodle-cron tiene su propia copia del código (no comparte /var/www/html con el sitio). Si en un entorno local se copian archivos a mano al contenedor del sitio, hay que copiarlos también al del cron. Ver Guía de cambios.
Base de datos
Las once tablas de local_deltamodules (db/install.xml) con sus campos e índices, la tabla de local_candidate_enrollment y los pasos de actualización.
Eventos y observadores
Observadores de eventos de local_deltamodules y de los demás plugins propios, y el evento propio de local_candidate_enrollment.