Cosas de Desarrolladores

 
 
Picture of Salvador Salazar
Modulo Tareas: Muestra "Ver 0 tareas enviadas" CORREGIDO
 
Saludos cordiales, tenía este problema con el módulo de tareas. Les envío una breve descripción de lo que realicé, tal vez a alguien mas le suceda. PROBLEMA: Módulo Tareas muestra "Ver 0 tareas enviadas" VERSION: Moodle 1.8.2+ (2007021520) DB: Postgres7 CONFIGURACION: * GRUPOS:Modo de grupo: SEPARADOS MODULO: Tareas PERFIL: Profesores El Módulo de tareas no muestra al profesor el número de tareas que han sido enviados. Despliega "Ver 0 tareas enviadas" Sin embargo, si se da clic sobre el vínculo, se pueden observar las tareas enviadas. REVISIÓN ///////////////////////////////////////////////////// // En el archivo: // // /var/www/moodle/mod/assignment/index.php // // La siguiente variable $submitted no recibe ningún valor ///////////////////////////////////////////////////// $submitted = $assignmentinstance->submittedlink(); ////////////////////////////////////////////////////// // En el archivo: // /var/www/moodle/mod/assignment/lib.php // // la variable $count no obtiene el número de tareas realizadas ////////////////////////////////////////////////////// $count = $this->count_real_submissions(); // Everyone ////////////////////////////////////////////////////// // En el archivo: // // /var/www/moodle/mod/assignment/lib.php // // la funcion count_real_submissions() no obtiene // los valores esperados (número de tareas enviadas) ////////////////////////////////////////////////////// function count_real_submissions($groupid=0) { return assignment_count_real_submissions($this->assignment, $groupid); } ////////////////////////////////////////////////////// // En el archivo: // // /var/www/moodle/mod/assignment/lib.php // // la funcion assignment_count_real_submissions() // no obtiene los valores esperados (número de tareas enviadas) // debido a que el script SQL no funciona para Postgres ////////////////////////////////////////////////////// return count_records_sql("SELECT COUNT(DISTINCT gm.userid, gm.groupid) FROM {$CFG->prefix}assignment_submissions a, ".groups_members_from_sql()." WHERE a.assignment = $assignment->id AND a.timemodified > 0 AND ".groups_members_where_sql($groupid, 'a.userid')); ////////////////////////////////////////////////////////// // Al ejecutar el código de la consulta de SQL se observó que // muestra un error // NOTA: Se ejecutó en la consola de Postgres la consulta: // // SELECT COUNT(DISTINCT gm.userid, gm.groupid) // FROM mdl_assignment_submissions a, mdl_groups_members gm // WHERE a.assignment = 14 AND a.timemodified > 0 AND gm.groupid = '33' AND a.userid = gm.userid // // Muestra el siguiente error: ////////////////////////////////////////////////////////// Error de SQL: ERROR: no existe la función count(bigint, bigint) LINE 1: SELECT COUNT(DISTINCT gm.userid, gm.groupid) FROM mdl_assign... ^ HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos. En la declaración: SELECT COUNT(DISTINCT gm.userid, gm.groupid) FROM mdl_assignment_submissions a, mdl_groups_members gm WHERE a.assignment = 14 AND a.timemodified > 0 AND gm.groupid = '33' AND a.userid = gm.userid SOLUCIÓN ////////////////////////////////////////////////////////// // Para corregir se modificó el SQL de la consulta, eliminando // DISTINCT gm.userid, gm.groupid // de la consulta. // Archivo modificado: // /var/www/moodle/mod/assignment/lib.php ////////////////////////////////////////////////////////// ORIGINAL return count_records_sql("SELECT COUNT(DISTINCT gm.userid, gm.groupid) CORREGIDO return count_records_sql("SELECT COUNT(*) FROM {$CFG->prefix}assignment_submissions a, ".groups_members_from_sql()." WHERE a.assignment = $assignment->id AND a.timemodified > 0 AND ".groups_members_where_sql($groupid, 'a.userid')); 
 
Average of ratings: -
Picture of Salvador Salazar
Re: Modulo Tareas: Muestra "Ver 0 tareas enviadas" CORREGIDO
 
Saludos cordiales, tenía este problema con el módulo de tareas.

Les envío una breve descripción de lo que realicé, tal vez a alguien mas le suceda.

PROBLEMA: Módulo Tareas muestra "Ver 0 tareas enviadas"
VERSION: Moodle 1.8.2+ (2007021520)
DB: Postgres7
CONFIGURACION:
  • GRUPOS:
    • Modo de grupo: SEPARADOS
MODULO: Tareas
PERFIL: Profesores

El Módulo de tareas no muestra al profesor el número de tareas que han sido enviados. Despliega "Ver 0 tareas enviadas" Sin embargo, si se da clic sobre el vínculo, se pueden observar las tareas enviadas.

REVISIÓN


En el archivo: /var/www/moodle/mod/assignment/index.php
La variable $submitted no recibe ningún valor
$submitted = $assignmentinstance->submittedlink();

En el archivo: /var/www/moodle/mod/assignment/lib.php
la variable $count no obtiene el número de tareas realizadas
$count = $this->count_real_submissions();

En el archivo: /var/www/moodle/mod/assignment/lib.php
la funcion count_real_submissions() no obtiene los valores esperados (número de tareas enviadas)

function count_real_submissions($groupid=0) {
 return assignment_count_real_submissions($this->assignment, $groupid);
}

En el archivo: /var/www/moodle/mod/assignment/lib.php
la funcion assignment_count_real_submissions() no obtiene los valores esperados (número de tareas enviadas) debido a que el script SQL no funciona para Postgres

return count_records_sql("SELECT COUNT(DISTINCT gm.userid, gm.groupid)
FROM {$CFG->prefix}assignment_submissions a, ".groups_members_from_sql()." WHERE a.assignment = $assignment->id AND
a.timemodified > 0 AND ".groups_members_where_sql($groupid, 'a.userid') );

Al ejecutar el código de la consulta de SQL se observó que muestra un error

NOTA: Se ejecutó en la consola de Postgres la consulta:
SELECT COUNT(DISTINCT gm.userid, gm.groupid)
FROM mdl_assignment_submissions a, mdl_groups_members gm
WHERE a.assignment = 14 AND a.timemodified > 0 AND gm.groupid = '33' AND a.userid = gm.userid 

Muestra el siguiente error:
Error de SQL: ERROR: no existe la función count(bigint, bigint)
LINE 1:
SELECT COUNT(DISTINCT gm.userid, gm.groupid)
FROM mdl_assign... ^ HINT: Ninguna función coincide en el nombre y tipos de argumentos.
Puede desear agregar conversión explícita de tipos.
En la declaración:
 SELECT COUNT(DISTINCT gm.userid, gm.groupid)
 FROM mdl_assignment_submissions a, mdl_groups_members gm
 WHERE a.assignment = 14 AND a.timemodified > 0 AND gm.groupid = '33' AND a.userid = gm.userid


SOLUCIÓN


Para corregir se modificó el SQL de la consulta, eliminando DISTINCT gm.userid, gm.groupid de la consulta.
Archivo modificado: /var/www/moodle/mod/assignment/lib.php

ARCHIVO ORIGINAL
 return count_records_sql("SELECT COUNT(DISTINCT gm.userid, gm.groupid)
FROM {$CFG->prefix}assignment_submissions a, ".groups_members_from_sql()." WHERE a.assignment = $assignment->id AND
a.timemodified > 0 AND ".groups_members_where_sql($groupid, 'a.userid'));

ARCHIVO CORREGIDO
 return count_records_sql("SELECT COUNT(*)
 FROM {$CFG->prefix}assignment_submissions a, ".groups_members_from_sql()."
 WHERE a.assignment = $assignment->id AND
a.timemodified > 0 AND ".groups_members_where_sql($groupid, 'a.userid'));
 
Average of ratings: -