Moodle nos provee de una serie de funcionalidades (gestión de alumnos y cursos, manejo de roles, subida y descarga de archivos, foros, etc) que son interesantes poderlas utilizar en otros entornos, combinadas con ERPs, sistemas de RRHH, portales, desde aplicaciones en dispositivos móviles …
Ésta es la principal funcionalidad de los servicios web que Moodle proporciona en su versión 2.0 y que, supongo, se irán añadiendo y actualizando en posteriores versiones. Además de ésta, tienen otras funciones, por ejemplo para la integración de aplicaciones externas dentro de Moodle a través de IMS LTI, pero esto daría para otro post.
Ya que había pensado en este artículo como algo práctico, finalizo la presentación y «nos metemos en el ajo«. Para comenzar a usar los servicios web primero hay que configurar varios parámetros en Moodle, que explico en el siguiente vídeo:
Podremos usar cualquiera de los protocolos que admite Moodle: XML-RPC, SOAP, REST y AMF, para la comunicación.
En éste ejemplo trabajaremos con XML-RPC.
1º Necesitamos de las librerías Zend XML-RPC y las importamos:
require_once ‘Zend/XmlRpc/Client.php’;
2º Creamos dos cursos y la variable params, que será un array, para enviarla en la llamada al cliente XML-RPC:
$course1 = new stdClass();
$course1->fullname = ‘curso de prueba 1’;
$course1->shortname = ‘curso1’;
$course1->categoryid = 1; //Miscelanea$course2 = new stdClass();
$course2->fullname = ‘curso de prueba 2’;
$course2->shortname = ‘curso2’;
$course2->categoryid = 1; //Miscelanea$courses = array($course1, $course2);
$params = array(‘courses’ => $courses);
3º Montamos la URL de llamada (usando el token generado):
$moodleurl = «http://localhost/moodle202»;
$token = «xxxxxxxxxxxxxxxxxxxxxxxx»;$serverurl = $moodleurl . «/webservice/xmlrpc/server.php» . ‘?wstoken=’ . $token;
4º Instanciamos el cliente enviando la URL como parámetro
$xmlrpcclient = new Zend_XmlRpc_Client($serverurl);
5º Ejecutamos el método call pasando la función que vamos a utilizar y que configuramos previamente en el vídeo, y los parámetros:
$function = ‘moodle_course_create_courses’;
try {
$createdcourses = $xmlrpcclient->call($function, $params);
} catch (Exception $e) {
var_dump($e);
}
Ya solo queda comprobar que se han creado los cursos correctamente.
15 comments