Cuando intentas conectar al webservice de Moodle para añadir algún servicio externo y recibes el siguiente error:
Detectado un error de codificación, debe ser corregido por un programador: Cannot find file with external function implementation Más información sobre este error Información de depuración: Error code: codingerror Trazado de la pila (stack): line 87 of /lib/externallib.php: coding_exception thrown line 36 of /admin/webservice/documentation.php: call to external_api::external_function_info()
Algún módulo o plugin de terceros está provocando este error.
Si habilitas el debug de Moodle y no recibes información sobre qué puede estar provocando el error, prueba a hacer lo siguiente:
1) Edita la línea 86 del archivo implicado en el error:
/lib/externallib.php
2) Cambia el siguiente código que viene por defecto:
if (!file_exists($function->classpath)) { throw new coding_exception('Cannot find file with external function implementation'); }
Por este otro al que añadiremos la función de imprimir en pantalla el debug de ese error print_r($function);
if (!file_exists($function->classpath)) { print_r($function); throw new coding_exception('Cannot find file with external function implementation'); }
Ahora si entras en la web de nuevo aparecerá un error que te indicará el módulo o plugin que está provocando el error.
Si no aparece ningún error, mira el código fuente de la página (usando las teclas Control + U) y debe aparecer al principio del todo.
Por ejemplo, en este caso vemos el siguiente código que aparece al principio del todo:
stdClass Object ( [id] => 533 [name] => block_remuiblck_complete_task [classname] => block_remuiblck\external\api [methodname] => complete_task [classpath] => /home/xxxxxxxx/public_html/blocks/remuiblck/externallib.php [component] => block_remuiblck [capabilities] => [services] => )
En este caso es un bloque del theme RemUI es el que está causando el problema.
3)¿Cómo solucionar el problema?
Iremos a Administración del sitio - Extensiones - Vista General de Extensiones y veremos si el módulo que da el error está instalado o falta en el sistema
En este caso vemos que el módulo existe en la base de datos pero no en el disco:
Por lo que procederemos a instalar el bloque que falta para solucionar definitivamente el error.