Un plugin de Chamilo es una extensión de código de programación de forma que se puede añadir una funcionalidad a la plataforma sin la necesidad de modificar el núcleo (core) de la aplicación principal
Usando la definición de wikipedia sería: "En informática, un complemento o «plug-in» es una aplicación (o programa informático) que se relaciona con otra para agregarle una función nueva y generalmente muy específica. Esta aplicación adicional es ejecutada por la aplicación principal e interactúan por medio de la interfaz de programación de aplicaciones."
Partiendo de dicha premisa, para desarrollar un plugin de Chamilo se debe cumplir:
añadir nueva funcionalidad a la plataforma
integración con la interfaz usando la API disponible
el código base de Chamilo no sea alterado.
Los plugins de Chamilo están ubicados en la carpeta plugin en el primer nivel de directorios donde esté instalada la plataforma.
Chamilo trae por defecto plugin integrados que permanecen deshabilitados por defecto, al entrar en la carpeta plugin los podremos ver separados en distintas carpetas con un nombre específico.
El nombre de la carpeta del plugin se recomienda que tenga relación con la función que se desee realizar y si tenemos claro que se va a definir una clase PHP en la implementación del proyecto pues utilizar el nombre de la clase PHP en minúsculas y sin el sufijo "Plugin" al final.
Si hacemos un breve recorrido por los distintos directorios de los plugins observamos dos tipos de estructuras:
Plugins con estructura básica: los ficheros se encuentran en la raíz de la carpeta principal (Ejemplo: "hello_world", "redirection", "before_login", "courseblock")
Plugins con estructura en directorios: principalmente se usan clases y se estructuran en carpetas (Ejemplos: "bbb", "buycourses", "sepe", "google_maps")
Directorios comunes:
lang: ficheros de idioma
resources: ficheros de estilos, imágenes
src o lib: ficheros de clases, librerías de funciones
view: ficheros de plantillas
Por último indicar que en el directorio /main/inc/lib podremos encontrar la mayoría de las clases de Chamilo que deberemos usar para obtener información relativa de la plataforma, curso, sesiones, usuarios, etc...
Para activar un plugin deberá entrar en la sección de "Plugins" desde la administración:
Seleccionar el checkbox del plugin que se desee activar y posteriormente pulsar sobre el botón "Habilitar los plugins seleccionados":
El proceso para desactivar el plugin es similar al de activación simplemente habrá que deseleccionar el plugin activo y pulsar sobre el botón de "Habilitar los plugins seleccionados"
Es importante conocer o tener una idea de donde se van a mostrar los resultados de plugin (ojo! no siempre será esto así pues puede que la funciones que realice el plugin sean internas y no muestre resultado en pantalla).
En el fichero /main/inc/lib/plugin.lib.php se puede observar las distintas regiones creadas para los plugins:
Plataforma: zonas de la pantalla en cualquier parte de la plataforma
'main_top'- parte superior de la pantalla
'main_bottom' - parte inferior de la pantalla
'login_top'- parte superior del login
'login_bottom'- parte inferior del login
'menu_top'- parte superior del módulo de menú lateral
'menu_bottom'- parte inferior del módulo de menú lateral
'content_top'- parte superior del contenido principal
'content_bottom'- parte inferior del contenido principal
'header_main' - cabecera
'header_center' - cabecera centrado
'header_left' - cabecera a la izquierda
'header_right' - cabecera a la derecha
'pre_footer' - Antes del pié de página
'footer_left' - En el pié de página en la izquierda
'footer_center' - En el pié de página centrado
'footer_right' - En el pié de página en la derecha
Administración: sólo será visible por los administradores dentro de la administración en la que aparecerá un enlace al plugin:
'menu_administrator' -> usar admin.php como punto de entrada al plugin
Curso: como si se tratara de una herramienta más dentro del curso:
'course_tool_plugin' -> usar start.php como punto de entrada al plugin
Por defecto un plugin estará disponible para definir las regiones de la plataforma, pero si queremos que aparezca en la zona de administración o con las herramientas del curso habrá que especificar en la clase del plugin las siguientes variables respectivamente:
Para seleccionar la región de un plugin en Chamilo hay dos vías de acceso:
Desde la administración acceder a "Regiones":
Desde la pantalla de "Plugins" pulsando en el botón "Regiones" de los plugins que se encuentren activos":
Desde la pantalla de "Regiones" se selecciona la zona deseada donde mostrar el plugins.
Existe un plugin en la plataforma llamado "show_regions" que permite al administrador visualizar las distintas regiones en la plataforma.
Punto de entrada al plugin, excepto en los plugins donde se haya definido en la clase la variables:
Información del plugin, este fichero es necesario. Hay dos formas en la que se puede implementar:
Usar el array $plugin_info y completar la información:
Si ha definido una clase Plugin se puede usar el método get_info:
Sustituir por el nombre que corresponda de la clase definida
Archivo opcional, usado para incluir las librerías, definiciones, etc.. Ejemplo:
Descripción del plugin, puede ser lo extensa que se desee. Se puede añadir información de casos de uso y peculiaridades que sean oportunas.
Tener en cuenta el nombre que se elige al plugin, será utilizado en la carpeta del plugin, en el fichero de la clase y en el nombre de la clase. Ejemplo:
Nombre de la clase:
donde será sustituido por el nombre elegido para el plugin.
Definición de constantes: (opcional)
valor → Cadena de texto o valor numérico.
Variables del plugin: (opcional)
Si usamos $isCoursePlugin = true podemos definir variables específicas para cada curso de la siguiente manera:
→ Nombre de la variable → Tipo de variable, puede ser 'checkbox', 'text', 'select' (esta última deberá contener un array de opciones 'options')
Constructor:
version → Versión de desarrollo del plugin. autor → Nombre del autor o autores que participan en el desarrollo. nombre_variable → array de variables de configuración, son opcionales. tipo → Tipo de variable, puede ser 'checkbox', 'text', 'select' (esta última deberá contener un array de opciones 'options')
Función create:
Función install: Si nuestro plugin requiere que se realice tareas previas ya sea de consulta o de creación de tablas de bases de datos con las que interaccionar tendremos que crearlas en el proceso de instalación.
Para llamar a la función install se creará en la raíz del plugin un fichero llamado install.php con la siguiente llamada:
Sustituir por el nombre que corresponda de la clase definida
Función uninstall: Similar a la función install pero para desinstalar o deshacer cambios.
Para llamar a la función uninstall se creará en la raíz del plugin un fichero llamado uninstall.php con la siguiente llamada:
Sustituir por el nombre que corresponda de la clase definida
Usar código de otros plugin a modo de ejemplos
Usar código ordenado y formateado:
consultar https://github.com/chamilo/chamilo-lms/wiki/Coding-conventions
Consultar la wiki https://github.com/chamilo/chamilo-lms/wiki