it es es es es es es es es es es es es es es es es es es es en es en es es en es es en es es es en es es es es es es es es es es es it es en es it es es it ru en ja en kn es en ru es en es it ru it it es es es es es es es es es es es es es es it es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es es en es ru es es es es es es es es es es es es es es es gl es es es es pt es fr pt es es es cs es es es es eo es es
Este proyecto consiste en desarrollar un módulo o plugin para Moodle que le permita establecer comunicación con Twitter, para poder desarrollar tareas a través de esta red social.
miércoles, 10 de abril de 2013
Se acercan las evaluaciones para el CUSL7 (Concurso Universitario de Software Libre en su séptima edición), por lo que este post servirá para resumir lo que llevamos avanzado del proyecto y lo que queda por hacer.
El bloque de EDUtwitter ya es una realidad. Es un bloque para Moodle que cuenta con las siguientes funciones:
· Visualización personalizable en el bloque de los tweets con el hashtag propio del curso.
· Generador automático aleatorio del hashtag del curso.
· Formulario para que únicamente los profesores puedan enviar tweets desde la cuenta propia del curso sin necesidad de iniciar sesión en Twitter.
· Formulario para que los alumnos registren su nombre de usuario en Twitter.
Con todo esto ya en funcionamiento, quedaría por realizar las siguientes funciones para completar la primera versión del bloque:
· Generación de estadísticas de los tweets de los alumnos haciendo uso de la Stream API de Twitter (ya que la REST API usada en el resto de funciones solo busca tweets con una semana de antigüedad como máximo).
· Envío de tweets desde la cuenta propia del curso reflejando la actividad reciente del curso, envío controlado por el cron.php de Moodle.
Publicado por Hocicos en 13:50 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
Accediendo a la base de datos de Moodle
En este post solo voy a resumir algunas de las más comunes que son las que he tenido que usar para almacenar en una tabla los nombres de usuario en Twitter de los alumnos.
Si en un archivo vamos a acceder a alguna tabla de la base de datos, lo primero que tenemos que hacer es declarar la variable global:
· Insertar un registro en una tabla
Donde $table es el nombre de la tabla donde se quiere insertar y $dataobject el objeto que contiene los datos a insertar.
· Actualizar un registro en una tabla
Donde $table es el nombre de la tabla donde se quiere eliminar uno o más registros y $conditiones son las condiciones que cumplirán los elementos que se eliminarán.
Si quieres actualizar un registro, usa update_record, porque eliminarlo y volver a insertarlo provoca que se quede una línea en blanco en la tabla y es menos eficiente.
· Obtener registros de una tabla
$DB->get_records($table, array $conditions=null, $sort='', $fields='*', $limitfrom=0, $limitnum=0)
Donde $table es el nombre de la tabla donde se encuentran los registros y $conditiones son las condiciones que cumplirán los elementos que se obtendrán.
Por último, decir que si es una tabla con un alto número de resgistros, es mejor usar recordsets:
$rs = $DB->get_recordset(....) { foreach ($rs as $record) { // Hacer lo que quieras hacer con esos registros } $rs->close(); // No te olvides de cerrarlo cuando termines de trabajar con ellos
Publicado por Hocicos en 3:42 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
martes, 9 de abril de 2013
Creación de Bloques en Moodle (Parte 1)
Antes que nada avisar de que este artículo es una simplificación de la documentación en inglés de la siguiente página: http://docs.moodle.org/dev/Blocks.
Éste consiste en un tutorial paso a paso para crear un primer Bloque que muestre simplemente un texto HTML en Moodle. "edutwitter" será el nombre que daremos al Bloque de prueba.
En el caso más básico de creación de Bloque, son necesarios tres archivos:
Contiene la definición de la clase, también el desarrollo en si, se controla el plugin y lo que muestra en pantalla.
Contiene la información sobre la versión y otros parámetros avanzados.
Contiene la información sobre el idioma (inglés) del Bloque. Podemos desarrollar varios idiomas en la carpeta lang.
class block_simplehtml extends block_base {
public function init() {
$this->title = get_string('simplehtml', 'block_simplehtml');
Estas líneas simplemente representan la definición de la clase y la función init() esencial para todos los bloques, cuyo propósito es dar valores a las variables miembro de la clase que necesitan ser inicializadas. Dentro de ésta inicializamos el título del bloque que aparecerá.
$plugin->version = 2012010900; // YYYYMMDDHH (año, mes, día, hora)
$plugin->requires = 2012010900; // YYYYMMDDHH
Aquí ponemos tanto la versión de nuestro Bloque, como la versión mínima que requiere de Moodle para funcionar.
Este archivo simplemente actúa como diccionario.
Seguiremos en próximas entregas.
Publicado por Hocicos en 13:15 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
domingo, 29 de julio de 2012
Extensión de Moodle: ¿Actividad o Bloque?
Desde que comencé a trabajar en este proyecto, tenía la duda de cómo enfocar, desde el punto de vista de Moodle, el desarrollo del plugin para interactuar con Twitter. Casi toda la documentación que encontré estaba enfocada a la creación de una nueva "Actividad" en Moodle. Un ejemplo de actividad serían todas las funcionalidades que puede tener un curso: Foro, Wiki, Administrador de Tareas...
Aunque claro, pronto me di cuenta que implementarlo de esa forma tenía poco sentido práctico. Ya que no es una Actividad en sí, sino que el plugin a desarrollar lo que hace es tomar datos de las otras actividades. Además, en un curso puedes añadir el número de instancias que quieras de una Actividad, y eso carecía de sentido en este proyecto.
Entonces empecé a ver algo que se llama Bloque. Éste se añadía a los cursos y se quedaba en uno de los márgenes, normalmente cumpliendo alguna utilidad como búsqueda o incluso mostrando un TimeLine de Twitter. En un principio no me pareció lo que buscaba, ya que pensaba que la actividad que tenía un bloque se limitaba a mostrar cosas, y el funcionamiento que pretendo que tenga el plugin es que trabaje de forma interna.
Desde aquí tengo que dar las gracias a Daniel Cabeza y Juan Antonio Caballero del proyecto EVALfor por despejarme muchas de las dudas y orientarme respecto a los bloques en este caso. Resulta que el Bloque es lo que mejor se ajusta a este proyecto, ya que solo encontramos una instancia de éste en el curso y se puede programar para que internamente trabaje con el cron de Moodle y obtenga información de la base de datos.
Manos a la obra...
Publicado por Hocicos en 3:01 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
domingo, 4 de marzo de 2012
Acabamos de entrar en el mes de marzo, y es el momento de revisar el trabajo realizado y lo que queda por hacer.
La línea de trabajo hasta ahora seguida ha estado marcada por lo siguiente:
· Investigación sobre la plataforma Moodle (instalación, administración, desarrollo de aplicaciones).
· Conocer el funcionamiento y la estructura interna de los plugin de Moodle.
· Revisar los plugin creados de Moodle buscando coincidencias con el proyecto actual.
· Pruebas sobre el API de Twitter, qué ofrece y cómo puede combinarse con las aplicaciones.
· Repaso de la programación en el lenguaje PHP.
· Uso de la librería cURL de PHP para realizar peticiones al API de Twitter.
· Documentación a través de tutoriales en el blog del proyecto.
En las próximas semanas habrá que tratar las siguientes cuestiones:
· Integrar las peticiones al API de Twitter a través de PHP en la estructura base de un plugin de Moodle, y buscar la forma de representar los resultados, de forma que se puedan hacer pruebas directamente desde la plataforma.
· Empezar a definir funcionalidades concretas para desarrollar dentro del plugin.
· Establecer la lógica de cómo van a funcionar las autentificaciones en el plugin, cuándo se van a realizar peticiones públicas, cuándo se va a usar la cuenta del profesor, si es útil que los alumnos asocien su perfil a su cuenta en tuenti y el plugin pueda hacer uso de ella...
Próximamente en el blog nuevos tutoriales que aún faltan por retocar, sobre las peticiones al API de Twitter en PHP.
Publicado por Hocicos en 17:18 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
sábado, 3 de marzo de 2012
Ya va siendo hora de que hablemos un poco del otro pie del proyecto: Twitter y su API.
Es obligatorio ahora hacer referencia a la documentación oficial de Twitter, que podemos encontrar aquí.
Me voy a ahorrar un poco el apartado más técnico del API, ya que es una información que podéis encontrar en la documentación, y os voy a contar cómo empecé a trastear un poco con ésta.
Twitter nos proporciona tanto dos API de tipo REST como un API streaming. Nos vamos a decantar por el REST. A través de una consola podemos realizar peticiones públicas al API. Es decir, peticiones que no necesitan autentificarse como una cuenta, como por ejemplo, obtener el TimeLine público en un momento dado.
Para realizar todos los tipos de peticiones, tendremos que hacerlo a través de una autentificación. Para comenzar, iniciaremos sesión con nuestra cuenta de twitter en https://dev.twitter.com/apps/new. Entonces nos aparecerá un formulario en el que tendremos que registrar nuestra aplicación.
Una vez rellenemos los campos que nos piden, accederemos al perfil de nuestra aplicación. Twitter sigue un sistema de autentificación llamado OAuth. Así que en el apartado OAuth Settings, encontramos los datos necesarios para realizar peticiones que no sean públicas, sino a través de una cuenta, con una consola.
Para no utilizar una aplicación externa, podemos simplemente entrar en la página https://dev.twitter.com/console, donde tenemos una consola que nos proporciona Twitter para hacer pruebas.
Ahora podemos hacer todas las peticiones públicas que queramos. Para hacer peticiones privadas, pulsamos sobre el candado y le damos a "OAuth". Nos dará la opción de iniciar sesión con nuestra cuenta y ya podremos realizar las peticiones privadas.
Vamos a ver dos ejemplos:
Podemos pulsar por ejemplo en Trends -> trends/daily. Ahora pulsamos el botón GET. Tenemos dos pestañas, en la pestaña Request podemos ver qué petición se ha realizado y en la pestaña Response podemos ver la respuesta. En este caso, los trending topics de distintas horas en las últimas 24 horas.
Por ejemplo, vamos a escribir un tweet desde la consola en nuestra cuenta promocionando el blog del proyecto. Para ello, pulsamos en Tweets -> statuses/update y sustituimos en la petición http "{status" por el texto que queremos publicar en el tweet. En este caso,
http://api.twitter.com/1/statuses/update.json?status=Podeis seguir los avances del blog en http://edu-twitter.blogspot.com/
Esta vez pulsamos sobre POST y no GET, ya que estamos enviando información y no solo obteniendo. El resultado es el siguiente:
Y con esto ya podemos ir probando diferentes peticiones al API de Twitter.
Antes de finalizar, hay que mencionar que existen un límite de peticiones, 150 es el límite máximo de peticiones por hora en el caso de peticiones no autentificadas y 350 por hora en el caso de que las hagamos a través de una cuenta.
Publicado por Hocicos en 7:31 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest
sábado, 21 de enero de 2012
Instalación de un plugin en Moodle
La M de Moodle proviene de la palabra "modular". Moodle está pensado para que se le puedan añadir fácilmente funcionalidades, y éstas se añaden a través de los plugins, que pueden ser de varios tipos.
Como el proyecto consiste en la elaboración de un plugin, voy a explicar aquí cómo podemos instalar un plugin en Moodle, utilizando uno cualquiera como prueba.
El plugin que he escogido es "OU blog", que consiste en una tarea estilo blog. El único criterio de elección que he seguido ha sido la fácil comprobación de funcionamiento del plugin, que consistirá simplemente en crear una actividad en el curso de ese tipo.
Paso 1 - Descarga del plugin
Recientemente, se ha abierto un Directorio de Plugins divididos en categorías por parte de Moodle.org, que podemos encontrar en el siguiente enlace:
En este caso, el plugin "OU blog" se encuentra en el siguiente enlace:
Ahora solo queda pinchar en la pestaña "Download versions" y descargar la versión que queramos.
Tendremos entonces un archivo zip con el plugin.
Paso 2 - Copia de la carpeta del plugin en el directorio de Moodle
Descomprimimos el archivo zip y tenemos una carpeta llamada "oublog" con los archivos del plugin.
Aunque en la instalación de plugins sigue un patrón general, leemos el archivo README por si tenemos que realizar alguna modificación especial.
En este caso, lo único que tenemos que hacer es copiar la carpeta "oublog" dentro de la carpeta "mod" de la raíz de instalación de Moodle. En mi caso, "/var/www/moodle/mod".
Si todo ha ido bien, la próxima vez que iniciemos sesión como Admin en Moodle, nos aparecerá una pantalla como esta:
Paso 3 - Comprobaciones
En esta última ventana que nos ha aparecido, pulsamos el botón "Actualizar" y veremos que la versión se ha actualizado correctamente y pulsamos en "Continuar".
Ahora podemos añadir una nueva tarea al curso que deseemos, y podemos comprobar que ha aparecido la opción "ou blog".
Esta es la captura de un post de prueba:
Paso extra - Eliminación del plugin
Si quisiéramos a continuación o en cualquier otro momento eliminar el plugin, tenemos que seguir las siguientes instrucciones:
- Nos vamos a Administración del sitio -> Extensiones -> Módulos de actividad -> Gestionar actividades
- Pulsamos en "Borrar" en la fila de "OU blog" y luego en el botón "Continuar".
- Para completar el proceso, tenemos que borrar la carpeta "oublog" del directorio mod de Moodle, para evitar reinstalación la próxima vez que entremos.
Publicado por Hocicos en 4:17 6 comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con FacebookCompartir en Pinterest