problema filtrar Informes personalizados (configurable reports)

problema filtrar Informes personalizados (configurable reports)

de Juan Crespo -
Número de respuestas: 3

Hola,

Tengo un problema a la hora de filtrar datos usando el módulo de Informes personalizados (configurable reports). Trabajo con moodle 2.2

He seguido el tutorial, paso a paso  http://docs.moodle.org/22/en/blocks/configurable_reports/ pero a la hora de aplicar un filtro, falla la consulta y el navegador informa que hay un error.

En la captura que adjunto, intento filtrar por ciudad, y cuando le doy a agregar filtro, falla la consulta. ¿Alguien ha probado el tutorial o ha hecho filtros con este módulo y le ha funcionado?

No sé si se trata de un bug del módulo o que falla algo en la configuración de mi moodle.

Un saludo

Juan

configurable report informes personalizados

Promedio de valoraciones: -
En respuesta a Juan Crespo

Re: problema filtrar Informes personalizados (configurable reports)

de Diego Hernandez -

Esta es la notificación de error que me está dando.

Notice: Undefined variable: DB in /home/usuario/html/htdocs/moodle/blocks/configurable_reports/components/filters/fuserfield/plugin.class.php on line 48 Fatal error: Call to a member function get_field() on a non-object in /home/usuario/html/htdocs/moodle/blocks/configurable_reports/components/filters/fuserfield/plugin.class.php on line 48

Diego

En respuesta a Diego Hernandez

Re: problema filtrar Informes personalizados (configurable reports)

de Diego Hernandez -

Se trata de la función execute del fichero blocks/configurable_reports/components/filters/fuserfield/plugin.class.php

Hay que añadir a la línea 41 global $DB, $CFG;

Esta función quedaría así

function execute($finalelements,$data){
global $DB, $CFG;
$filter_fuserfield = optional_param(‘filter_fuserfield_’.$data->field,0,PARAM_RAW);
if($filter_fuserfield){
// addslashes is done in clean param
$filter = clean_param(base64_decode($filter_fuserfield),PARAM_CLEAN);

if(strpos($data->field,’profile_’) === 0){
if($fieldid = $DB->get_field(‘user_info_field’,'id’,array(‘shortname’ => str_replace(‘profile_’,”, $data->field)))){

list($usql, $params) = $DB->get_in_or_equal($finalelements);
$sql = “fieldid = ? AND data = ? AND userid $usql”;
$params = array_merge(array($fieldid, $filter),$params);

if($infodata = $DB->get_records_select(‘user_info_data’,$sql,$params)){
$finalusersid = array();
foreach($infodata as $d){
$finalusersid[] = $d->userid;
}
return $finalusersid;
}
}
}
else{
list($usql, $params) = $DB->get_in_or_equal($finalelements);
$sql = “$data->field = ? AND id $usql”;
$params = array_merge(array($filter),$params);
if($elements = $DB->get_records_select(‘user’,$sql,$params)){
$finalelements = array_keys($elements);
}
}
}
return $finalelements;
}

Un saludo