Local plugin for transferring courses between platforms
The plugin has been tested on the following versions:
The plugin can also be installed by placing the contents of this directory in
{your/moodle/dirroot}/local/coursetransfer
Then, log in to your Moodle site as an administrator and go to Site Administration > Notifications to complete the installation.
Alternatively, you can run
$ php admin/cli/upgrade.php
to complete the installation from the command line.
Go to the URL:
{your/moodle/dirroot}/admin/settings.php?section=local_coursetransfer
Maximum course size to restore
Destination sites
Origin sites
Origin user field
Field to use for searching a user on the origin site relative to the destination site: username, email, userid, idnumber.
This will be the way to authenticate a user on the origin and destination platforms. Example: If you select username, a user will be able to view, restore, and delete, according to their permissions, the courses associated with the same username on the other platform.
After installation, the following processes will be automated in the file:
{your/moodle/dirroot}/local/coursetransfer/postinstall.php
Additionally, if something is misconfigured or a role or user is deleted at any time, the 'Refresh' button can be executed (runs the postinstall.php file and redirects to the same site) to review and fix any configuration changes on the platform:
{your/moodle/dirroot}//local/coursetransfer/index.php
On this same page, we can see the service token and a link to the plugin configuration.
We can also configure it manually as follows:
It is recommended to create a specific role for this type of users.
Create a user with web service authentication, or use an existing one.
Assign the newly created role globally with the necessary permissions (webservice/rest:use).
{your/moodle/dirroot}/admin/roles/assign.php?contextid=1
Go to Server/External Services
{your/moodle/dirroot}/admin/settings.php?section=externalservices
Enable web services
{your/moodle/dirroot}/admin/search.php?query=enablewebservices
Enable the REST protocol
{your/moodle/dirroot}/admin/settings.php?section=webserviceprotocols
In the 'local_coursetransfer' external service, add it as an authorized user.
Finally, manage tokens
{your/moodle/dirroot}/admin/webservice/tokens.php
Create a token assigning the local_coursetransfer service to the previously created user.
This token is what needs to be used in other Moodle instances to connect.
On this same page, we can see the service token and a link to the plugin configuration.
/local/coursetransfer/index.php
Additionally, if something is misconfigured or a role or user is deleted at any time, the 'Refresh' button can be executed (runs the postinstall.php file and redirects to the same site) to review and fix any configuration changes on the platform.
The administrator will have the following links available in the 'Extensions/Restore remote courses' section of the administration panel:
The following console scripts have been created:
All scripts have help available using the help argument:
php local/coursetransfer/cli/restore_course.php -h
The administrator can select, both from the console and the graphical interface, whether the task will be executed as soon as possible or on a specific date. For this, in the following features:
A configuration will appear to select whether the task will be executed in a deferred manner.
At the time of clicking on that configuration, the user can select the date when the execution will start on the origin platform.
Thus, the cron will only execute that task when the execution date has passed.
When a functionality is executed, asynchronous ad-hoc tasks are used that are executed by Moodle's cron. For this reason, notification functionality has been added in the following executions:
The plugin comes with a default configuration, but this configuration can be modified by the administrator or the user:
/message/notificationpreferences.php
If web is selected, the notification will be via the web application.
And if Email is selected, the user will receive an email when the functionality is completed.
The administrator can disable these notifications for all users in any case: /admin/message.php
local_coursetransfer_request
Contains information about requests between platforms.
local_coursetransfer_origin
Contains information about configured origin sites.
local_coursetransfer_destiny
Contains information about configured destination sites.
To run unit tests in Moodle, follow these steps using the official documentation https://moodledev.io/general/development/tools/phpunit:
Install PHP Unit with Composer
Configure the config.php file according to the documentation
Initialize the test environment with:
php admin\tool\phpunit\cli\init.php
Run the Course Transfer test group:
vendor\bin\phpunit --filter local_coursetransfer
Plugin local para la transferencia de cursos entre plataformas
El plugin ha sido probado en las siguientes versiones:
El plugin también se puede instalar colocando el contenido de este directorio en
{your/moodle/dirroot}/local/coursetransfer
Luego, inicie sesión en su sitio Moodle como administrador y vaya a Administración del sitio> Notificaciones para completar la instalación.
Como alternativa, puede ejecutar
$ php admin/cli/upgrade.php
para completar la instalación desde la línea de comandos.
Ir a la URL:
{your/moodle/dirroot}/admin/settings.php?section=local_coursetransfer
Tamaño máximo del curso a restaurar
Sitios destino
Sitios origen
Campo usuario origen
Campo a utilizar para la búsqueda de un usuario en el sitio de origen respecto al sitio de destino: username, email, userid, idnumber.
Será la forma de autenticar un usuario en las plataformas de origen y destino. Ejemplo: Si seleccionamos username, un usuario podrá visualizar, restaurar y borrar, según sus permisos, los cursos asociados en la otra plataforma al usuarios con el mismo username.
Después de la instalación, se ejecutará el archivo:
{your/moodle/dirroot}/local/coursetransfer/postinstall.php
En ese archivo estarán automatizados los siguientes procesos:
Además, si en cualquier momento se desconfigura algo o se borra algún rol o usuario, se podrá ejecutar el botón de ‘Refrescar’ (ejecuta el archivo postinstall.php y redirige al mismo sitio) para revisar y arreglar cualquier cambio en la configuración de la plataforma:
{your/moodle/dirroot}//local/coursetransfer/index.php
En esta misma página podremos ver el token del servicio y un enlace a la configuración del plugin.
También podemos realizar la configuración manual de la siguiente forma:
Se recomienda crear un rol específico para este tipo de usuarios
Creamos un usuario con la autenticación con servicio web, o utilizamos uno ya existente
Le añadimos como rol el nuevo creado de forma global, con los permisos necesarios (webservice/rest:use).
{your/moodle/dirroot}/admin/roles/assign.php?contextid=1
Vamos servidor/Servicios Externos
{your/moodle/dirroot}/admin/settings.php?section=externalservices
Habilitamos los servicios webs
{your/moodle/dirroot}/admin/search.php?query=enablewebservices
Habilitamos el protocolo REST
{your/moodle/dirroot}/admin/settings.php?section=webserviceprotocols
En el servicio externo ‘local_coursetransfer’ lo añadimos como usuario autorizado
Y por último, en gestionar tokens
{your/moodle/dirroot}/admin/webservice/tokens.php
Creamos un token asignando el servicio de local_coursetransfer al usuario que hemos creado anteriormente.
Este token es el que tenemos que utilizar en los otros Moodle para conectarse.
En esta misma página podremos ver el token del servicio y un enlace a la configuración del plugin.
/local/coursetransfer/index.php
Además, si en cualquier momento se desconfigura algo o se borra algún rol o usuario, se podrá ejecutar el botón de ‘Refrescar’ (ejecuta el archivo postinstall.php y redirige al mismo sitio) para revisar y arreglar cualquier cambio en la configuración de la plataforma.
El administrador tendrá a su disposición los siguientes enlaces en el apartado de 'Extensiones/Restaurar cursos remotos' del panel de administración:
Se han creado los siguiente script de consola:
Todos los scripts disponen de ayuda utilizando el argumento help:
php local/coursetransfer/cli/restore_course.php -h
El administrador puede seleccionar, tanto por consola, como por interfaz gráfica, si la tarea se ejecutará lo antes posible, o en una fecha determinada. Para ello, en siguientes funcionalidades:
Aparecerá una configuración para poder seleccionar, si la tarea se ejecutará de forma diferida.
En el momento de hacer clic en esa configuración, el usuario podrá seleccionar la fecha en la que comenzará la ejecución en la plataforma de origen.
De esta forma, el cron solo ejecutará esa tarea cuando la fecha de ejecución se haya sobrepasado.
Cuando se ejecuta una funcionalidad, se utilizan tareas adhoc asíncronas que se ejecutan mediante el cron de Moodle. Por este motivo, se ha añadido la funcionalidad de aviso por notificación en las siguientes ejecuciones:
Borrado de categoría remota El plugin trae una configuración por defecto, pero esta configuración, se puede modificar por el administrador o por el usuario:
/message/notificationpreferences.php
Si se selecciona web, la notificación será mediante la aplicación web.
Y si selecciona Email, el usuario recibirá un email cuando la funcionalidad se complete.
El administrador podrá desactivar, en cualquier caso, estas notificaciones para todos los usuarios: /admin/message.php
local_coursetransfer_request
Contiene la información de las peticiones entre plataformas.
local_coursetransfer_origin
Contiene la información de los sitios de origen configurados.
local_coursetransfer_target
Contiene la información de los sitios de destino configurados.
Para ejecutar los test unitarios en Moodle hay que realizar los siguientes pasos utilizando la documentación oficial https://moodledev.io/general/development/tools/phpunit:
Instalar PHP Unit con Composer
Configurar el archivo config.php según documentación
Inicializar el entorno de pruebas con:
php admin\tool\phpunit\cli\init.php
Ejecutar el grupo de test de Course Transfer:
vendor\bin\phpunit --filter local_coursetransfer