Загальне
Щербина О.А.
Київський національний університет будівництва і архітектури
Створення єдиної системи конфігурованих звітів для сайту Moodle
Для ефективного контролю освітнього процесу, що здійснюється з використання платформи Moodle, дуже важливо мати досконалу систему звітності, яка надає необхідні дані всім його учасникам: студентам, викладачам, адміністратору та керівникам різних рівнів: факультету, кафедри тощо.
Крім стандартного набору звітів, присутніх в ядрі, система Moodle надає можливість користувачам створювати власні звіти. Для цього можуть використовуватися плагіни Configurable Reports [1] і Ad-hoc database queries [2]. Зазначені плагіни відкривають доступ до всіх даних у понад 350 таблицях бази даних Moodle. Отже, якщо користувач володіє мовою SQL-запитів до баз даних [3], знає як саме пов'язані між собою дані в цих таблицях [4], то він має змогу вивести будь-яку наявну в них інформацію у вигляді звіту. Для цього є відповідна документація на сайті moodle.org [5] і велика підбірка готових звітів [6], які можуть використовуватися в готовому вигляді або служити користувачам прикладами створення власних запитів. Також є зовнішні репозиторії [7], [8], з яких можна імпортувати SQL-запити у звіт, що створюється.
Тому в цій доповіді ми не будемо розглядати саму процедуру створення звітів, а розглянемо загальні питання побудови і використання системи звітів на сайті Moodle.
Дійсно, деякі звіти потрібно виводити практично для кожного курсу. Звісно, адміністратор не мусить входити в кожний курс, щоб розмістити там посилання на такі звіти, або вчити викладачів самим створювати у своїх курсах ці посилання.
Щоб відобразити конфігурований звіт, що містить дані певного курсу, достатньо розмістити на сторінці цього курсу блок Configurable Reports і сформувати в ньому посилання чи кілька посилань на потрібні звіти. А щоб скопіювати цей блок з усіма розміщеними у ньому посиланнями у кожний курс сайту, можна скористатися відповідною опцією в налаштуваннях блоку:
Рис. 1
Розглянемо приклад URL посилання на звіт у зазначеному блоці. Вона виявляється досить простою, наприклад: https://mysite.edu.ua/blocks/configurable_reports/viewreport.php?id=12&courseid=330.
Тут після адреси сайту йде посилання на Configurable Reports: blocks/configurable_reports/viewreport.php?, а далі вказуються параметри: id – (порядковий номер) звіту на цьому сайті (в нашому прикладі – 12) та id курсу, в якому знаходиться блок, і дані якого виводяться звіт (тут 330).
Номеру курсу, що передається у звіт через параметр &courseid=330, у SQL-запиті відповідає змінна %%COURSEID%%. Наприклад, приналежність записів у полі fd.course до зазначеного курсу можна описати як WHERE fd.course = %%COURSEID%%.
При написанні SQL-запитів можна використовувати такі змінні:
%%CATEGORYID%% - id категорії курсів,
%%COURSEID%% - id курсу,
%%CURRENTUSER%% - id поточного користувача,
%%DEBUG%% - використовується при налагодженні,
%%FILTER_VAR%% - змінна, значення якої передається у звіт за допомогою включення в URL параметра &filter_var=,
%%STARTTIME%%', '%%ENDTIME%% - початкова і кінцева дата і час для даних звіту.
%%USERID%% - id користувача,
%%WWWROOT%% - адреса сайту.
Наприклад, замість конкретної адреси – https://mysite.edu.ua, у SQL-запиті краще писати змінну %%WWWROOT%%. Тоді він буде придатним для використання на сайті з будь-якою адресою.
Механізм підстановки значень у змінні SQL-запитів через параметри URL використовують для побудови вбудованих звітів [9]. У них кожна клітинка з даними може містити посилання на більш детальний звіт щодо цих даних. Наприклад, звіт про категорію курсів кафедри може містити в собі назви дисциплін, прізвища викладачів тощо. Кожна назва дисципліни може мати посилання на більш детальний звіт щодо цієї дисципліни, а кожне прізвище - посилання на звіт з даними про цього викладача. Відповідні дані будуть братися з таблиць бази даних і передаватися через параметри URL &courseid і &courrentuser у змінні SQL-запиту %%COURSEID%% і %%CURRENTUSER%%.
Отже, налаштувавши в одному із курсів блок Configurable Reports, і вибравши для нього розташування показане на рис. 1, ми скопіюємо його в усі курси сайту. По аналогії хотілося б так само і на кожній сторінці категорії курсів, що містить перелік курсів цієї категорії: кафедри, факультету тощо зробити посилання на звіти, щодо курсів цієї категорії. Дійсно, ми можемо розмістити блок Configurable Reports на сторінці однієї із категорій, а потім скопіювати його в усі інші категорії, вибравши в параметрах блоку такий варіант його розміщення:
Рис. 2
Але, виявляється, що номер категорії не можна передати в SQL-запит як параметр в URL. Розміщений на сторінці категорії блок Configurable Reports не формує URL на кшталт https://mysite.edu.ua/blocks/configurable_reports/viewreport.php?id=14&categoryid=28. І навіть, якщо ми самі пропишемо тут такий URL, значення 28 не буде передано у змінну %%CATEGORYID%%.
Очевидно, змінна %%CATEGORYID%% не є самостійною, а визначається в залежності від номера курсу й категорії, в якій цей курс знаходиться.
Тобто, якщо ми бажаємо автоматично розмістити по всьому сайту блок, що формує звіти для категорій курсів, його краще розміщувати не на сторінці категорії, а в одному з курсів цієї категорії. Тоді описаним вище способом (через параметр &courseid) у звіт буде передано id курсу, на основі якого буде сформовано значення змінної %%CATEGORYID%%, яка і буде використана в SQL-запиті.
Практика показує, що крім курсів навчальних дисциплін, на сайті Moodle доцільно розміщувати й службові курси. Наприклад, курси академічних груп, де створюються списки студентів, які потім через механізм мета-курсів експортуються в курси навчальних дисциплін [10]. У журналі оцінок службових курсів (за допомогою діяльності субкурс) можна збирати підсумкові оцінки з усіх дисциплін, які вивчають студенти цієї групи. Взагалі такий службовий курс являє собою центр спілкування студентів цієї групи. Тут розміщуються оголошення та інша загальна інформація для студентів, яку недоцільно подавати студентам через курс конкретної навчальної дисципліни.
Очевидно, такого самого центра спілкування потребують і викладачі. Тому ми пропонуємо створити на сайті Moodle також і службові курси кафедр, де розміщуються оголошення та різні документи для викладачів цієї кафедри, форуми для їх спілкування тощо. Саме в цих курсах і доцільно розміщувати посилання на звіти щодо категорії курсів кафедри.
Посилання на звіти можна розміщувати не тільки в блоці Configurable Reports, а й у будь-якому блоці HTML чи ресурсі, якщо застосувати плагін FilterCodes [11], що відкриває доступ до величезного числа змінних, які викладач має змогу використовувати у своєму курсі.
Наприклад, для підстановки будь-куди (в тому числі й у посилання) id поточного курсу можна скористатися змінною {courseid} або %7Bcourseid%7D, а для підстановки адреси сайту – змінною {wwwroot}. Тоді URL запиту до 12-го звіту для поточного курсу (тобто того, в якому знаходиться це посилання) можна записати так: https://mysite.edu.ua/blocks/configurable_reports/viewreport.php?id=12&courseid={courseid} або навіть {wwwroot}/blocks/configurable_reports/viewreport.php?id=12&courseid={courseid}, якщо тільки це посилання не перевіряється вбудованими в редактор засобами контролю синтаксису адрес URL. Інакше адреса URL, що починається не з https://, а з {wwwroot} хибно сприйматиметься цими засобами як помилкова.
Взагалі плагін FilterCodes має дуже багато застосувань, які заслуговують окремого розгляду. В межах теми цієї доповіді, його можна застосувати також для обмеження доступу до звітів певних категорій користувачів.
Взагалі плагін Configurable Reports має власні засоби, що дозволяють визначати категорії користувачів, які мають доступ до звітів, зокрема в залежності від ролі, яку користувач має в поточному курсі. В цьому сенсі плагін FilterCodes дозволяє регулювати ці права значно гнучкіше. Наприклад, якщо посилання на звіт обрамляє пара тегів {ifincohort CohortID|idnumber} … {/ifincohort}, то це зробить його видимим тільки членам певної когорти (глобальної групи) і дає змогу, зокрема, пропонувати різні звіти різним користувачам.
Взагалі переважна більшість наших користувачів набагато краще володіють засобами створення звітів у Excel, ніж у Configurable Reports. Та й функціональні можливості Excel значно більші, ніж у Configurable Reports. Тому в багатьох випадках більш прийнятним варіантом є створення простих звітів за допомогою Configurable Reports з їх експортом і подальшою обробкою засобами Excel. Процедуру цієї обробки можна записати в макрос. Тоді для одержання звіту рядовому користувачеві достатньо лише:
1) натиснути посилання створення звіту в Moodle,
2) натиснути кнопку його експорту в Excel,
3) запустити в Excel виконання відповідного макросу.
Створення таких макросів [12] не потребує програмування і може здійснюватися однією особою (наприклад, адміністратором) для потреб всіх користувачів сайту. Для цього достатньо скористатися меню «Записати макрос», дати макросу ім’я і виконати послідовність дій зі створення і форматування звіту: сортування даних, підведення різних підсумків, побудову діаграм тощо. По завершенню треба натиснути кнопку, що зупиняє запис макросу. В подальшому, якщо запустити макрос на виконання, він миттєво (в автоматичному режимі) відтворить всі записані в ньому дії .
Для реалізації такого підходу, створені і перевірені в роботі файли макросів викладаються на сайт. Користувач, що працює зі звітами, має їх завантажити і зберегти для подальшого використання в своїй особистій книзі макросів [13] програми Excel.
На завершення зазначимо, що використання макросів, звісно, може бути корисним не тільки для звітів, створених у Configurable Reports. Moodle експортує дуже багато різних таблиць у форматах, що можуть оброблятися в Excel. Спільною рисою всіх цих таблиць є те, що вони зовсім не відформатовані. Отже, створення макросів принаймні для автоматичного форматування експортованих із Moodle таблиць дозволяє покращити їх вигляд, зекономивши чимало часу користувачів.Список використаних джерел
[1] Configurable Reports. [Online]. Available: https://moodle.org/plugins/block_configurable_reports
[2] Reports: Ad-hoc database queries. [Online]. Available: https://moodle.org/plugins/report_customsql
[3] Г.С. Погромська. Побудова запитів на мові SQL: Навчальний посібник. Миколаїв. МНУ ім. В.О. Сухомлиського, 2014. 133 с. [Електронний ресурс]. Режим доступу: https://dspace.mdu.edu.ua/jspui/bitstream/123456789/64/1/Погромська_Побудова%20запитів%20на%20мові%20SQL.Pdf
[4] Database schema introduction. [Online]. Available: https://docs.moodle.org/dev/Database_schema_introduction
[5] Ad-hoc contributed reports. [Online]. Available: https://docs.moodle.org/33/en/ad-hoc_contributed_reports
[6] Configurable Reports. [Online]. Available: https://docs.moodle.org/311/en/Configurable_reports
[7] jleyva/moodle-configurable_reports_repository. [Online]. Available: https://github.com/jleyva/moodle-configurable_reports_repository
[8] jleyva/moodle-custom_sql_report_queries. [Online]. Available: https://github.com/jleyva/moodle-custom_sql_report_queries
[9] Moodle™ Configurable Reports Spotlight: Embedded Reports. [Online]. Available: https://ethinkeducation.com/blog/Moodle-configurable-reports-embedded-reports/
[10] Т.В. Иванченко, А.А. Щербина. Использование метакурсов и модуля субкурс в Moodle 1.9. [Електронний ресурс]. Режим доступу: http://2013.moodlemoot.in.ua/course/view.php?id=45
[11] FilterCodes. [Online]. Available: https://moodle.org/plugins/filter_filtercodes
[12] Как записать макрос в Excel? Пошаговая инструкция. [Електронний ресурс]. Режим доступу: https://micro-solution.ru/excel/vba/first-macros
[13] Личная книга макросов в Excel и как ее использовать. [Електронний ресурс]. Режим доступу: https://exceltable.com/vba-macros/lichnaya-kniga-makrosov