Plugins de terceros
Moodle y los plugins de terceros incluidos en la imagen, con su versión o commit fijado, los ajustes de instalación y los parches que se les aplican.
Moodle y todos los plugins de terceros se instalan dentro de la imagen en tiempo de construcción (infrastructure/moodle/Dockerfile), para poder recuperar la plataforma sin depender de que los repositorios externos sigan igual.
Cómo se fijan las versiones
git-at <url> <commit> <carpeta> (infrastructure/moodle/git-at.sh, copiado a /usr/local/bin/git-at) inicializa un repositorio vacío, descarga solo ese commit (git fetch --depth=1 origin <commit>) y lo deja en FETCH_HEAD; imprime el nombre del repositorio y el hash corto. Usa safe.directory='*' porque la carpeta de la imagen base pertenece a otro usuario.
Así un cambio del autor no rompe la imagen ni desactiva en silencio un parche. Para actualizar un plugin se cambia el commit en el Dockerfile y se prueba (ver Guía de cambios).
Tres plugins de la familia de IA (local_ai_manager, tiny_ai, block_ai_chat) no se fijan por commit sino por etiqueta (git clone --depth=1 --branch v1.1 / v1.0). Si el autor moviera la etiqueta, la imagen cambiaría sin aviso; verify-patches.php detectaría al menos los parches importantes que dejaran de aplicarse.
Inventario
| Componente | Propósito | Repositorio | Versión fijada | Ruta | Ajustes de instalación | Parches |
|---|---|---|---|---|---|---|
| Moodle (núcleo) | Plataforma LMS 4.5 LTS | github.com/moodle/moodle | Commit 89ae02d0007418c50f0911148137f4cb3bd67f4a | /var/www/html | — | patch-policy-consentpage, patch-forgot-password, patch-welcome-name, patch-cedula-field |
theme_boost_union | Tema corporativo | moodle-an-hochschulen/moodle-theme_boost_union | 3d2b713240b3776bca785e487d10ad6f8e59f967 | theme/boost_union | Configurado por moodle-config.sh y set-logos.php | — |
mod_hvp | Contenido H5P interactivo | h5p/h5p-moodle-plugin | 6527ec556a198f217469f7cefa7d7bdcfcfb6f27 | mod/hvp | git submodule update --init --recursive (la librería H5P es un submódulo) | — |
mod_interactivevideo | Videos de YouTube con interactividad | sokunthearithmakara/mod_interactivevideo | e5c601683026cd90430e5e0c085211661a1e726d | mod/interactivevideo | — | patch-video-completion (cosmético) |
mod_customcert | Certificados personalizados de los módulos | mdjnelson/moodle-mod_customcert | 84cb6dfa2d10715387ddc6dad308ed2e0dcd817e (el comentario indica rama MOODLE_404_STABLE) | mod/customcert | — | patch-cert-completion-gate |
tool_certificate | Motor de plantillas de mod_coursecertificate | moodleworkplace/moodle-tool_certificate | 71bf23b49900a579d6f06e74f0eb2768078d7a42 (comentario: MOODLE_400_STABLE, cubre 4.0–4.5) | admin/tool/certificate | Se borra element/program (requiere enrol_programs, solo de Moodle Workplace) | — |
mod_coursecertificate | Certificados de finalización de curso | moodleworkplace/moodle-mod_coursecertificate | 2a2a10d539888b824a7875923a09931f50d982cd | mod/coursecertificate | — | — |
local_ai_manager | Proxy de IA (instancias, propósitos, cuotas, términos) | bycs-lp/moodle-local_ai_manager | Etiqueta v1.1 (comentario: última compatible con 4.5; v2.0+ requiere Moodle 5.0) | local/ai_manager | Subplugins incluidos en el propio repositorio | patch-ai-role-injection, patch-ai-agent, patch-ai-chat-everywhere |
tiny_ai | Dependencia de block_ai_chat (IA en el editor TinyMCE) | bycs-lp/moodle-tiny_ai | Etiqueta v1.0 | lib/editor/tiny/plugins/ai | — | — |
block_ai_chat | Interfaz del chat de IA | bycs-lp/moodle-block_ai_chat | Etiqueta v1.0 (comentario: última compatible con 4.5) | blocks/ai_chat | — | patch-ai-chat-copy, patch-ai-chat-ui (cosméticos) |
block_sharing_cart | Compartir actividades entre cursos | donhinkelman/moodle-block_sharing_cart | 2e5cef495e4bf8537df35f01c0d3ce23d4b89344 | blocks/sharing_cart | — | — |
webservice_mcp | Protocolo MCP sobre los servicios web (endpoint /webservice/mcp/server.php) | onbirdev/moodle-webservice_mcp | 198246e5d7121b7658e72e44549006753136ac70 | webservice/mcp | Se activa con webserviceprotocols = rest,mcp | — |
Después de clonar, el Dockerfile cambia el dueño de /var/www/html a www-data.
El README.md del repositorio muestra todavía nombres de ramas (por ejemplo MOODLE_405_STABLE o stable) en la tabla de plugins. La fuente de verdad de las versiones es el Dockerfile.
Por qué se aplica cada parche
| Plugin | Parche | Motivo |
|---|---|---|
local_ai_manager | patch-ai-role-injection.php | Que la IA conozca el perfil del usuario (ai_role_injector) |
local_ai_manager | patch-ai-agent.php | Agente de acciones con permisos reales (ai_agent) |
local_ai_manager | patch-ai-chat-everywhere.php | El chat aparecía solo dentro de los cursos para el nivel básico |
block_ai_chat | patch-ai-chat-copy.php | Copiar fallaba por HTTP (sin contexto seguro) |
block_ai_chat | patch-ai-chat-ui.php | Datos para el JavaScript propio (nombre, ids, límite) y contexto de 50 mensajes |
mod_customcert | patch-cert-completion-gate.php | Los gestores descargaban su certificado sin completar el módulo |
mod_interactivevideo | patch-video-completion.php | Sin confeti ni "Congratulations" al completar un video |
Moodle tool_policy | patch-policy-consentpage.php | Aceptación del aviso en una sola página |
Moodle login | patch-forgot-password.php | Recuperación solo por nombre de usuario |
Moodle lib/classes/user.php | patch-welcome-name.php | Saludo con primer nombre y primer apellido |
Moodle user/editlib.php | patch-cedula-field.php | Campo Cédula arriba y obligatorio |
Detalle de cada uno en Parches.
Traducciones al español
Varios plugins de terceros no traen español. infrastructure/moodle/lang/es/ replica la estructura de /var/www/html y el Dockerfile la copia encima, de modo que cada archivo queda en la carpeta lang/es de su plugin. El paquete de idioma oficial (si trae alguna cadena) y las personalizaciones del sitio tienen prioridad.
| Plugin | Archivos |
|---|---|
block_ai_chat | blocks/ai_chat/lang/es/block_ai_chat.php |
block_sharing_cart | blocks/sharing_cart/lang/es/block_sharing_cart.php |
tiny_ai | lib/editor/tiny/plugins/ai/lang/es/tiny_ai.php |
local_ai_manager y sus subplugins | El plugin, los propósitos (chat, feedback, imggen, itt, singleprompt, translate, tts) y las herramientas (chatgpt, dalle, gemini, googlesynthesize, imagen, ollama, openaitts, telli) |
mod_customcert | El plugin y sus 19 elementos (bgimage, border, categoryname, code, coursefield, coursename, date, daterange, digitalsignature, expiry, grade, gradeitemname, image, qrcode, studentname, teachername, text, userfield, userpicture) |
mod_hvp | mod/hvp/lang/es/hvp.php |
mod_interactivevideo | mod/interactivevideo/lang/es/ |
theme_boost_union | theme/boost_union/lang/es/ |
webservice_mcp | webservice/mcp/lang/es/ |
En total son 43 archivos de idioma.
Plugins nativos de Moodle que la Academia usa intensamente
| Plugin | Uso |
|---|---|
tool_policy | Aviso de Tratamiento de Datos Personales |
tool_usertours | Recorridos guiados de la Academia |
tool_mfa (factores admin, totp, grace) | Verificación en dos pasos solo para super administradores (7 días de gracia) |
enrol_cohort, enrol_manual, enrol_self | Rutas por cargo y empresa, matrícula individual (los métodos habilitados son manual,self,cohort) |
mod_quiz, mod_page, mod_url, mod_resource, mod_label, mod_choice | Repasos, lecturas, enlaces, documentos, avisos y consentimiento LOPDP |
core_reportbuilder | Informes personalizados de Moodle |
Formatos de descarga
Plugins dataformat_deltaxlsx, dataformat_deltadocx y dataformat_deltapdf, que agregan Excel, Word y PDF con el formato institucional a todos los menús de descarga de Moodle.
Parches
Los once parches que se aplican al código de Moodle y de plugins de terceros durante la construcción de la imagen, por qué existen y cómo los verifica verify-patches.php.