miércoles, 10 de abril de 2013

Dónde estamos

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 sólo 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.

Seguimos investigando y trabajando...

Accediendo a la base de datos de Moodle

La documentación oficial de las funciones para acceder a las tablas de la base de datos de Moodle la podéis encontrar aquí: http://docs.moodle.org/dev/Data_manipulation_API.

En este post sólo 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:

global $DB;

· Insertar un registro en una tabla

$DB->insert_record($table, $dataobject, $returnid=true, $bulk=false) 

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


$DB->update_record($table, $dataobject, $bulk=false)

Donde $table es el nombre de la tabla donde se quiere insertar y $dataobject el objeto que contiene los datos a insertar con uno de los campos "id" que especifica el registro a actualizar.


· Eliminar un registro en una tabla


$DB->delete_records($table, array $conditions=null) 

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



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.

Archivos

En el caso más básico de creación de Bloque, son necesarios tres archivos:
- /blocks/edutwitter/block_edutwitter.php
Contiene la definición de la clase, también el desarrollo en si, se controla el plugin y lo que muestra en pantalla.
- /blocks/edutwitter/version.php
Contiene la información sobre la versión y otros parámetros avanzados.
- /blocks/edutwitter/lang/en/block_edutwitter.php
Contiene la información sobre el idioma (inglés) del Bloque. Podemos desarrollar varios idiomas en la carpeta lang.

Primeras líneas

En /blocks/edutwitter/block_edutwitter.php:
<?php
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á.

En /blocks/edutwitter/version.php:
<?php
    $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.

En /blocks/edutwitter/lang/en/block_edutwitter.php:
<?php
    $string['pluginname'] = 'EDUtwitter';
    $string['edutwitter'] = 'EDUtwitter';
Este archivo simplemente actúa como diccionario.

Seguiremos en próximas entregas.