Moodle Plugins directory: Configurable Reports | Moodle.org
Configurable Reports
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.
What type of reports can I create?
- Courses reports, with information regarding courses.
- Categories reports, with information regarding categories. A courses report can be embedded in this type of report.
- Users reports, with information regarding users and their activity in a course.
- Timeline reports, this is a special type of report that displays a timeline. A course or user report can be embedded in this timeline showing data depending on the start and end time of the current row.
- Custom SQL Reports, custom SQL queries. This block can use the same SQL queries that Tim Hunt's Custom SQL queries plugin.
Note for developers: You can create your own type of reports.
Who can view the reports?
When you create a report you can select which users can view it.
Links to reports are displayed in a block in the course or site frontpage.
Advanced features
Filters, pagination, logic conditions and permissions, plots, templates support, export to xls .
Request for new report types and plugins are welcome, please use the link "Bugs and issues" at the right.
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;
Give this simple query a try and see if it works.
select *
from prefix_user
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.
%%FILTER_SEARCHTEXT_lastname:uu.lastname:~%%
works, but case insensitive does not ?
%%FILTER_SEARCHTEXT_lastname:uu.lastname:~*%%
it is error or by design ?