Bloque Configurable reports Moodle 2.6, pequeños hacks

Hoy os voy a hablar de un bloque o extensión para Moodle, a día de hoy probado en la 2.6, que me está salvando muchísimas horas de desarrollo en lo referente a facilitarle al cliente consultas sobre el estado de los alumnos en el proceso formativo de una forma algo más clara y completa a como lo presenta la misma plataforma.

El bloque configurable reports de Juan Leyva , permite configurar informes con consultas de relativa complejidad al LMS, incluso algunas de ellas ya vienen completamente preparadas en su repositorio. Añade mejoras importantes como son el uso de paginación, orden mediante Jquery, descarga en XLS, CSV y ODS… Si sabes a lo que me refiero comprenderás que antes de lanzarte a programar una nueva consulta desde cero con este bloque puedes cubrir casi con total seguridad tus necesidades sin tener que tirarte horas y horas programando. Para rematar la faena permite crear una consulta a partir de SQL, con lo que las posibilidades se tornan prácticamente infinitas.

Un cliente muy exigente (Que raro), nos pedía una consulta que hacía un uso bastante intensivo de la base de datos por la gran cantidad de alumnos y datos de seguimiento que necesitaba. Se nos presentaron tres problemas principales:

  1. Al poner un filtro de cursos, el filtro aparece ordenado por el ID de la tabla, cosa poco útil para un manejo realmente rápido.
  2. Al ser una consulta tan bestia descubrimos que el bloque hace una “comprobación” de que es una SQL válida cada vez que entrábamos en la pestaña de edición del SQL. Esto nos tiraba el sistema abajo. ¿Por qué? Pues porque la ejecuta sin filtro, por lo que hace una consulta de la totalidad de los cursos del LMS.
  3. Unido al problema anterior teníamos que el bloque al ir a “View report” ejecuta igualmente una primera consulta sin aplicar el filtro, con un molesto “All” que de nuevo nos lo tiraba todo abajo.

Como el tiempo apremiaba y no podíamos empezar de cero tuvimos que hacer una serie de cambios de urgencia para no tener problemas de sobrecarga.

Modificar el orden del filtro de cursos.

Tocamos “components/filters/courses/plugin.class.php”, “function print_filter”
Añadimos simplemente el parámetro de ordenación ‘fullname’

$courses = $remoteDB->get_records_select('course',"id $usql",$params,'fullname');

Evitar la ejecución “All” al entrar en “View report”

Tocamos “components/filters/courses/plugin.class.php”, “function execute”

function execute($finalelements, $data){
$filter_courses = optional_param('filter_courses',0,PARAM_INT);
 if ($filter_courses==0)
 $filter_courses=1;
 if(!$filter_courses)
 return $finalelements;

 if($this->report->type != 'sql'){
 return array($filter_courses);
 }
 else{
 if(preg_match("/%%FILTER_COURSES:([^%]+)%%/i",$finalelements,
 $output)){
 $replace = ' AND '.$output[1].' = '.$filter_courses;
 return str_replace('%%FILTER_COURSES:'.$output[1].'%%',$replace,$finalelements);
 }
 } return $finalelements; }

Hemos añadido las líneas 3 y 4 del código anterior, al poner $filter_courses a 1 evitamos la primera ejecución y por tanto no hacemos una consulta sin filtro.

Evitar la validación de seguridad de las custom SQL

¡Ojo!¡Atención!¡Pánico! Esto solo se debe hacer si sabes muy bien lo que estás tocando, ya que impides que el formulario de SQL te reporte cualquier tipo de error… Tocamos “Components/customsql/form.php” dos funciones “validate_high_security” y  ”validate_low_security”. Comentamos la siguiente instrucción else en las dos funciones.

/* Comentamos esto para evitar una primera evaluación del SQL con "ALL"

 $sql = $this->_customdata['reportclass']->prepare_sql($sql);
 $rs = $this->_customdata['reportclass']->execute_query($sql, 2);
 if (!$rs) {
   $errors['querysql'] = get_string('queryfailed', 'block_configurable_reports', $db->ErrorMsg());
 } else if (!empty($data['singlerow'])) {
 if (rs_EOF($rs)) {
   $errors['querysql'] = get_string('norowsreturned', 'block_configurable_reports');
 }
 }
if ($rs) {
 $rs->close();
 }
 */

Con esto evitamos que el bloque revise la SQL y nos ahorra una ejecución sin filtro.
En resumen, un bloque magnifico que permite gran versatilidad y dar soluciones muy rápidas a necesidades muy concretas. Con las pequeñas modificaciones que hemos realizado (Entiendo que facilmente entendibles y trasladables a cualquier otro filtro, se parchean dos pequeños problemas muy párticulares que surgieron para casos muy concretos. Espero que pueda ser de ayuda a alguien.

Etiquetado con: , , , ,
Publicado en: e-learning, Moodle, Programación

Combinar textos en openoffice Calc

Todo parece muy fácil hasta que tienes que ponerte a investigar como funcionan las malditas fórmulas y para aquellos que prefieren realizar una rápida búsqueda por internet antes que perder como yo unos minutos en estrujarse en cerebro y sacar el resultado esperado… Para vosotros os dejo este truquito que me ha servido en infinidad de ocasiones para unir primer y segundo apellido en una sola celda.

Si tenemos A1=GARCIA B1=LOPEZ insertamos una nueva columna en C y metemos la siguiente fórmula:

=CONCATENAR(A1;” “;B1)

Obtendremos en C1=GARCIA LOPEZ

Si lo que buscas es hacer lo contrario puedes mirar ¿Como dividir un texto en varias partes en Openoffice Calc?

 

Etiquetado con:
Publicado en: Programación

Dividir textos en fragmentos en openoffice Calc

Puede parecer una chorrada pero en más de una ocasión para manejar grandes cantidades de datos me ha salvado la vida uno de estos trucos.

Para dividir una cadena por ejemplo por un carácter separador ” ” (Espacio)

Si tenemos en A1 “Buenos días”

=IZQUIERDA(A1;ENCONTRAR(” “;A1)) te proporcionará “Buenos”
y
=DERECHA(A1;LARGO(A1)-ENCONTRAR(” “;A1)) te dará “días”

Etiquetado con:
Publicado en: Programación

El internet Marty…

Etiquetado con: , ,
Publicado en: Humor

Neptuno y su primera órbita completa

Neptuno fue descubierto en 1846 y su orbita alrededor del Sol lleva 165 años terrestres, por lo que si hacemos cuentas (1846+165) nos daremos cuentas que prácticamente acaba de terminar una vuelta completa al Sol desde su descubrimiento.

Neptuno es el octavo planeta del sistema solar, forma parte de los denominados planetas exteriores o gigantes gaseosos teniendo una masa de 17 tierras… Más información como siempre en Wikipedia

Etiquetado con: ,
Publicado en: Astronomía

Tienes un rato y quieres aprender a usar GIT?

Git es un sistema de control de versiones muy popular y con el que útimamente mantengo mucha batallitas, viniendo de un acomodado subversion Git se hace un poco complejo pero en cuanto le coges un poco el truco te das cuenta de la potencia y versatibilidad que tiene para llevar proyectos.

http://try.github.com

El curso simula en todo momento una terminal enlazado a vuestra cuenta en Github, por lo que todo lo que se realiza puede verse en “directo”.

Etiquetado con: , ,
Publicado en: Linux, Programación

Anuncio líneas aéreas neozelandesas (El hobbit)

Original anuncio de las líneas aéreas neozelandesas en las que se muestra la típica explicación de los auxiliares de vuelo ambientado en la Tierra Media con motivo del próximo estreno del Hobbit “Un viaje inseperado”

Etiquetado con: , , ,
Publicado en: Cine, Humor

Exploración marciana y sus curiosas fotos

Buscando entre las diferentes fotos que nos están dejando las misiones enviadas a Marte en los últimos años he encontrado una de lo más interesante:

http://marsrover.nasa.gov/gallery/all/2/p/513/2P171912249EFFAAL4P2425L7M1.HTML

Se trata de una fotografía del rover “Spirit” en su día 513 de misión exploranto el crater Gusev, haced un zoom abajo a la izquierda y mirad esa piedrecita… No suelo ser especialmente consporanoico pero parece por completo un craneo o un casco ¿Verdad?. 99,9% de posibilidades de que simplemente sea un capricho de la erosión marciana unida a un juego de sombras y nuestra capacidad para encontrarle parecido a todo… Pero… Para mi claramente es un casco de soldado imperial jajaja.

Editado (Añado otra foto)

Etiquetado con: ,
Publicado en: Astronomía

Tu propio Xwing

Os dejo un entretenimiento para la oficina, para esos momentos en los que uno tiene que relajarse en lugar de ir a por una escopeta y liarla parda.

Un origami Xwing (caza de combate rebelde, Star wars)

Por si acaso la web desaparece os dejo aquí las instrucciones en pdf.

Etiquetado con: , , ,
Publicado en: con mis manitas

Animalicos

Etiquetado con: ,
Publicado en: Humor
Categorías