Загальне
Коломоєць Г.П., Швець Ю.О.
Класичний приватний університет, м. Запоріжжя
ДОСВІД ВИКОРИСТАННЯ ПЛАГІНУ CONFIGURABLE REPORTS
ДЛЯ MOODLE 2.xНавчальна платформа Moodle має додаткову перевагу та цінність завдяки можливості підключати до неї плагіни, що створені різними розробниками для розширення функціоналу системи. В цій доповіді ми бажали б поділитись досвідом використання плагіну Configurable reports (підтримується Juan Leyva), який дозволяє створювати дуже цінні для адміністрації навчального закладу статистичні звіти.
Плагін є стандартним блоком Moodle і його інсталяція до системи зводиться до завантаження архівного файлу зі сторінки плагіну Configurable reports на сайті підтримки Moodle, розархівування його змісту до підкаталогу /blocks каталогу із системою (зазвичай /moodle) та встановленням плагіну (при завантаженні головної сторінки системи буде запропоновано встановити плагін). Перевірити факт встановлення плагіну та його версію, а також виконати необхідні налаштування можна, вибравши із меню команду Керування сайтом-Плагіни-Огляд плагінів, та натиснувши на посилання Налаштування у рядку з даними плагіну Configurable reports. Тут також можна виконати деінсталяцію плагіну (для цього треба натиснути на посилання Видалити і після повідомлення про успіх операції видалити каталог /blocks/configurable_reports). Після встановлення плагіну його можна підключити стандартним чином до Головної сторінки (так зроблено у нас), або до сторінки будь-якого з курсів. Блок має гнучку систему дозволів, за допомогою яких можна вибірково настроювати можливість роботи з плагіном для різних ролей. Також є можливість використовувати звіти із публічного репозиторію, така можливість вбудована до блоку. Функціональність блоку достатньо добре описана в документації [2], а також в огляді на сайті Some Random Thoughts [3], тому ми зупинимось на найбільш цікавих можливостях плагіну.
Найбільш цінною функціональністю блоку, на наш погляд, є підтримка стандартної SQL. При цьому можливо, орієнтуючись на назви колонок таблиць бази даних, яку використовує Moodle, створювати будь-які запити (за замовчуванням на вибірку), результати яких автоматично відображаються в таблиці на Веб-сторінці із можливістю сортування по колонкам та виведення агрегованих значень. Важливим доповненням блоку є теги фільтрації, що дозволяють додавати до таблиці фільтри за такими об'єктами системи, як категорії, курси, зараховані студенти, користувачі, ролі, та інші. Також доступна фільтрація записів таблиці за певним проміжком часу та фільтрація по текстовому підрядку значень визначеної колонки таблиці. Також цінною є можливість використовувати змінні в SQL-запитах, такі як URL сайту (%%WWWROOT%%), ідентифікатор курсу (%%COURSEID%%) та ідентифікатор користувача (%%USERID%%). Це дозволяє формувати назви курсів/категорій та прізвищ користувачів у вигляді гіперпосилань на сторінки відповідних курсів/категорій та профілів відповідних користувачів.
Наведемо приклад використання можливостей блоку Configurable reports на прикладі розробленого нами звіту Ресурси дисциплін, що використовуються на сайті Віртуальної аудиторії Класичного приватного університету. SQL-код звіту має вигляд (типова частка коду, що повторюється вилучена задля стислості коду):
SELECT concat('<a target="_new" href="%%WWWROOT%%/course/index.php?categoryid=', cc.id,'">', cc.name, '</a>') AS "Кафедра",
concat('<a target="_new" href="%%WWWROOT%%/course/view.php?id=',c.id,'">',c.fullname,'</a>') AS "Дисципліна",
(SELECT DISTINCT concat(u.lastname, ' ', u.firstname)
FROM prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Викладач",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 13) AS "Веб-сторінка",
...
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 18) AS "URL-адреса"
FROM `prefix_course` AS c
JOIN `prefix_course_categories` AS cc ON cc.id = c.category
WHERE cc.name != 'АРХІВ'
%%FILTER_CATEGORIES:c.category%%
GROUP BY c.id
ORDER BY cc.name ASCВеб-сторінка зі звітом представлена на Рис. 1.
Рис. 1. Звіт Ресурси дисциплін
SQL-код concat('<a target="_new" href="%%WWWROOT%%/course/index.php?categoryid=', cc.id,'">', cc.name, '</a>') AS "Кафедра" формує гіперпосиалання на сторінку кафедри із ідентифікатором cc.id, отриманим з таблиціprefix_course_categories (її аліас cc). При цьому в гіперпосиланні виводиться назва відповідної кафедри, за якою закріплена дисципліна, ресурси якої підраховуються в даному рядку. Сформоване посилання для кафедри системного аналізу та програмної інженерії має вигляд:
http://www.zhu.edu.ua/cpu_edu/course/index.php?categoryid=9
Аналогічним чином код concat('<a target="_new" href="%%WWWROOT%%/course/view.php?id=',c.id,'">',c.fullname,'</a>') AS "Дисципліна" формує гіперпосилання на сторінку дисципліни.
Для виведення ім'я, по-батькові та прізвища викладача, закріпленого за дисципліною, виконується підзапит:
(SELECT DISTINCT concat(u.lastname, ' ', u.firstname)
FROM prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Викладач"Оператор WHERE обирає користувача із ідентифікатором ролі викладача (ra.roleid = 3) у контексті дисципліни (курсу) (ctx.contextlevel = 50) для курсу із певним ідентифікатором (ctx.instanceid = c.id). При цьому вивід обмежується тільки одним викладачем. Значення рівнів контексту можна взяти в документації [4].
Інші колонки підраховують кількість ресурсів за допомогою типового коду (показаний приклад коду для ресурсу Веб-сторінка):
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 13) AS "Веб-сторінка"
Значення ідентифікаторів ресурсів, що використані нами у звіті, наведені в таблиці:
Назва ресурсу Ідентифікатор ресурсу 2 Чат 3 Опитування 4 База даних 5 Зворотній зв'язок 6 Тека 7 Форум 8 Глосарій 9 IMS контент пакет 10 Нотатка 11 Заняття 13 Веб-сторінка 14 Тест 15 Файл 17 Анкетування 18 URL-адреса 19 Вікі 20 Семінар 21 Завдання 22 Книга Організація фільтрації даних звіту за категоріями (кафедрами, за якими закріплені дисципліни) виконується розміщенням в SQL-коді оператора %%FILTER_CATEGORIES:c.category%% та доданням фільтру на вкладці Filters сторінки налаштування звіту, обраного на сторінці Manage reports (Рис. 2).
Рис.2. Налаштування фільтру звіту.
Оператори фільтрів інших типів можна взяти на сторінці репозиторію GitHub користувача Nadav Kavalerchik [5]. Також дуже цінним при розробці або адаптуванні звітів є ресурс ad-hoc contributed reports [6], на якому зібрані коди SQL-запитів, ранжировані за типами.
Таким чином, плагін Configurable reports заслуговує уваги завдяки підтримки широкої функціональності та інтеграції можливостей SQL.
Список використаних джерел
- Сторінка плагіну Configurable reports на сайті підтримки Moodle - https://moodle.org/plugins/view/block_configurable_reports.
- Документація плагіну Configurable reports - https://docs.moodle.org/28/en/Configurable_reports.
- Огляд плагіну Configurable reports - http://www.somerandomthoughts.com/blog/2011/10/09/review-configurable-reports-for-moodle-2.
- Roles. Документація Moodle - https://docs.moodle.org/dev/Roles.
- Оператори фільтрів Moodle - https://github.com/nadavkav/moodle-custom_sql_report_queries/blob/master/sql_snippets/filters_and_variables.sql.
- Збірка SQL-кодів запитів до Moodle. Документація Moodle - https://docs.moodle.org/28/en/ad-hoc_contributed_reports.