Academia Deltamontero · Documentación
Desarrollolocal_deltamodules

Reglas de la Academia

Catálogo de reglas con dos niveles (general y por módulo), la tabla local_deltamodules_rule y cómo se aplican con apply_course y apply_changes.

Las Reglas de la Academia definen cómo se comportan los videos, los repasos, el control de pantalla y el certificado de cada módulo. El catálogo único vive en classes/rules.php; quien las aplica es classes/standard.php (Módulos y estándar).

Dos niveles

NivelDónde se editaDónde se guarda
Regla generalAdministración del sitio → Academia → Reglas de la Academia (rules.php)Configuración del plugin: rule_<clave> en local_deltamodules
Regla del móduloMódulos → Reglas, o "Reglas del módulo" en el menú Más del curso (modrules.php?id=<courseid>)Tabla local_deltamodules_rule, una fila por regla distinta de la general

rules::get($key, $courseid) devuelve el valor vigente: el propio del módulo si existe y es válido; si no, el general (rules::general($key)); si tampoco hay uno válido guardado, el valor por defecto del catálogo. Los valores se guardan como texto y se devuelven con el tipo del valor por defecto (int o string). Las reglas propias de cada curso se guardan en una caché estática por petición (rules::$overrides).

Ambas pantallas exigen la capacidad local/deltamodules:managestandard (por perfil, solo el Jefe de Talento Humano; ver Capacidades).

ClaveGrupoEtiquetaValor por defectoOpciones
video_completionVideosUn video queda hechoendend al verlo hasta el final, view al abrirlo
video_playerVideosReproductor11 igual en todos, 0 el que se configure en cada video
quiz_lockRepasosCuándo se puede rendir11 después de ver el video, 0 en cualquier momento
passpercentRepasosNota para aprobar7050, 60, 70, 75, 80, 90, 100 (%)
attemptsRepasosIntentos por repaso21 a 5
timelimitRepasosTiempo por intento300 (sin límite), 10, 15, 20, 30, 45, 60 minutos
quiz_completionRepasosUn repaso queda hechopasspass al aprobarlo, grade al rendirlo con cualquier nota
retakeattemptsRepasosSi no aprueba en sus intentos20 (no recibe más) o 1 a 5 intentos nuevos
exam_noticeDurante el repasoAviso al empezar11 mostrar, 0 sin aviso
exam_leavesDurante el repasoControl de cambio de pantalla30 (sin control) o 1 a 5 salidas antes de enviar
cert_enabledCertificadoEntrega certificado11 sí, 0 no
cert_templateCertificadoDiseño del certificadoLa primera plantilla del sitioPlantillas de customcert_templates en contexto de sistema, con "Certificado Deltamontero" primero
cert_requiresCertificadoPara obtenerloallall completar todo el módulo, quizzes aprobar todos los repasos

Las reglas passpercent, attempts y timelimit llevan 'force' => true en su definición. Los grupos y su orden están en rules::GROUPS (videos, repasos, examen, certificado). Si no hay plantillas de certificado, cert_template no tiene opciones y no se muestra en el formulario.

Guardar y aplicar

rules::save($courseid, $values)

Con $courseid = 0 guarda la regla general (set_config('rule_<clave>')) y considera todos los módulos de la Academia (rules::academy_courses()). Con un módulo, inserta, actualiza o borra filas de local_deltamodules_rule: un valor vacío o no válido significa "seguir la regla general" y borra la fila. Registra usermodified y timemodified.

Antes y después calcula las reglas vigentes de cada módulo afectado y devuelve solo lo que cambió: [courseid => [claves]].

standard::apply_changes($changes)

Ejecuta standard::apply_course($courseid, $claves) para cada módulo afectado. Las claves cambiadas funcionan como $force: intentos, tiempo y nota para aprobar se imponen incluso a los repasos configurados a mano; el certificado se muestra, oculta o cambia de diseño; y si cambió cuándo queda hecho un video o un repaso, se recalcula el avance de todos.

Ajustes complementarios (solo regla general)

rules.php además llama a rules::update_quiz_defaults() (fija attempts y timelimit en la configuración de quiz, que son los valores con que Moodle propone un cuestionario nuevo) y a manual::refresh() (las páginas 1.5 y 3.9 del manual muestran los valores nuevos).

modrules.php hace lo mismo para un módulo, con rules::save($courseid, …); además permite volver a la regla general con rules::reset($courseid), que equivale a guardar null en todas sus reglas propias.

Los valores de las reglas de repasos son valores iniciales: lo que se configure después en un repaso concreto (en su editor o en el formulario de Moodle) se respeta. La regla se vuelve a imponer a todos solo cuando Talento Humano cambia esa regla.

Dónde se leen las reglas

LugarReglas que usa
standard::apply_videovideo_player, video_completion
standard::apply_quizattempts, timelimit, passpercent, exam_notice, quiz_completion, quiz_lock
standard::apply_certificatecert_enabled, cert_template
academy::gate_certificatecert_requires
standard::needs_retake, academy::exam_noticeretakeattempts, exam_leaves
Servicio local_deltamodules_exam_strikeexam_leaves (límite del control de pantalla en el navegador)
lib.php (coursemodule_definition_after_data)Muestra arriba del formulario de un video o repaso las reglas que se aplicarán; propone attempts y timelimit en un repaso nuevo
newquiz.php, question_editor::settingsOpciones de nota, intentos y tiempo
health::checkvideo_completion, quiz_completion, cert_enabled
academy::exam_settings, builder::create_quizRegla general de attempts y timelimit

Pantalla común

rules::form_fields($courseid) dibuja el formulario por grupos (lo usan rules.php y modrules.php). En un módulo, cada campo ofrece primero "Regla general (valor)" y marca con "Propia de este módulo" los que difieren. rules::from_request() lee rule[<clave>] con PARAM_ALPHANUMEXT y descarta claves desconocidas. rules::css() aporta los estilos rl-*. rules.php muestra además una vista previa del aviso de un repaso con la regla general y la lista de módulos con reglas propias.

Limpieza

El observador rules::course_deleted (evento \core\event\course_deleted) borra las reglas propias de un curso eliminado.

Agregar una regla nueva

Ver el procedimiento en Guía de cambios.

En esta página