Desarrollo del plugin
Chamilo-Wordpress
Tutorial
Yannick Warnier
@ywarnier
Plan de trabajo
● Que es Chamilo?
● Armar el plan: ¿Qué queremos hacer?
● Investigación: Referencias
● Instalación de software
● Primeros intentos
● Resultado
Caso Chamilo
● Sistema de gestión del aprendizaje (LMS)
● Claroline→Dokeos→Chamilo / Moodle / Canvas
● Código abierto
● https://github.com/chamilo
● https://github.com/chamilo/chamilo-lms/
Herramientas
Dispositivos
móviles
Gestión de competencias,
insignias, evaluaciones de
desempeño, ...
Desarrollo del plugin Chamilo-Wordpress
¿Qué queremos hacer?
● ¿Obtener datos genéricos de Chamilo?
¿Qué queremos hacer?
● ¿Obtener datos genéricos de Chamilo?
● ¿Obtener datos personalizados de Chamilo?
¿Qué queremos hacer?
● ¿Obtener datos genéricos de Chamilo?
● ¿Obtener datos personalizados de Chamilo?
● ¿Sincronizar las cuentas de usuario?
¿Qué queremos hacer?
● ¿Obtener datos genéricos de Chamilo?
● ¿Obtener datos personalizados de Chamilo?
● ¿Sincronizar las cuentas de usuario?
● ¿Single Sign On?
¡Una cosa a la vez!
¿Qué queremos hacer?
Obtener datos genéricos...
¿Que necesitamos?
● Un plugin que se pueda instalar
● que recupere información desde Chamilo
● (un servicio web del lado de Chamilo)
● que ofrezca un widget para mostrar la info
Obtener datos genéricos
● ¡1ra
buena noticia: Chamilo ya tiene servicios web!
● https://stable.chamilo.org/main/webservices/registration.soap.php?wsdl
● Ya, bueno, son SOAP, no son REST…
● Pero SOAP ahora está soportado en PHP por defecto
Obtener datos genéricos
● ¡1ra
buena noticia: Chamilo ya tiene servicios web!
● ¡2da
buena noticia: Hay documentación para hacer
plugins en WP! (con ejemplos como hello-dolly)
● https://developer.wordpress.org/plugins/intro/what-is-a-plugin/
● https://codex.wordpress.org/Main_Page
● https://codex.wordpress.org/Writing_a_Plugin
● https://codex.wordpress.org/Creating_Options_Pages
Obtener datos genéricos
● ¡1ra
buena noticia: Chamilo ya tiene servicios web!
● ¡2da
buena noticia: Hay documentación para hacer
plugins en WP! (con ejemplos como hello-dolly)
● Mala noticia: la documentación es algo…
desordenada (y mayormente en inglés)
Obtener datos genéricos
● Vamos avanzando:
● Wordpress pide por lo mínimo:
● Que el plugin esté en wp-contents/plugin/
● un archivo readme.txt
● un archivo .php con una cabecera específica
● (buscará el único que tenga dicha cabecera)
readme.txt
=== Chamilo ===
Contributors: ywarnier
Requires at least: 4.3
Stable tag: 1.0
Tested up to: 4.3
This plugin allows you to connect your Wordpress portal to a 
Chamilo (Learning Management System) portal.
== Description ==
Get generic and personal information from your Chamilo portal 
directly into a Wordpress block.
chamilo.php
<?php
/*
Plugin Name: Chamilo
*/
Efecto inmediato!
chamilo.php
<?php
/*
Plugin Name: Chamilo
Description: Connect to your Chamilo portal through 
simple settings
Version: 1.0
Author: Yannick Warnier
Author URI: https://github.com/ywarnier
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl­3.0.html
*/
Efecto inmediato!
chamilo.php (2)
// ...
function chamilo_install() {
    // Código de instalación
}
function chamilo_deactivation() {
    // Código de desactivación
}
function chamilo_uninstall() {
    // Código de desinstalación
}
//Calling hooks
register_activation_hook( __FILE__, 'chamilo_install' );
register_deactivation_hook( __FILE__, 'chamilo_deactivation' );
register_uninstall_hook( __FILE__, 'chamilo_uninstall' );
Obtener datos genéricos
● Tenemos que implementar hooks de activación y de
desactivación y desinstalación (limpieza) de nuestro
plugin
● Ahí la calidad de la documentación cae fatal…
● options_pages y register_settings
● add_menu_page() (unknown function)
● etc...
chamilo.php (3)
// ...
function chamilo_install() {
    // Código de instalación
    register_setting( 'reading', 'chamilo_setting_url' );
    register_setting( 'reading', 'chamilo_setting_key' );
}
function chamilo_deactivation() {
    // Código de desactivación
}
function chamilo_uninstall() {
    // Código de desinstalación
    unregister_setting( 'chamilo_setting_url' );
    unregister_setting( 'chamilo_setting_key' );
};
// ...
function chamilo_install() {
    // Código de instalación
    register_setting( 'reading', 'chamilo_setting_url' );
    register_setting( 'reading', 'chamilo_setting_key' );
}
function chamilo_deactivation() {
    // Código de desactivación
}
function chamilo_uninstall() {
    // Código de desinstalación
    unregister_setting( 'chamilo_setting_url' );
    unregister_setting( 'chamilo_setting_key' );
};
Sí... pero
no...
chamilo.php (3)
function chamilo_settings_api_init() {
    add_settings_section(
        'chamilo_connectivity_section',
        __( 'Chamilo connectivity', 'chamilo' ),
        'chamilo_connectivity_section_callback',
        'reading'
    );
    add_settings_field(
        'chamilo_setting_url',
        __( 'Chamilo's portal url', 'chamilo' ),
        'chamilo_setting_url_callback_function',
        'reading',
        'chamilo_connectivity_section'
    );
    register_setting('reading', 'chamilo_setting_url');
}
add_action( 'admin_init', 'chamilo_settings_api_init' );
Mejor
explicado
Desarrollo del plugin Chamilo-Wordpress
Obtener datos genéricos
● Ahora tenemos los settings necesarios para la
conexión
● Conectémonos a Chamilo (servicios web)
chamilo.php (3)
function chamilo_get_courses($vis = array()) {
    $sign = chamilo_get_signature(CHAMILO_SIGN);
    $user = get_option('chamilo_setting_admin');
    if (empty($vis)) {
        $vis = 'public,public­registered';
    }
    $courses = chamilo_soap_call(
        'courses_list',
        'WSCourseList',
        $user,
        $signature,
        $visibilities
    );
    return $courses;
}
chamilo.php (3)
function chamilo_soap_call() {
    // func_get_args()
    $service_path = get_option('chamilo_setting_url');
    // [ .. ]
    // Init SOAP client
    if (!empty($service_path)) {
        $client = new SoapClient($service_path);
        try {
            $r = $client­>__soapCall($action, $params);
        } catch (Exception $e) {
            error_log('In chamilo_soap_call, exception when calling: '.
$e­>getMessage());
            return false;
        }
        return $r;
    } else {
        return FALSE;
    }
}
Obtener datos genéricos
● Ahora tenemos los datos de vuelta
● ¿Como los mostramos?
Aquí me gustaría!
Obtener datos genéricos
● Ahora tenemos los datos de vuelta
● ¿Como los mostramos?
● → En un widget!
● https://codex.wordpress.org/Function_Reference/register_widget
chamilo.php (3)
<?php //archivo ChamiloCoursesListWidget.php
class ChamiloCoursesListWidget extends WP_Widget
{
    function __construct() {
        // Instantiate the parent object
        parent::__construct( false, 'Chamilo Courses list widget' );
    }
    function widget( $args, $instance ) {
        $courses = chamilo_get_courses();
        chamilo_display_courses_list($courses);
    }
    function update( $new_instance, $old_instance ) {
        // Save widget options
    }
    function form( $instance ) {
        // Output admin widget options form
    }
}
chamilo.php (3)
// Archivo chamilo.php
include __DIR__ . '/includes/ChamiloCoursesListWidget.php';
…
add_action( 'widgets_init', 'chamilo_register_widgets' );
// Archivo chamilo­functions.php
function chamilo_register_widgets() {
    register_widget( 'ChamiloCoursesListWidget' );
}
chamilo.php (3)
// Archivo chamilo­functions.php
function chamilo_display_courses_list($courses) {
    $output = '';
    if (is_array($courses) && !empty($courses)) {
        $output .= '<ul>';
        foreach ($courses as $course) {
            $output .= '<li>'
                      . '<a href="'.$course url→ .'" '
                      . ' target="_blank">'
                      . utf8_decode($course title→ )
                      . '</a> ('.$course language→ .')'
                    .'</li>';
        }
        $output .= '</ul>';
    }
    echo $output;
}
Desarrollo del plugin Chamilo-Wordpress
Desarrollo del plugin Chamilo-Wordpress
Aquí está!
Desarrollo del plugin Chamilo-Wordpress
Conclusiones
● ¿Es fácil crear un plugin?
● Super fácil!
● ¿Es fácil crear un widget?
● Super fácil!
● ¿Es fácil hacer cosas un poco más avanzadas?
● Toma mucha lectura. Ejemplos incompletos.
Conclusiones (2)
● ¿Que viene después?
● Ampliar funcionalidades
● Crear theme
● Registrar el plugin
Yannick Warnier
BeezNest
info@beeznest.com
@beeznestla

Más contenido relacionado

PPT
Clipping Algorithm In Computer Graphics
DOC
Chương 1: Mạng điện thoại di động
PDF
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI
PDF
Chamilo advantages against other LMSes
PPT
Pluggin creation
PDF
Programa Chamilo Conference
ODP
Taller: Cobrar por sus cursos con el plugin PayPal para Chamilo LMS
ODP
Integración de Chamilo con soluciones de comercio electrónico
Clipping Algorithm In Computer Graphics
Chương 1: Mạng điện thoại di động
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI
Chamilo advantages against other LMSes
Pluggin creation
Programa Chamilo Conference
Taller: Cobrar por sus cursos con el plugin PayPal para Chamilo LMS
Integración de Chamilo con soluciones de comercio electrónico

Destacado (20)

PDF
Day 3: LMS Chamilo como caso de éxito en las diferentes unidades de negocio d...
PDF
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
PDF
Estandares video-oggtheora-webm
PDF
Asociación Chamilo
PDF
Chamilo, c'est pas le Pérou - Jeudis du libre
PDF
El conectivismo y chamilo lms
PPTX
Chamilo LMS use cases in private and public companies
ODP
Categories of question on chamilo tests
PPT
ApresentaçãO1
ODP
Clean Dokeos documents inconsistencies on filesystem and database before upgr...
ODP
Course enrichment using Chamilo
PDF
Introduccion chamilo 1.10
PDF
En busca de nombre dominio y Hosting
PDF
Actividad3 michela-mosquera
PDF
The future of virtual learning environments: Beyond Chamilo 2
PDF
Chamilo 2.0 portfolio
PDF
Crear cursos-virtuales-chamilo-flisol-2014
PDF
Indicadores y reportes avanzados en el ámbito corporativo. E-learning en el s...
ODP
Presentacion sobre Chamilo en OpenExpo
PDF
Mejorando Dokeos
Day 3: LMS Chamilo como caso de éxito en las diferentes unidades de negocio d...
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
Estandares video-oggtheora-webm
Asociación Chamilo
Chamilo, c'est pas le Pérou - Jeudis du libre
El conectivismo y chamilo lms
Chamilo LMS use cases in private and public companies
Categories of question on chamilo tests
ApresentaçãO1
Clean Dokeos documents inconsistencies on filesystem and database before upgr...
Course enrichment using Chamilo
Introduccion chamilo 1.10
En busca de nombre dominio y Hosting
Actividad3 michela-mosquera
The future of virtual learning environments: Beyond Chamilo 2
Chamilo 2.0 portfolio
Crear cursos-virtuales-chamilo-flisol-2014
Indicadores y reportes avanzados en el ámbito corporativo. E-learning en el s...
Presentacion sobre Chamilo en OpenExpo
Mejorando Dokeos
Publicidad

Similar a Desarrollo del plugin Chamilo-Wordpress (20)

PDF
Instalacion chamilo-1.9
PDF
Creación de un plugin para WordPress
PPTX
Wordpress
PDF
Word press, el software libre como punto de unión - Institut mare molas 2018
PDF
Código mantenible, en Wordpress.
PDF
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
PPT
Instalacion de chamilo en koding
PDF
Crear Plugin de WordPress desde Cero
PDF
Chamilo: pasado, presente y futuro. Proyectos, planes y sueños
PDF
Wordpress: El Framework desconocido
PPTX
Introducción al Proyecto Chamilo ¿Què es Chamilo?
PPT
Documentos
PPTX
Primer taller de Wordpress - Comunicación 3
PDF
Instructivo themewordpress
PPTX
Chamilo
PDF
Formación para certificado de administradores
PDF
PLUGINS PDF.pdf
PDF
Configuracion inicial-portal-chamilo-1-9
PPT
Chamilo que es
PPTX
Administración chamilo
Instalacion chamilo-1.9
Creación de un plugin para WordPress
Wordpress
Word press, el software libre como punto de unión - Institut mare molas 2018
Código mantenible, en Wordpress.
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
Instalacion de chamilo en koding
Crear Plugin de WordPress desde Cero
Chamilo: pasado, presente y futuro. Proyectos, planes y sueños
Wordpress: El Framework desconocido
Introducción al Proyecto Chamilo ¿Què es Chamilo?
Documentos
Primer taller de Wordpress - Comunicación 3
Instructivo themewordpress
Chamilo
Formación para certificado de administradores
PLUGINS PDF.pdf
Configuracion inicial-portal-chamilo-1-9
Chamilo que es
Administración chamilo
Publicidad

Más de Yannick Warnier (20)

PDF
Chamilo, 12 ans déjà
PDF
Chamilo en FLISOL Perú 2018
PDF
Novedades de PHP 7.*
PDF
The benefits of using Git
PDF
Skillms, solution de gestion des talents
PDF
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
PDF
Novedades de Chamilo 1.11 - 2017
PDF
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
PDF
L'avenir de Chamilo - 2017
PDF
Introducción a Nginx y PHP FPM
PDF
Como usar un aula virtual como recurso educativo - Caso Chamilo
PDF
Prepa certificación docente Chamilo 1.8 (CHACOBU)
ODP
Taller de optimizacion de servidores web tipo LAMP
PDF
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
PDF
Skillbeez short-presentation
ODP
Educación de impacto con asistencia tecnológica
ODP
L'association Chamilo
ODP
The Chamilo Association
ODT
Chamilo 1.8.7.1 Manual del alumno - ES
PDF
Chamilo 1.8.7.1 Manual del docente - ES
Chamilo, 12 ans déjà
Chamilo en FLISOL Perú 2018
Novedades de PHP 7.*
The benefits of using Git
Skillms, solution de gestion des talents
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
Novedades de Chamilo 1.11 - 2017
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
L'avenir de Chamilo - 2017
Introducción a Nginx y PHP FPM
Como usar un aula virtual como recurso educativo - Caso Chamilo
Prepa certificación docente Chamilo 1.8 (CHACOBU)
Taller de optimizacion de servidores web tipo LAMP
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
Skillbeez short-presentation
Educación de impacto con asistencia tecnológica
L'association Chamilo
The Chamilo Association
Chamilo 1.8.7.1 Manual del alumno - ES
Chamilo 1.8.7.1 Manual del docente - ES

Último (20)

PPTX
ETICA PROFESIONAL PARA MOTIVACION PERSONAL
PDF
Presentacion_Resolver_CEM_Hospitales_v2.pdf
PDF
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
PDF
PPT ProChile 2019 beneficios de la construccion con madera
PDF
Precomisionado de equipos introduccion.pdf
PPTX
MAQUINAS DE FLUIDO - UNIDAD I.pptx
PPTX
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
PDF
Vigas tipos, datos curiosos y contruccion
PPTX
Instalaciones Electricas.pptx cables electricos
PPT
Sistema de muestrea de datos en operaciones
PDF
alimentos de bebidas45rtrtytyurrrr 1.pdf
PDF
IMPORTANCIA DE CARNE DE COBAYOS- CUYES CRI
PDF
Infraestructuras en la seguridad vial.pdf
PDF
SESION 01 - LEY 29783, LEY DE SEGURODAD Y SALUD EN EL TRABAJO (1) (1).pdf
PPTX
PROCESOS DE REGULACION DE CRECIMIENTO.pptx
PDF
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
PDF
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
PPTX
nom-020-stps-221027181711-272h6bfa3.pptx
PPT
CLASE_1_CICLO_HIDROLOGICO_ALUMNOS_2015.ppt
PPT
flujo de caja 2 para la evaluacion de proyectos
ETICA PROFESIONAL PARA MOTIVACION PERSONAL
Presentacion_Resolver_CEM_Hospitales_v2.pdf
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
PPT ProChile 2019 beneficios de la construccion con madera
Precomisionado de equipos introduccion.pdf
MAQUINAS DE FLUIDO - UNIDAD I.pptx
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
Vigas tipos, datos curiosos y contruccion
Instalaciones Electricas.pptx cables electricos
Sistema de muestrea de datos en operaciones
alimentos de bebidas45rtrtytyurrrr 1.pdf
IMPORTANCIA DE CARNE DE COBAYOS- CUYES CRI
Infraestructuras en la seguridad vial.pdf
SESION 01 - LEY 29783, LEY DE SEGURODAD Y SALUD EN EL TRABAJO (1) (1).pdf
PROCESOS DE REGULACION DE CRECIMIENTO.pptx
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
nom-020-stps-221027181711-272h6bfa3.pptx
CLASE_1_CICLO_HIDROLOGICO_ALUMNOS_2015.ppt
flujo de caja 2 para la evaluacion de proyectos

Desarrollo del plugin Chamilo-Wordpress