Configurable Reports
Maintained by
Sara Arjona, Juan Leyva
This block is a Moodle custom reports builder.
You can create custom reports without SQL knowledge. It's a tool suitable for admins or teachers.
Comments
Comments are no longer open for new posts. Existing comments remain available to read.
I hope some day it will solve two major issues in reports with large amount of data:
- for reports with filters, it should load results after clicking the Apply button and not before.
- default search field should also work with paging enabled. That means replacing Javascript search with Ajax or something.
One more suggestion for developers... regarding SQL reports, filtering syntax is really too limiting and complicated without real reason. Could you just use filter values as variables instead? That would make life so much easier for anyone that codes custom SQL queries for this report. This would also remove so much limitations of the current plugin and it would make plugin's PHP code so much cleaner, smaller and simple.
Give this simple query a try and see if it works.
select *
from prefix_user
SELECT
u.id AS 'Identificación',
CONCAT(u.firstname, ' ', u.lastname) AS 'Nombre',
c.fullname AS 'Nombre del Curso',
g.name AS 'Grupo',
ROUND( (SUM( CASE WHEN cmc.completionstate = 1 THEN 1 ELSE 0 END ) / COUNT(cm.id)) * 100, 2 ) AS 'Progreso (%)',
SUM( CASE WHEN cmc.completionstate = 1 THEN 1 ELSE 0 END ) AS 'Actividades Completadas',
(SELECT COUNT(*)
FROM mdl_course_modules
WHERE course = c.id
AND completion > 0) AS 'Actividades del Curso',
docdata.data AS 'Tipo de Documento',
numdocdata.data AS 'Número de Documento',
caractdata.data AS 'Caracterización'
FROM mdl_user u
LEFT JOIN mdl_user_enrolments ue ON ue.userid = u.id
LEFT JOIN mdl_enrol e ON e.id = ue.enrolid
LEFT JOIN mdl_course c ON c.id = e.courseid
LEFT JOIN mdl_groups_members gm ON gm.userid = u.id
LEFT JOIN mdl_groups g ON g.id = gm.groupid
LEFT JOIN mdl_course_modules_completion cmc ON cmc.userid = u.id
LEFT JOIN mdl_course_modules cm ON cm.id = cmc.coursemoduleid AND cm.course = c.id
LEFT JOIN mdl_user_info_data docdata ON docdata.userid = u.id AND docdata.fieldid = 5 -- Ajustar con el ID correcto de "Tipo de Documento"
LEFT JOIN mdl_user_info_data numdocdata ON numdocdata.userid = u.id AND numdocdata.fieldid = 4 -- Ajustar con el ID correcto de "Número de Documento"
LEFT JOIN mdl_user_info_data caractdata ON caractdata.userid = u.id AND caractdata.fieldid = 6 -- Ajustar con el ID correcto de "Caracterización"
WHERE c.visible = 1
GROUP BY u.id, c.id, g.id, docdata.data, numdocdata.data, caractdata.data
ORDER BY u.lastname, u.firstname;