<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Cosas de Desarrolladores</title>
    <link>https://moodle.org/mod/forum/view.php?f=110</link>
    <description>Si has realizado alguna mejora en el código de Moodle, o si has desarrollado algún módulo o utilidad que quieras compartir, éste es el foro adecuado. Anímate!!
Recuerda indicar SIEMPRE en el mensaje la versión de Moodle con la que estás trabajando.</description>
    <generator>Moodle</generator>
    <language>en</language>
    <copyright>(c) 2026 Moodle - Open-source learning platform | Moodle.org</copyright>
    <image>
      <url>https://moodle.org/theme/image.php/moodleorg/core/1777401252/i/rsssitelogo</url>
      <title>moodle</title>
      <link>https://moodle.org</link>
      <width>140</width>
      <height>35</height>
    </image>
    <item>
      <title>Dashboard moodle +IA</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=473928</link>
      <pubDate>Wed, 15 Apr 2026 23:03:43 GMT</pubDate>
      <description>por Francisco Carrizo. &amp;nbsp;&lt;p&gt;&lt;div class=&quot;top-bar-actions&quot;&gt;
&lt;div class=&quot;right-section&quot;&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;&lt;span style=&quot;text-align:initial;&quot;&gt;Hola a todos!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Mi nombre es Francisco, soy de Buenos Aires, Argentina, y trabajo como administrador de Moodle desde hace ya unos años. Con el tiempo, me he metido de lleno en el desarrollo para crear mis propios plugins, especialmente porque me apasiona todo lo relacionado con la analítica y los datos.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Quería compartir con ustedes un proyecto en el que he estado trabajando: se trata de una WebApp externa que se conecta a Moodle a través de un plugin personalizado que desarrollé. Este plugin gestiona los Web Services y utiliza SSO para que los usuarios puedan entrar directamente a la aplicación sin volver a loguearse.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;¿Qué incluye?&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;He organizado el tablero en varias secciones principales:&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Estadísticas Generales: Todos los KPIs importantes en un solo lugar.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Seguimiento de Estudiantes y Cursos: Progreso en tiempo real de los alumnos y sus matriculaciones específicas.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Riesgo de Abandono (La parte interesante): Un módulo que calcula la probabilidad de abandono. Lo mejor es que los parámetros se pueden ajustar según las necesidades de cada curso.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Mensajería y Certificados: Herramientas para enviar notificaciones y un buscador rápido de certificados por usuario o curso.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Estado actual&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Todavía estoy puliendo las traducciones al inglés y algunos detalles más, pero el proyecto ya va muy bien encaminado.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;¡Me encantaría recibir sus comentarios! Si alguien está interesado en probarlo en un ambiente de pruebas, no duden en contactarme. Busco sugerencias sobre qué otras funciones podrían ser útiles para otros administradores.&lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Saludos, Francisco. &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt;Dejo algunas imágenes &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;buttons-container ng-star-inserted&quot;&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=473928</guid>
    </item>
    <item>
      <title>Sugerencias de mejora en pregunta calculada</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=473855</link>
      <pubDate>Wed, 08 Apr 2026 14:18:17 GMT</pubDate>
      <description>por Gonzalo Lopez. &amp;nbsp;&lt;p&gt;&lt;h2&gt;Propuesta: Mejora de la lógica en Preguntas Calculadas&lt;/h2&gt;
&lt;h3&gt;1. Incorporar condicionales reales (&lt;code&gt;IF / ELSE&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;Actualmente, las preguntas calculadas son &quot;líneas rectas&quot;: solo permiten fórmulas matemáticas simples. En física, necesitamos que el sistema tome decisiones según los datos generados.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lo que hace falta:&lt;/strong&gt; Una función clara tipo &lt;code&gt;IF(condición, resultado_si_cierto, resultado_si_falso)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo de uso:&lt;/strong&gt; En un problema de fricción, si la fuerza aplicada es menor al rozamiento, la aceleración debe ser &lt;code&gt;0&lt;/code&gt;. Si es mayor, debe aplicar la fórmula de Newton.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sintaxis propuesta:&lt;/strong&gt; &lt;code&gt;{= if({fuerza} &amp;gt; {fricción}, ({fuerza}-{fricción})/{masa}, 0) }&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. Soporte para múltiples incisos (Literales a, b, c...)&lt;/h3&gt;
&lt;p&gt;Hoy en día, una pregunta calculada solo permite una caja de respuesta. Si un problema de física tiene varios pasos, el profesor tiene que crear 3 o 4 preguntas por separado, lo cual rompe la unidad del ejercicio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lo que hace falta:&lt;/strong&gt; Que dentro de una &lt;strong&gt;misma&lt;/strong&gt; pregunta calculada se puedan definir varios campos de respuesta.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Variables compartidas:&lt;/strong&gt; Los incisos (a) y (b) usarían los mismos valores aleatorios (por ejemplo, la misma masa y la misma altura).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Calificación parcial:&lt;/strong&gt; El alumno podría tener bien el inciso (a) y mal el (b).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Orden lógico:&lt;/strong&gt; Permite plantear el problema de forma natural:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;i&gt;(a) Calcule la energía potencial.&lt;/i&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;i&gt;(b) Calcule la velocidad final.&lt;/i&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=473855</guid>
    </item>
    <item>
      <title>Reenvío de mensajería con tema Trema</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=473733</link>
      <pubDate>Thu, 26 Mar 2026 09:58:08 GMT</pubDate>
      <description>por Euge Saldi. &amp;nbsp;&lt;p&gt;&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Hola a todos! Alguien mas se ha encontrado con este problema?:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Tengo un problema reproducible en mi plataforma Moodle que parece estar causado específicamente por el tema Trema.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Ambiente&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Versión de Moodle: 4.5.8 (Compilación: 20251208)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;PHP: 8.1.34&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;MariaDB: 10.11.16&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Apache: 2.4.62&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Tema involucrado: Trema&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Problema observado:&lt;/span&gt;&lt;br /&gt;&lt;span dir=&quot;auto&quot;&gt;Cuando Trema está activo, la mensajería de Moodle se vuelve inconsistente en la interfaz de usuario:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Los mensajes se envían correctamente,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Los mensajes se almacenan en la base de datos,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Los mensajes se entregan al destinatario,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Las notificaciones por correo electrónico también pueden enviarse correctamente,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;pero la interfaz de mensajería muestra &quot;Reintentar&quot; como si el envío hubiera fallado.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Así pues, el backend funciona, pero el frontend se comporta como si el mensaje no se hubiera confirmado correctamente.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Detalle importante:&lt;/span&gt;&lt;br /&gt;&lt;span dir=&quot;auto&quot;&gt;Este problema depende del tema en mi instalación.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Realicé un proceso de reinstalación/recuperación limpio y volví a probar:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Con Boost activado, la mensajería funciona correctamente.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Cuando cambio a Trema, el problema vuelve a aparecer.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Cuando vuelvo a usar Boost, el problema desaparece.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Esto sugiere firmemente un conflicto en Trema que afecta la mensajería de Moodle, muy probablemente a nivel de interfaz (interacción de JS / AMD / plantilla / renderizador con &quot;core_message&quot;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Lo que verifiqué fue&lt;/span&gt;&lt;br /&gt;&lt;span dir=&quot;auto&quot;&gt;que revisé el problema cuidadosamente antes de aislarlo al tema:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Los mensajes se insertan correctamente en &quot;mdl_messages&quot;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Las conversaciones y los participantes en las conversaciones son consistentes,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;No se encontró corrupción evidente en las tablas de mensajería de la base de datos.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El cron de Moodle se está ejecutando,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El problema no está causado por la entrega del correo.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El problema no es causado por el backend de la base de datos,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El problema desaparece cuando no se utiliza Trema.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Comportamiento en la práctica&lt;/span&gt;&lt;br /&gt;&lt;span dir=&quot;auto&quot;&gt;con Trema activado:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El usuario envía un mensaje,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El mensaje se entrega realmente,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;La interfaz de usuario muestra brevemente un estado pendiente,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;Entonces la interfaz lo marca como fallido / &quot;Reintentar&quot;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Con Boost activado:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span dir=&quot;auto&quot;&gt;El mismo flujo de mensajes funciona con normalidad.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=473733</guid>
    </item>
    <item>
      <title>Base de datos </title>
      <link>https://moodle.org/mod/forum/discuss.php?d=473583</link>
      <pubDate>Thu, 12 Mar 2026 19:19:11 GMT</pubDate>
      <description>por Carlos Uriel Sánchez Arenas. &amp;nbsp;&lt;p&gt;&lt;p&gt;Hola buenas Tardes:&lt;br /&gt;Mi nombre es Carlos soy estudiante de Ingeneria en Sistemas Computacionales&lt;br /&gt;&lt;br /&gt;Queria preguntar si alguien tiene conocimiento de donde puedo ver las sesiones de un usuario, de la base de datos que genera el moodle ya que estoy haciendo mis residencias sobre el analisis de datos, y en si uno de los problemas es que quiero extraer informacion de las sesiones de un usuario, para luego ponerlo en un dashboard en power bi, el dilema es que si manejo el lenguaje SQL pero me confunde mucho la base que genera moodle mas que nada su estructura&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Espero una respuesta y me ayudarian mucho &lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=473583</guid>
    </item>
    <item>
      <title>Problema Crítico de Rendimiento: La Duplicación de Secciones/Cuestionarios Bloquea Todo el Sitio</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=471958</link>
      <pubDate>Wed, 21 Jan 2026 20:49:07 GMT</pubDate>
      <description>por José Antonio Garrido. &amp;nbsp;&lt;p&gt;&lt;h1&gt;Moodle 5.1.1 - Problema Crítico de Rendimiento: La Duplicación de Secciones/Cuestionarios Bloquea Todo el Sitio&lt;/h1&gt;
&lt;h2&gt;Entorno&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versión de Moodle&lt;/strong&gt;: 5.1.1 (Build: 20251208)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base de datos&lt;/strong&gt;: MariaDB 10.11&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP&lt;/strong&gt;: 8.4.15&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servidor web&lt;/strong&gt;: Apache 2.4.66 (prefork MPM) + Nginx reverse proxy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema operativo&lt;/strong&gt;: Linux (contenedores Docker)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Configuración del Sistema (Todo Optimizado)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;InnoDB Buffer Pool&lt;/strong&gt;: 16GB (en servidor de 31GB RAM)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manejador de Sesiones Redis&lt;/strong&gt;: Activo (bloqueo de sesión: 0.003s baseline)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caché de Aplicación Redis&lt;/strong&gt;: Activo (98.6% tasa de aciertos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OPcache&lt;/strong&gt;: Habilitado con JIT (modo tracing)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workers Apache&lt;/strong&gt;: 65 MaxRequestWorkers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración MariaDB&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;innodb_flush_log_at_trx_commit = 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;innodb_io_capacity = 2000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;net_read_timeout = 600s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;net_write_timeout = 600s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuración PHP&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;memory_limit = 4096M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max_execution_time = 0&lt;/code&gt; (ilimitado)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout Nginx&lt;/strong&gt;: 300s (5 minutos)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Descripción del Problema&lt;/h2&gt;
&lt;p&gt;Al duplicar una sección que contiene un cuestionario con 100 preguntas, la operación tarda &lt;strong&gt;más de 5 minutos&lt;/strong&gt; y &lt;strong&gt;bloquea completamente el sitio&lt;/strong&gt; para ese usuario debido al bloqueo de sesión. Después del timeout de nginx (5 minutos), el proceso PHP continúa ejecutándose como zombie, sin liberar nunca el bloqueo de sesión, &lt;strong&gt;dejando bloqueado al usuario durante 2 horas&lt;/strong&gt; (timeout del bloqueo de sesión).&lt;/p&gt;
&lt;p&gt;Esto hace que la función de duplicación sea &lt;strong&gt;inutilizable en entornos de producción&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Pasos para Reproducir&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Crear un curso con una sección que contenga un cuestionario con 100 preguntas (4-5 respuestas cada una)&lt;/li&gt;
&lt;li&gt;Entrar en modo de edición&lt;/li&gt;
&lt;li&gt;Hacer clic en &quot;Duplicar sección&quot; en la sección que contiene el cuestionario&lt;/li&gt;
&lt;li&gt;Observar:
&lt;ul&gt;
&lt;li&gt;El navegador muestra indicador de carga indefinidamente&lt;/li&gt;
&lt;li&gt;Después de ~5 minutos, nginx devuelve timeout 504&lt;/li&gt;
&lt;li&gt;El usuario no puede acceder a ninguna otra página (error de bloqueo de sesión)&lt;/li&gt;
&lt;li&gt;El proceso PHP continúa ejecutándose sin conexión HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Comportamiento Esperado&lt;/h2&gt;
&lt;p&gt;La duplicación de sección debería:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completarse en &lt;strong&gt;10-30 segundos&lt;/strong&gt; (razonable para 100 preguntas)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NO bloquear&lt;/strong&gt; la sesión del usuario (otras pestañas deberían funcionar)&lt;/li&gt;
&lt;li&gt;Usar &lt;strong&gt;tarea adhoc en segundo plano&lt;/strong&gt; para operaciones largas&lt;/li&gt;
&lt;li&gt;Liberar el bloqueo de sesión inmediatamente después de encolar la tarea&lt;/li&gt;
&lt;li&gt;Mostrar indicador de progreso o notificación al completarse&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Comportamiento Real&lt;/h2&gt;
&lt;p&gt;La duplicación de sección:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tarda &lt;strong&gt;más de 5 minutos&lt;/strong&gt; (300+ segundos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bloquea completamente&lt;/strong&gt; toda actividad del usuario (bloqueo de sesión)&lt;/li&gt;
&lt;li&gt;Después del timeout, crea &lt;strong&gt;proceso PHP zombie&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Deja &lt;strong&gt;bloqueo de sesión permanente&lt;/strong&gt; (timeout de 2 horas)&lt;/li&gt;
&lt;li&gt;Requiere &lt;strong&gt;intervención manual&lt;/strong&gt; (matar proceso y eliminar bloqueo Redis)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Análisis Técnico&lt;/h2&gt;
&lt;h3&gt;Causa Raíz&lt;/h3&gt;
&lt;p&gt;La duplicación de sección/cuestionario usa &lt;strong&gt;internamente el sistema de copia de seguridad/restauración&lt;/strong&gt;, que:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crea tablas de respaldo temporales (ej: &lt;code&gt;mdl_backup_ids_temp&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Ejecuta &lt;strong&gt;más de 1,600 consultas a la base de datos&lt;/strong&gt; para 100 preguntas:
&lt;ul&gt;
&lt;li&gt;1 INSERT por pregunta&lt;/li&gt;
&lt;li&gt;4-5 INSERTs por pregunta (respuestas)&lt;/li&gt;
&lt;li&gt;3-5 SELECTs por INSERT (mapeo de IDs de respaldo)&lt;/li&gt;
&lt;li&gt;1 INSERT por mapeo en tabla temporal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Se ejecuta &lt;strong&gt;síncronamente&lt;/strong&gt; en el manejador de peticiones HTTP&lt;/li&gt;
&lt;li&gt;Mantiene &lt;strong&gt;bloqueo de sesión&lt;/strong&gt; durante toda la duración&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No usa cola de tareas adhoc&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Evidencias&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Análisis de Consultas a Base de Datos&lt;/strong&gt; (capturado durante duplicación):&lt;/p&gt;
&lt;pre&gt;Tasa de consultas: 6,634 consultas/segundo
Total de consultas para cuestionario de 100 preguntas: ~33,000+ consultas en 5 segundos

Ejemplo de patrón de consultas (repetido por pregunta/respuesta):
1. INSERT INTO mdl_question (...)
2. SELECT * FROM mdl_backup_ids_temp WHERE backupid = '...' AND itemname = 'question' AND itemid = '...'
3. INSERT INTO mdl_backup_ids_temp (backupid, itemname, itemid, newitemid, ...)
4. INSERT INTO mdl_question_answers (...)
5. SELECT * FROM mdl_backup_ids_temp WHERE backupid = '...' AND itemname = 'question_answer' AND itemid = '...'
6. INSERT INTO mdl_backup_ids_temp (...)
7. SELECT * FROM mdl_backup_ids_temp WHERE backupid = '...' AND itemname = 'qtype_multichoice_options' ...
8. INSERT INTO mdl_qtype_multichoice_options (...)
... (se repite para cada respuesta)
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Uso de Recursos Durante Duplicación&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU PHP: 60-93% (proceso único)&lt;/li&gt;
&lt;li&gt;Memoria PHP: 180MB (proceso único)&lt;/li&gt;
&lt;li&gt;CPU MariaDB: 35-55%&lt;/li&gt;
&lt;li&gt;No se detectaron bloqueos o deadlocks en base de datos&lt;/li&gt;
&lt;li&gt;El cuello de botella está en la lógica de aplicación PHP, no en la base de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Evidencia de Bloqueo de Sesión&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;Mensaje de error mostrado al usuario:
&quot;No se pudo obtener el bloqueo para el ID de sesión session_62 dentro de 2 minutos.&quot;
&quot;Es probable que otra página ([pid 223] /course/format/update.php?courseid=3&amp;amp;sesskey=...&amp;amp;action=section_duplicate&amp;amp;id=39) 
aún se esté ejecutando en otra pestaña del navegador, o que no liberó el bloqueo debido a un error.&quot;
&lt;/pre&gt;
&lt;h2&gt;Impacto&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Crítico&lt;/strong&gt; para entornos de producción:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Experiencia de Usuario&lt;/strong&gt;: Espera de más de 5 minutos sin retroalimentación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilidad del Sitio&lt;/strong&gt;: Usuario completamente bloqueado después del timeout&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desperdicio de Recursos&lt;/strong&gt;: Workers PHP ocupados durante más de 5 minutos cada uno&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad&lt;/strong&gt;: Múltiples duplicaciones concurrentes pueden agotar todos los workers Apache&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requiere Intervención Manual&lt;/strong&gt;: El administrador debe matar procesos y limpiar bloqueos Redis&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Información de Depuración&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;La depuración fue habilitada&lt;/strong&gt; y se capturó lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logs del servidor web&lt;/strong&gt;: No se registraron errores (el proceso se ejecuta exitosamente desde la perspectiva de Apache)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errores PHP&lt;/strong&gt;: Ninguno - la duplicación se completa, solo tarda más de 5 minutos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logs de base de datos&lt;/strong&gt;: Se capturaron más de 33,000 consultas en 5 segundos (detallado arriba)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consola del navegador&lt;/strong&gt;: Sin errores JavaScript - es un problema puro de rendimiento backend&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Qué Cambió?&lt;/h2&gt;
&lt;p&gt;Esto parece ser una &lt;strong&gt;regresión en la serie Moodle 5.x&lt;/strong&gt;. Múltiples usuarios en foros reportan que Moodle 4.5.x tenía mejor rendimiento para operaciones similares. La función de duplicación ahora usa internamente el sistema completo de copia de seguridad/restauración, lo cual no era el caso en versiones anteriores.&lt;/p&gt;
&lt;h2&gt;Prueba de Tema&lt;/h2&gt;
&lt;p&gt;Probado con &lt;strong&gt;tema Boost&lt;/strong&gt; (tema core) - mismo problema ocurre. Esto no es un problema de tema.&lt;/p&gt;
&lt;h2&gt;Soluciones Propuestas&lt;/h2&gt;
&lt;h3&gt;Corto Plazo (Solución Alternativa)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Documentar limitación en documentación de administrador&lt;/li&gt;
&lt;li&gt;Recomendar usar funcionalidad de copia de seguridad/restauración en lugar de duplicación&lt;/li&gt;
&lt;li&gt;Agregar advertencia antes de duplicar secciones con muchas actividades&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Largo Plazo (Corrección)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Refactorizar duplicación para usar cola de tareas adhoc&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Encolar tarea inmediatamente cuando el usuario hace clic en &quot;duplicar&quot;&lt;/li&gt;
&lt;li&gt;Liberar bloqueo de sesión&lt;/li&gt;
&lt;li&gt;Procesar duplicación en segundo plano&lt;/li&gt;
&lt;li&gt;Notificar al usuario al completarse (notificación o email)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizar copia de seguridad/restauración para caso de uso de duplicación&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Reducir SELECTs innecesarios de tablas temporales&lt;/li&gt;
&lt;li&gt;Usar INSERT masivos donde sea posible&lt;/li&gt;
&lt;li&gt;Agregar índices apropiados a tablas temporales de respaldo&lt;/li&gt;
&lt;li&gt;Considerar tablas en memoria para operaciones pequeñas&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agregar indicador de progreso&lt;/strong&gt; para operaciones largas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementar detección de timeout&lt;/strong&gt; para prevenir procesos zombie&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Solución Temporal para Administradores del Sitio&lt;/h2&gt;
&lt;p&gt;Hasta que esto se corrija, los administradores pueden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Aumentar timeout de nginx/proxy&lt;/strong&gt; a 30+ minutos (no recomendado, pero previene procesos zombie)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usar CLI de copia de seguridad/restauración&lt;/strong&gt; para duplicaciones grandes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitorear y matar procesos PHP zombie&lt;/strong&gt; manualmente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpiar bloqueos de sesión Redis&lt;/strong&gt; cuando usuarios reportan estar bloqueados:
&lt;pre&gt;redis-cli DEL &quot;moodle_sess_session_*.lock&quot;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Notas Adicionales&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Este problema parece ser una &lt;strong&gt;regresión en la serie Moodle 5.x&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Usuarios de Moodle 4.5.x reportan mejor rendimiento para operaciones similares&lt;/li&gt;
&lt;li&gt;El problema afecta &lt;strong&gt;TODAS las duplicaciones de secciones/actividades&lt;/strong&gt;, no solo cuestionarios&lt;/li&gt;
&lt;li&gt;Contenido más grande = rendimiento exponencialmente peor debido al patrón de consultas N+1&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=471958</guid>
    </item>
    <item>
      <title>Generador IA de Preguntas GIFT + Bot Telegram + Gamificación - Ideal para Oposiciones y Exámenes</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=468656</link>
      <pubDate>Thu, 26 Jun 2025 01:59:46 GMT</pubDate>
      <description>por CARLOS ORTIGOSA GONZALEZ. &amp;nbsp;&lt;p&gt;&lt;p&gt;¡Hola compañeros educadores! &lt;/p&gt;
&lt;p&gt;Quiero compartir con vosotros un proyecto que he desarrollado y que puede ser muy útil para quienes trabajáis con &lt;strong&gt;Moodle&lt;/strong&gt;, especialmente en el ámbito de &lt;strong&gt;oposiciones, exámenes oficiales y formación legal/militar&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;¿Qué hace mi herramienta?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;OpositIA&lt;/strong&gt; es una plataforma web que combina:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generación automática de preguntas&lt;/strong&gt; en formato GIFT compatible con Moodle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración con Telegram&lt;/strong&gt; para envío automático de preguntas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de gamificación&lt;/strong&gt; con rankings y torneos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procesamiento especializado&lt;/strong&gt; para textos legales y normativas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taxonomía de Bloom&lt;/strong&gt; implementada para diferentes niveles cognitivos&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Funcionalidades principales:&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generación IA&lt;/strong&gt;: Crea preguntas tipo test con múltiples proveedores de IA (OpenAI, Claude, Gemini, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validación de preguntas generadas: &lt;/strong&gt;Analiza las preguntas generadas con el documento fuente para verificar que las opciones de respuestas incorrectas son verdaderamente incorrectas y la correcta es verdaderamente la correcta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bot de Telegram&lt;/strong&gt;: Envía preguntas programadas, crea torneos automáticos y gestiona rankings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Límites Telegram&lt;/strong&gt;: Optimiza preguntas para cumplir restricciones de caracteres de la plataforma&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distractores inteligentes&lt;/strong&gt;: Sistema de &quot;trampa conceptual&quot; para detectar estudio superficial&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Textos legales&lt;/strong&gt;: Procesamiento artículo por artículo de leyes, decretos y normativas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gamificación&lt;/strong&gt;: Rankings semanales, torneos automatizados, sistema de puntos y achievements&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exportación GIFT&lt;/strong&gt;: Compatible directo con Moodle para importar bancos de preguntas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Especialmente útil para:&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Preparación de &lt;strong&gt;oposiciones&lt;/strong&gt; (especialmente ámbito legal), pero adaptable a cualquier tema ya que puedes modificar los prompts para que se adapte a cualquier documento cargado.&lt;/li&gt;
&lt;li&gt;Creación rápida de &lt;strong&gt;bancos de preguntas&lt;/strong&gt; para Moodle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formación continua&lt;/strong&gt; con sistema de engagement vía Telegram&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluación automática&lt;/strong&gt; con feedback inteligente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vídeo superficial del proyecto en funcionamiento: &lt;span class=&quot;mediaplugin mediaplugin_youtube&quot;&gt;
&lt;iframe title=&quot;YouTube&quot; width=&quot;400&quot; height=&quot;300&quot; style=&quot;border:0;&quot;
        src=&quot;https://www.youtube-nocookie.com/embed/ykNoSzbXW1w?rel=0&amp;wmode=transparent&quot; allow=&quot;fullscreen&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Tecnologías:&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Next.js, TypeScript, Prisma, TailwindCSS, Telegram Bot API, múltiples APIs de IA&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;¿Te interesa?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Si trabajas con Moodle y te gustaría:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatizar la creación de preguntas&lt;/li&gt;
&lt;li&gt;Integrar Telegram en tu proceso formativo&lt;/li&gt;
&lt;li&gt;Añadir gamificación a tus cursos&lt;/li&gt;
&lt;li&gt;Procesar documentos legales/normativos de forma eficiente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;¡Contáctame!&lt;/strong&gt; Estoy dispuesto a colaborar, compartir conocimiento o adaptar la herramienta según necesidades específicas.&lt;/p&gt;
&lt;p&gt;También tengo experiencia integrando sistemas externos con Moodle y estaré encantado de ayudar a otros educadores que trabajen en proyectos similares.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;PD: El proyecto está en desarrollo activo y siempre estoy abierto a feedback y nuevas ideas de funcionalidades.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¡Saludos! &lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=468656</guid>
    </item>
    <item>
      <title>APARIENCIA MOOVE</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=471148</link>
      <pubDate>Wed, 03 Dec 2025 20:01:53 GMT</pubDate>
      <description>por Miguel Perez. &amp;nbsp;&lt;p&gt;&lt;p&gt;Buenas tardes,&lt;/p&gt;
&lt;p&gt;Estoy utilizando el tema Moove en mi Moodle 5.0.3 y la visualización del curso no se parece en nada a las imágenes de ejemplo que aparecen en la web de descarga del tema &lt;/p&gt;
&lt;p&gt;Debería verse así:&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;img-fluid&quot; src=&quot;https://moodle.org/pluginfile.php/50/local_plugins/plugin_screenshots/1834/image3.jpg&quot; alt=&quot;image3.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Y en mi curso aparece asi:&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;img-fluid&quot; src=&quot;https://moodle.org/pluginfile.php/226/mod_forum/post/1891489/image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;He mirado y revisado mil veces la configuración, pero no encuentro nada al respecto. No sé si estoy haciendo algo mal.&lt;/p&gt;
&lt;p&gt;Gracias!&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=471148</guid>
    </item>
    <item>
      <title>Añadir archivo a un curso mediante la API</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=471085</link>
      <pubDate>Fri, 28 Nov 2025 09:09:18 GMT</pubDate>
      <description>por Marc Infante. &amp;nbsp;&lt;p&gt;&lt;p&gt;Hola,&lt;/p&gt;
&lt;p&gt;Mi versión de Moodle es: &lt;a href=&quot;http://moodle.org/&quot;&gt;Moodle&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;a title=&quot;2024100707.04&quot; href=&quot;https://moodledev.io/general/releases&quot;&gt;4.5.7+&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Me han pedido desarrollar una utilidad para compartir un fichero desde el servidor en local (Por ejemplo guia.pdf) a un curso de Moodle en concreto.&lt;/p&gt;
&lt;p&gt;La idea principal era hacer uso de la API mediante la función &lt;strong&gt;core_files_upload&lt;/strong&gt;, pero esta función solo permite&lt;span dir=&quot;auto&quot;&gt; cargar en el área privada del usuario.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Me pregunto por qué solo se permite &lt;a href=&quot;https://moodle.org/mod/glossary/showentry.php?eid=3530&amp;amp;displayformat=dictionary&quot; title=&quot;Glosario de Preguntas Frecuentes: subir archivos&quot; class=&quot;glossary autolink concept glossaryid69&quot; data-entryid=&quot;3530&quot;&gt;subir archivos&lt;/a&gt; al área privada. Parece que me estoy perdiendo algo, ya que el objetivo es subir el archivo a un curso tal como lo haría un usuario con permisos. ¿Alguien me puede ayudar? No encuentro manera de poder subir el fichero a un curso en concreto.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;Saludos!&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=471085</guid>
    </item>
    <item>
      <title>BBB - configuracion para la transmision de video y sonido de audio </title>
      <link>https://moodle.org/mod/forum/discuss.php?d=470632</link>
      <pubDate>Mon, 27 Oct 2025 11:01:50 GMT</pubDate>
      <description>por David De Bustos Pichel. &amp;nbsp;&lt;p&gt;&lt;p&gt;Estoy configurando un servidor de BBB y al compartir pantalla y entrar desde otros ordenadores a la reunion el video que comparto me suele dar bajones y tambien tirones la red esta bien configurada y voy sobrado con el servidor, los archivos de configuracion los tengo asi :&lt;/p&gt;
&lt;p&gt;1: production.yml de web /etc/bigbluebutton/bbb-webrtc-sfu&lt;/p&gt;
&lt;p&gt;esl_password: &lt;br /&gt;  ip: &lt;br /&gt;  sip_ip:&lt;br /&gt;mediasoup:&lt;br /&gt;  webrtc:&lt;br /&gt;    listenIps:&lt;br /&gt;      - ip: 0.0.0.0&lt;br /&gt;        announcedIp: 51.210.223.144&lt;br /&gt;  plainRtp:&lt;br /&gt;    listenIp:&lt;br /&gt;      ip:&lt;br /&gt;      announcedIp:&lt;br /&gt;  audio:&lt;br /&gt;    codec: opus&lt;br /&gt;    maxAverageBitrate: 96000   # 96 kbps&lt;br /&gt;    stereo: true               # voz estéreo&lt;br /&gt;    dtx: true                  # silencio dinámico&lt;br /&gt;    fec: true                  # corrección de errores&lt;/p&gt;
&lt;p&gt;  # Video cámaras y screen share&lt;br /&gt;  video:&lt;br /&gt;    maxBitrate: 1500000        # 1.5 Mbps cámaras HD 720p&lt;br /&gt;    screenShareMaxBitrate: 2500000&lt;br /&gt;    maxConcurrentStreams: 6&lt;br /&gt;  constraints:&lt;br /&gt;    video:&lt;br /&gt;      frameRate: 30&lt;br /&gt;    screenShare:&lt;br /&gt;      frameRate: 30&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;/etc/bigbluebutton# cat bbb-html5.yml&lt;br /&gt;public:&lt;br /&gt;  kurento:&lt;br /&gt;    wsUrl: &lt;br /&gt;    screenshare:&lt;br /&gt;      encoding:&lt;br /&gt;        video:&lt;br /&gt;          codec: VP8&lt;br /&gt;          parameters:&lt;br /&gt;            - [&quot;-b:v&quot;, &quot;2000k&quot;]&lt;br /&gt;            - [&quot;-minrate&quot;, &quot;1800k&quot;]&lt;br /&gt;            - [&quot;-maxrate&quot;, &quot;2200k&quot;]&lt;br /&gt;            - [&quot;-bufsize&quot;, &quot;2200k&quot;]&lt;br /&gt;      bitrate: 2000 # en kbps&lt;br /&gt;      constraints:&lt;br /&gt;        audio: true&lt;br /&gt;        video:&lt;br /&gt;          width:&lt;br /&gt;            ideal: 1280&lt;br /&gt;            max: 1280&lt;br /&gt;          height:&lt;br /&gt;            ideal: 720&lt;br /&gt;            max: 720&lt;br /&gt;          frameRate:&lt;br /&gt;            ideal: 30&lt;br /&gt;            max: 30&lt;br /&gt;    cameraProfiles: [&lt;br /&gt;      # id: unique identifier of the profile&lt;br /&gt;      # name: name of the profile visible to users&lt;br /&gt;      # default: if this is the default profile which is pre-selected&lt;br /&gt;      # bitrate: the average bitrate for used for a webcam stream&lt;br /&gt;      # constraints:&lt;br /&gt;      #   # Optional constraints put on the requested video a browser MAY honor&lt;br /&gt;      #   # For a detailed list on possible values see:&lt;br /&gt;      #   #&lt;span&gt; &lt;/span&gt;&lt;a class=&quot;_blanktarget&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints&lt;/a&gt;&lt;br /&gt;      #   # Examples:&lt;br /&gt;      #   width: requested width of the camera stream&lt;br /&gt;      #   frameRate: requested framerate&lt;br /&gt;      {id: low, name: Low, default: false, bitrate: 300, constraints: {width: 640, height: 360, frameRate: 15}},&lt;br /&gt;      {id: medium, name: Medium, default: false, bitrate: 800, constraints: {width: 854, height: 480, frameRate: 30}},&lt;br /&gt;      {id: high, name: High, default: true, bitrate: 1500, constraints: {width: 1280, height: 720, frameRate: 30}},&lt;br /&gt;      {id: hd, name: Full HD, default: false, bitrate: 2500, constraints: {width: 1920, height: 1080, frameRate: 30}}&lt;br /&gt;      ]&lt;br /&gt;  pads:&lt;br /&gt;    url: &lt;br /&gt;  media:&lt;br /&gt;    sipjsHackViaWs: true&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=470632</guid>
    </item>
    <item>
      <title>Consulta sobre salto a moodle</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=470544</link>
      <pubDate>Wed, 22 Oct 2025 14:23:14 GMT</pubDate>
      <description>por Italo Vergara Colombo. &amp;nbsp;&lt;p&gt;&lt;p&gt;Estimados,&lt;/p&gt;
&lt;p&gt;Muy buenos días. Quisiera comentar una situación y realizar una consulta.&lt;/p&gt;
&lt;p&gt;Actualmente cuento con un sistema en el cual diversas personas inician sesión. Mi intención es que, desde dicho sistema, los usuarios puedan hacer clic en un módulo y acceder directamente a Moodle, ya autenticados (sin necesidad de iniciar sesión nuevamente).&lt;/p&gt;
&lt;p&gt;Actualmente utilizo la versión 4.1 de Moodle, y tengo planificado actualizar a la versión 4.5 a fin de año. Me gustaría saber si esta integración es posible y, en caso de que alguien ya la haya implementado, si pudiera orientarme sobre cómo llevarla a cabo.&lt;/p&gt;
&lt;p&gt;Saludos cordiales,&lt;br /&gt;&lt;strong&gt;Italo Vergara&lt;/strong&gt;&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=470544</guid>
    </item>
    <item>
      <title>Aplicación Móvil no enlaza con mi plataforma</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=469985</link>
      <pubDate>Fri, 19 Sep 2025 22:04:08 GMT</pubDate>
      <description>por alfredo ramirez. &amp;nbsp;&lt;p&gt;&lt;p&gt;Buenas tardes, espero se encuentren bien.&lt;/p&gt;
&lt;p&gt;Hace unos meses implementamos un modulo de seguridad en el servidor donde tengo instalada la plataforma, además, se instaló el certificado de seguridad SSL.&lt;/p&gt;
&lt;p&gt;Desde que se hizo ese movimiento, mi plataforma ya no deja acceder desde la aplicación móvil a pesar de que tengo activada la opción de &quot;&lt;span&gt;Habilitar &lt;/span&gt;&lt;span class=&quot;highlight&quot;&gt;servicio we&lt;/span&gt;&lt;span&gt;b para dispositivos móviles&quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Cuando pongo el link de mi plataforma me deja acceder al login, pero cuando pongo mis datos de acceso me arroja este mensaje:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img class=&quot;img-fluid&quot; style=&quot;margin-left:auto;margin-right:auto;&quot; src=&quot;https://moodle.org/pluginfile.php/226/mod_forum/post/1886684/WhatsApp%20Image%202025-09-19%20at%204.01.52%20PM.jpeg&quot; width=&quot;268&quot; height=&quot;581&quot; alt=&quot;WhatsApp%20Image%202025-09-19%20at%204.01.52%20PM.jpeg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;No se si sea el modulo de seguridad de mi servidor o que instalé el certificado SSL. Cabe recalcar que mi modulo de seguridad es uno llamado WAF y bloquea direcciones ip extranjeras.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Gracias por su atención, quedo al pendiente.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=469985</guid>
    </item>
    <item>
      <title>Problema con Cloudflare</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=469155</link>
      <pubDate>Tue, 29 Jul 2025 18:59:25 GMT</pubDate>
      <description>por Italo Vergara Colombo. &amp;nbsp;&lt;p&gt;&lt;p&gt;&lt;strong&gt;Estimados:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Actualmente estoy utilizando Moodle en su versión 4.1 y tengo una consulta respecto a la integración con Cloudflare. He intentado implementar una verificación de seguridad en la página de inicio de sesión (tipo &quot;soy humano&quot;). La operación aparenta ser exitosa, sin embargo, he notado que es posible iniciar sesión sin marcar dicha opción, lo cual no debería ocurrir.&lt;/p&gt;
&lt;p&gt;Mi intención es aplicar esta verificación &lt;em&gt;solo en el login&lt;/em&gt;, por lo que el plugin existente no me resulta útil para este caso. Agradecería mucho si alguien que haya implementado algo similar puede orientarme, ya que lo que busco es impedir el inicio de sesión mientras no se haya completado correctamente la verificación humana.&lt;/p&gt;
&lt;p&gt;Cabe mencionar que estoy usando el tema &lt;strong&gt;Boost Union&lt;/strong&gt;, y he insertado el código en la plantilla de login (ruta: /moodle/theme/boost_union/templates/core/loginform.mustache, específicamente en el siguiente bloque:&lt;/p&gt;
&lt;div&gt;        &amp;lt;div class=&quot;login-form-password form-group&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;            &amp;lt;label for=&quot;password&quot; class=&quot;sr-only&quot;&amp;gt;{{#str}} password {{/str}}&amp;lt;/label&amp;gt;&lt;/div&gt;
&lt;div&gt;            &amp;lt;input type=&quot;password&quot; name=&quot;password&quot; id=&quot;password&quot; value=&quot;&quot; {{!&lt;/div&gt;
&lt;div&gt;                !}}class=&quot;form-control form-control-lg&quot; {{!&lt;/div&gt;
&lt;div&gt;                !}}placeholder=&quot;{{#cleanstr}}password{{/cleanstr}}&quot; {{!&lt;/div&gt;
&lt;div&gt;                !}}autocomplete=&quot;current-password&quot;&amp;gt;&lt;/div&gt;
&lt;div&gt;        &amp;lt;/div&amp;gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;text-align:initial;&quot;&gt;      &amp;lt;div class=&quot;cf-turnstile&quot; data-sitekey=&quot;CLAVE PUBLICA&quot; data-theme=&quot;light&quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;text-align:initial;&quot;&gt;       &amp;lt;script src=&quot;https://challenges.cloudflare.com/turnstile/v0/api.js&quot; async defer&amp;gt;&amp;lt;/script&amp;gt; &lt;img class=&quot;img-fluid&quot; src=&quot;https://moodle.org/pluginfile.php/226/mod_forum/post/1883489/Captura%20de%20pantalla%202025-07-29%20145856.png&quot; alt=&quot;&quot; width=&quot;533&quot; height=&quot;311&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Agradezco de antemano cualquier apoyo o experiencia que puedan compartir respecto a este tema.&lt;/p&gt;
&lt;p&gt;Saludos cordiales,&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;text-align:initial;&quot;&gt;Atte&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;text-align:initial;&quot;&gt;Italo&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=469155</guid>
    </item>
    <item>
      <title>SyntaxError</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=468616</link>
      <pubDate>Tue, 24 Jun 2025 03:17:54 GMT</pubDate>
      <description>por Wladimir Vega Herrera. &amp;nbsp;&lt;p&gt;&lt;p&gt;Unexpected token '&amp;lt;', &quot;&amp;lt;! DOCTYPE &quot;... is not valid JSON &lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=468616</guid>
    </item>
    <item>
      <title>Busqueda curso por script</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=466286</link>
      <pubDate>Fri, 21 Feb 2025 10:11:21 GMT</pubDate>
      <description>por Pepe Soriano. &amp;nbsp;&lt;p&gt;&lt;p&gt;Hola.&lt;/p&gt;
&lt;p&gt;Dispongo de un script para buscar dentro de una carpeta donde contenemos varias plataformas de moodle y queremos buscar el numero total de plataformas que tiene ese curso creado. Pero el script no me termina de computar, ya que al, menos debe de aparecer una y no me la cuenta, ¿podeis indicarme que he planteado mal?&lt;/p&gt;
&lt;p&gt;Versión actual de moodle: 4.1.11&lt;/p&gt;
&lt;pre class=&quot;language-markup&quot;&gt;&lt;code&gt;#!/bin/bash

MOODLE_PATH=&quot;/var/www/moodles&quot;  # Ruta donde están los Moodle
SEARCH_TERMS=(&quot;Fermin Domingo&quot; &quot;23-24&quot;)  # Palabras clave a buscar
COUNT=0
PHP_SCRIPT=&quot;/tmp/obtener_db.php&quot;

echo &quot;Buscando cursos que contengan todas las palabras '${SEARCH_TERMS[*]}' en las instalaciones de Moodle...&quot;

for moodle in &quot;$MOODLE_PATH&quot;/*; do
    if  -d &quot;$moodle&quot; &amp;amp;&amp;amp; -f &quot;$moodle/config.php&quot; ; then
        # Ejecutar el script PHP para obtener credenciales
        CREDS=$(php &quot;$PHP_SCRIPT&quot; &quot;$moodle&quot; 2&amp;gt;/dev/null)

        if  &quot;$CREDS&quot; == *&quot;Error&quot;* ; then
            echo &quot;No se pudo obtener credenciales en $moodle&quot;
            continue
        fi

        # Extraer credenciales separadas por '|'
        IFS='|' read -r DB_HOST DB_NAME DB_USER DB_PASS &amp;lt;&amp;lt;&amp;lt; &quot;$CREDS&quot;

        # Construir la consulta SQL para que todas las palabras clave estén presentes
        SQL_QUERY=&quot;SELECT COUNT(*) FROM mdl_course WHERE fullname LIKE '%${SEARCH_TERMS[0]}%'&quot;
        for TERM in &quot;${SEARCH_TERMS[@]:1}&quot;; do
            SQL_QUERY+=&quot; AND fullname LIKE '%$TERM%'&quot;
        done

        # Ejecutar consulta MySQL
        RESULT=$(mysql -h &quot;$DB_HOST&quot; -u &quot;$DB_USER&quot; -p&quot;$DB_PASS&quot; -D &quot;$DB_NAME&quot; -se &quot;$SQL_QUERY&quot;)

        if  &quot;$RESULT&quot; -gt 0 ; then
            echo &quot;Curso encontrado en: $moodle ($RESULT coincidencias)&quot;
            ((COUNT++))
        fi
    fi
done

echo &quot;El curso con todas las palabras clave '${SEARCH_TERMS[*]}' se encuentra en $COUNT plataformas Moodle.&quot;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=466286</guid>
    </item>
    <item>
      <title>Homologar Moodle para curso bonificado del SEPE</title>
      <link>https://moodle.org/mod/forum/discuss.php?d=468258</link>
      <pubDate>Mon, 02 Jun 2025 09:41:08 GMT</pubDate>
      <description>por Manuel Martinez. &amp;nbsp;&lt;p&gt;&lt;p&gt;Buenos días&lt;/p&gt;
&lt;p&gt;En nuestro centro de formación utilizamos una plataforma de Moodle 4.2.1, queremos ofrecer un curso bonificado del SEPE y en el documento telemático para solicitarlo nos aparece un cuadro con un &quot;Acceso a control y seguimiento de acciones formativas&quot; que pide un acceso y una URL.&lt;br /&gt;&lt;br /&gt;Buscando información. parece que tenemos que realizar la acreditación e inscripción en teleformación para la plataforma del SEPE, para ello hay que homologar nuestro Moodle mediante un archivo WSDL. Hay también un documento PDF bastante extenso y detallado, pero no estamos seguros de por dónde empezar ni cuáles son los pasos concretos a seguir ya que nosotros gestionamos el Front End en Moodle, cursos, matriculaciones, contenidos, etc pero poco mas.&lt;/p&gt;
&lt;p&gt;Mi duda: ¿Alguien ha pasado por este proceso?&lt;/p&gt;
&lt;p&gt;Tenemos también dudas sobre si con este proceso no se vulnera la seguridad y se cumple con la LOPD y GDPR de los participantes.&lt;/p&gt;
&lt;p&gt;Cualquier consejo, enlace útil, si existe un plugin para esto o experiencia previa sería de gran ayuda. ¡Gracias por adelantado!&lt;/p&gt;&lt;/p&gt;</description>
      <guid isPermaLink="true">https://moodle.org/mod/forum/discuss.php?d=468258</guid>
    </item>
  </channel>
</rss>