domingo, 23 de febrero de 2014

Moodle con web services

Vamos a configurar web services con moodle, para esto necesitamos 2 instalaciones de moodle, en mi caso tendré en mi propio local 2 proyectos moodle con diferentes virtual host tendré en mi ejemplo a local.moodle.com y local.moodle2.com.

Si tienes problemas para  levantar proyectos locales visiten mi post anterior de  como instalar moodle en ubuntu: http://johnny1402.blogspot.com/2014/02/instalar-moodle-261-en-ubuntu-1310.html




Tengo 2 moodle instalado, ahora la idea es que moodle2 se comunique a moodle1 

Paso1: creamos un rol especial para más adelante crear un usuario webservice.


En mi caso le daré  todos los permisos a este  rol, pero es necesario x lo menos dar al protocolo por el cual necesitaremos.


Listo, ahora ya tenemos nuestro rol para nuestro servicio web en moodle.

Paso 2: creamos a un usuario y le asignamos al rol que creamos en la parte de arriba.



verificamos que el usuario se aya creado
Asignamos al usuario al rol web service



Hasta aquí solo tenemos a un usuario "Usuario Web Service" asignado al rol "Servicio Web"

Ahora procederemos a activar y crear el web service, podemos apoyarnos de los links en la documentación de moodle: http://docs.moodle.org/26/en/How_to_create_and_enable_a_web_service

1. Página Principal ► Administración del sitio ► Características avanzadas
2. Habilitar servicios web haciendo check y despues hacemos click en guardar cambios.


Nos dirigimos a Página Principal ► Administración del sitio ► Extensiones ► Identificación ► Gestionar identificación y activamos la Identificación de Servicios Web ('Web Services')


Habilitamos los protocolos a usar por nuestro web service. En nuestro caso solo habilitaremos SOAP, para esto vamos a la ruta Página Principal ► Administración del sitio ► Extensiones ► Servicio Web ► Administrar protocolos


La idea de este post es desarrollar un servicio a través de un plugin que se debería desarrollar en la carpeta local y usar ese servicio, me parece que esa es la idea correcta.
Para esto leeremos el siguiente link, que nos enseña hacer y es la cual seguiremos.
http://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin

Descargamos el plugin modelo de la url https://github.com/moodlehq/moodle-local_wstemplate lo pegamos en la carpeta local de moodle y procedemos a instalar el plugin



regresamos a la pagina de inicio de nuestro moodle1 y nos cargara una vista comunicándonos que se encontró en la carpeta local un plugin de tipo webservice y procedemos a la instalación.



Pero, antes de instalar esto es importante, este plugin permite crear métodos para consumir a través del servicio y tiene reglas y y patrón de desarrollo, lo que haremos será utilizar los métodos existentes para solamente llamarlos, pero por que antes de instalar, se hace esto porque al instalar lee el archivo services.php y registrar en la base de datos las funciones del plugin.

nos ubicamos en el archivo services.php


Aquí agregamos algunas funciones de web service que ya existen.



En la imagen anterior estamos registrando un método de web service que ya existe en el modulo de cursos.
Pero en este ejemplo probaremos su método de saludo, pero podemos crear nuestras propias funciones y usar los métodos de otras librerías de llamado externos solo hay que registrar en su configuración los métodos.


Creamos un token para nuestro acceso a traves del servicio web, nos dirigimos a la ruta Página Principal ► Administración del sitio ► Extensiones ► Servicio Web ► Administrar tokens y ahí hacemos click en agregar.



en el formulario siguiente agregamos el usuario que creamos para el Web Service y también seleccionamos el nombre del plugin que pusimos en nuestro local.



Vemos el resultado nuestro token que lo utilizaremos cuando nos conectemos desde otro sistema.



Nos dirigimos al otro moodle2 y creamos una carpeta en la raíz, en mi caso creare una llamada moodle1 y dentro creare un php llamado service.php


dentro de este archivo pondremos el siguiente código, es básicamente llamar al método de saludo del plugin que instalamos en moodle1.




Probamos en la URL http://local.moodle2.com/moodle1/service.php en la cual debería mostrarme un mensaje que le envio a moodle 1 y este me retorna el mismo mensaje y adjunta el usuario que le pertenece al servicio.



Ahora podemos crear todas las funciones que queramos para leer y/o escribir en moodle 1 usando sus apis sin ninguna problema.




domingo, 16 de febrero de 2014

Instalar Moodle 2.6.1+ en Ubuntu 13.10

Holas, ahora vamos a instalar Moodle en la versión 2.6.1 en Ubuntu 13.10, voy a configurar un host virtual seguido a descargar Moodle de su  sitio web oficial.

1. Creamos nuestra carpeta de proyectos

En nuestro ambiente de desarrollo local con el dominio local.moodle.com, para esto nos ubicamos en una carpeta donde almacenaremos todos nuestros proyectos, en mi caso crearé una carpeta llamada "projects".

2. Descarga de Moodle

Descargamos el proyecto moodle desde este link: http://download.moodle.org/
nos descargamos el comprimido y lo descargamos en el directorio "projects" que en este caso es nuestro repositorios de proyectos



3. Configuramos el virtual host en el local

Ya tenemos nuestro directorio de proyectos, nuestro moodle descargado y ubicado, ahora vamos a crear archivos necesarios y configurar para que este proyecto lo levantemos con un dominio al cual lo llamaremos desde la URL local.moodle.com

cabe recordar que la configuración en esta versión de  ubuntu ha cambiado algunas cosillas así que tener cuidado y leer los nuevos cambios en la nueva versión de Apache

- Creamos el archivo de configuración del host virtual:
con la siguiente linea de comando creo una copia del default para editarlo

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local.moodle.com.conf


Ahora editamos el nuevo archivo que creamos para cambiar las rutas para direccionar a nuestra carpeta moodle que está en el directorio projects.

sudo gedit /etc/apache2/sites-available/local.moodle.com.conf




El archivo local.moodle.com.conf debería quedar de la siguiente manera:


Ahora agregamos el dominio en la lista de los hosts con la siguiente linea de comando

sudo gedit /etc/hosts

Agregamos : 127.0.0.1        local.moodle.com
debería quedar de la siguiente forma



Ahora registramos el dominio con la siguiente linea de comando:

sudo a2ensite local.moodle.com



luego de ejecutar esta la linea de arriba te pedirá que reinicies el servicio de Apache:

sudo /etc/init.d/apache2 restart



No nos olvidemos de crear una base de datos con cualquier nombre en este case lo crearé llamado moodle:



Ahora nos dirigimos al navegador y escribimos nuestro dominio para ingresar y este automáticamente nos llevará a la instalación ya que no encuentra el archivo config.php



La siguiente pantalla es para confirmar la ruta de los directorios, el Directorio de Datos es importante por que ahí se define la ubicación de almacenamiento de los datos que moodle generará y/o algunos plugins usan como directorio de almacenamiento. Como estamos en linux no olvidemos que nuestro directorio tenga los permisos necesarios para escritura.



Click en Siguiente y nos pedirá que motor de datos utilizaremos en este caso lista en primer lugar MySQL por defecto pero podemos usar varios que lista en el combo desplegable, esto sucede por que moodle trabaja con un ORM llamado ADODB estas librerías abstraen la Base de Datos.



Click en siguiente nos pedirá los accesos y el nombre de la Base de datos que creamos en unos pasos anteriores.




Haciendo click en siguiente nos carga la licencia, aceptar y continuar con los terminos


Haciendo click en continuar me salió una vista que me dice que a mi PHP le falta algunas extensiones que moodle necesita:



después de instalar las extensiones debe quedar así:



Haciendo click en continuar se mostrara la lista de módulos instalando, esto puede tomar un poco más de lo normal, tener paciencia y esperar que aparezca el botón al final de la pagina.




Al hacer click en continuar nos mostrará una vista para registrar la cuenta del perfil del adminsitrador.



Al continuar nos sale la vista para configurar algunos ajustes de la página principal.


Al final obtenemos el moodle instalado listo para crear los cursos, categorías, temas, instalar módulos, plugins, etc.