UNIMOODLE / moodle-local_coursetransfer

Lote P3.2 - Restauración de cursos entre plataformas
2 stars 2 forks source link

Logo Plugin Course Transfer

Local Course Transfer Plugin

Local plugin for transferring courses between platforms

Compatibility

The plugin has been tested on the following versions:

Requirements

Languages

Installation via uploaded ZIP file

  1. Log in to your Moodle site as an administrator and go to Site Administration > Plugins > Install plugins.
  2. Upload the ZIP file with the plugin code. You should only be asked to add additional details if your plugin type is not automatically detected.
  3. Verify the plugin validation report and complete the installation.

Manual Installation

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.

Global Configuration

Go to the URL:

{your/moodle/dirroot}/admin/settings.php?section=local_coursetransfer

Configure Automatic Service

After installation, the following processes will be automated in the file:

{your/moodle/dirroot}/local/coursetransfer/postinstall.php
  1. Creation of the local_coursetransfer_ws role from the coursecreator archetype
  2. Assignment of capabilities for the plugin to function
  3. Creation of a user with the above role and username: local_coursetransfer_ws
  4. Activation of web services on the platform, the REST protocol, and web services documentation.
  5. Creation of the token for the web service of the local_coursetransfer component with the above user.

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.

Configure Web Service Manually

We can also configure it manually as follows:

  1. It is recommended to create a specific role for this type of users.

  2. Create a user with web service authentication, or use an existing one.

  3. Assign the newly created role globally with the necessary permissions (webservice/rest:use).

    {your/moodle/dirroot}/admin/roles/assign.php?contextid=1

  4. Go to Server/External Services

    {your/moodle/dirroot}/admin/settings.php?section=externalservices

  5. Enable web services

    {your/moodle/dirroot}/admin/search.php?query=enablewebservices

  6. Enable the REST protocol

    {your/moodle/dirroot}/admin/settings.php?section=webserviceprotocols

  7. In the 'local_coursetransfer' external service, add it as an authorized user.

  8. Finally, manage tokens

    {your/moodle/dirroot}/admin/webservice/tokens.php

  9. Create a token assigning the local_coursetransfer service to the previously created user.

  10. This token is what needs to be used in other Moodle instances to connect.

Summary

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.

Shortcuts from the Administration Panel

The administrator will have the following links available in the 'Extensions/Restore remote courses' section of the administration panel:

CLI Executions

The following console scripts have been created:

CLI Help

All scripts have help available using the help argument:

php local/coursetransfer/cli/restore_course.php -h

Features

Deferred Tasks

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.

Notifications

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

Database Tables

Unit Tests

To run unit tests in Moodle, follow these steps using the official documentation https://moodledev.io/general/development/tools/phpunit:

  1. Install PHP Unit with Composer

  2. Configure the config.php file according to the documentation

  3. Initialize the test environment with:

    php admin\tool\phpunit\cli\init.php

  4. Run the Course Transfer test group:

    vendor\bin\phpunit --filter local_coursetransfer

Logo Plugin Course Transfer

Plugin Local Course Transfer

Plugin local para la transferencia de cursos entre plataformas

Compatibilidad

El plugin ha sido probado en las siguientes versiones:

Requisitos

Lenguajes

Instalación via uploaded ZIP file

  1. Inicie sesión en su sitio de Moodle como administrador y vaya a Administración del sitio> Complementos > Instalar complementos.
  2. Cargue el archivo ZIP con el código del complemento. Solo se le debe pedir que agregue detalles adicionales si su tipo de complemento no se detecta automáticamente.
  3. Verifique el informe de validación del complemento y finalice la instalación.

Instalación manual

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.

Global Configuration

Ir a la URL:

{your/moodle/dirroot}/admin/settings.php?section=local_coursetransfer

Configurar servicio automático

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:

  1. Creación del rol local_coursetransfer_ws desde el arquetipo coursecreator
  2. Asignación de capabilities para el funcionamiento del plugin
  3. Creación de un usuario con el rol anterior y username: local_coursetransfer_ws
  4. Activación de los servicios webs en la plataforma, el protocolo REST y la documentación de servicios webs.
  5. Creación del token para el servicio web del componente local_coursetransfer y con el usuario anterior.

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.

Configurar servicio web manual

También podemos realizar la configuración manual de la siguiente forma:

  1. Se recomienda crear un rol específico para este tipo de usuarios

  2. Creamos un usuario con la autenticación con servicio web, o utilizamos uno ya existente

  3. 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

  4. Vamos servidor/Servicios Externos

    {your/moodle/dirroot}/admin/settings.php?section=externalservices

  5. Habilitamos los servicios webs

    {your/moodle/dirroot}/admin/search.php?query=enablewebservices

  6. Habilitamos el protocolo REST

    {your/moodle/dirroot}/admin/settings.php?section=webserviceprotocols

  7. En el servicio externo ‘local_coursetransfer’ lo añadimos como usuario autorizado

  8. Y por último, en gestionar tokens

    {your/moodle/dirroot}/admin/webservice/tokens.php

  9. Creamos un token asignando el servicio de local_coursetransfer al usuario que hemos creado anteriormente.

  10. Este token es el que tenemos que utilizar en los otros Moodle para conectarse.

Resumen

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.

Accesos directos desde el panel de administración

El administrador tendrá a su disposición los siguientes enlaces en el apartado de 'Extensiones/Restaurar cursos remotos' del panel de administración:

Ejecuciones por CLI

Se han creado los siguiente script de consola:

Ayuda en CLI

Todos los scripts disponen de ayuda utilizando el argumento help:

php local/coursetransfer/cli/restore_course.php -h

Funcionalidades

Tareas en diferido

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.

Notificaciones

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:

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

Tablas de Base de datos

Tests Unitarios

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:

  1. Instalar PHP Unit con Composer

  2. Configurar el archivo config.php según documentación

  3. Inicializar el entorno de pruebas con:

    php admin\tool\phpunit\cli\init.php

  4. Ejecutar el grupo de test de Course Transfer:

    vendor\bin\phpunit --filter local_coursetransfer