В данной статье рассматриваются API-функции системы Moodle, примение которых позволяет создавать работоспособные дополнительные модули. Представлена программная реализация модуля сбора информации о состоянии проверки работ студентов в виртуальной обучающей среде.
В Инновационном Евразийском университете для реализации дистанционной образовательной технологии (ДОТ) применяется виртуальная обучающая среда Moodle, также известная как система дистанционного обучения (СДО). На момент второго квартала 2012 г. в системе насчитывается более 1000 курсов (дисциплин), количество зарегистрированных пользователей - более 1800 человек.
СДО Moodle позволяет не только предоставить студенту доступ к электронному учебно- методическому комплексу дисциплины, но и организовать контроль знаний обучающегося. Контроль знаний в основном осуществляется посредством тестирования и проверки результатов выполнения контрольных, курсовых, практических и лабораторных работ. В случае с тестированием участие преподавателя ограничивается созданием тестовых вопросов. Далее тестирование работает без участия преподавателя: автоматически формируется набор вопросов согласно правилам, указанным преподавателем при создании теста, а после завершения тестирования студента проверяются результаты и выставляется оценка. Что касается контрольных, курсовых и других работ, для проверки которых требуется непосредственное участие преподавателя, то СДО Moodle предоставляет лишь интерфейс загрузки в систему файла с результатами выполнения работы для студента и интерфейс оценивания и рецензирования для преподавателя. Причем, в СДО Moodle нет инструмента [1], позволяющего преподавателю в одном месте получить комплексную информацию о наличии непроверенных работ студентов по всем дисциплинам, за которыми преподаватель закреплен в системе.
Данная ситуация увеличивает трудоемкость проверки работ, что обусловлено «ручным обходом» всех дисциплин и далее уже в дисциплине обходом всех элементов контента, которые могут быть оценены. Данная проблема еще более остро встает для администратора системы, который ежемесячно формирует отчеты о состоянии проверки работ студентов в СДО Moodle.
Благодаря открытому исходному коду и развитой модульной архитектуре, СДО Moodle позволяет расширять возможности системы дополнительными модулями. В рамках магистерской диссертации реализован модуль, позволяющий организовать сбор информации о состоянии проверки работ студентов в СДО Moodle.
Данный модуль в системе Moodle представляет собой блок и создан на языке программирования PHP [2] с использованием API Moodle. API (Application Programming Interface – Интерфейс программирования приложений) – набор готовых классов, процедур, функций, структур и констант, предоставляемых системой Moodle для разработчика плагинов и модулей.
В Moodle имеются определенный набор правил к разработке блоков с использованием API-функций [3]:
- Блок должен иметь уникальное название, состоящее только из латинских букв и арабских цифр, и не должен совпадать с названиями остальных блоков в системе.
- В директории blocks корневого каталога системы Moodle необходимо создать папку с названием блока, в которой размещаются все скрипты разрабатываемого модуля.
- Для блока должен быть реализован класс с названием block_<имя_блока>, расширяющий базовый класс block_base, в одноименном файле php-скрипта в папке модуля:
class block_fdo_cab extends block_base { }
- Класс блока должен содержать как минимум два метода: init() и get_content(): function init() {
$this->title = get_string('title', 'block_fdo_cab');
$this->version = 2012032701;
}
function get_content() {
$context = get_context_instance(CONTEXT_SYSTEM); if (has_capability('block/fdo_cab:view', $context)) {
require_once(dirname(realpath(__FILE )).'/lib.php');
$this->content = new stdClass;
$this->content->text = $FDO->get_block_link($FDO->userid); return $this->content;
}
}
Метод init() инициализирует класс, определяя два обязательных свойства title и version. Метод get_content возвращает текст, который будет отображаться в блоке в системе Moodle. В данном случае в блоке будет отображаться ссылка на скрипт, реализующий интерфейс модуля.
- Для указания допускаемых для отображения блока контекстных уровней в системе Moodle используется функция applicable_formats():
function applicable_formats() { return array('site' => true);
}
В данном случае блок будет доступен для отображения только на главной странице системы.
- Для отображения локализованных строк в интерфейсе модуля используется специальная директория lang в папке модуля. Данная папка имеет иерархическую структуру, содержащую родительские папки языков. Родительская папка ru_utf8 означает, что языком является русский в кодировке Unicode. Внутри родительской папки языка необходимо создать файл с таким же названием файла, как у основного скрипта модуля (block_fdo_cab.php). В данном файле Moodle хранит все строки локализаций в хэш-массиве $string:
$string['title'] = 'ФДО Кабинет';
$string['main_link_tutor'] = 'Кабинет тьютора';
$string['studwork'] = 'Проверка работ';
Строки из хэш-массива $string доступны с помощью API-функции get_string().
- Для ограничения доступа к информации модуля используются специальные API-функции: get_context_instance() и has_capability().
Функция get_context_instance() создает объект context, если он еще не существует. Объект context указывает, на каком уровне предполагается работа с системой.
Функция has_capability() проверяет имеет ли текущий пользователь разрешение на выполнение указанного действия в рамках объекта context.
Следующий код проверяет, имеет ли текущий пользовать разрешение на просмотр информации блока на глобальном уровне системы:
$context = get_context_instance(CONTEXT_SYSTEM);
if (has_capability('block/fdo_cab:view', $context)) {}
- Для определения прав доступа к блоку в каталоге модуля используется специальная директория db, внутри которой создается файл access.php. В данном файле описывается, на каком уровне, какое действие, для каких ролей разрешается либо запрещается выполнять
$block_fdo_cab_capabilities = array(
'block/fdo_cab:view' => array( 'captype' => 'read',
'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array(
'user' => CAP_ALLOW,
'guest' => CAP_PREVENT
)
)
);
Структура данного файла строго регламентирована системой Moodle. В данном случае видно, что для всех пользователей СДО Moodle с ролью user (прошедшие аутентификацию) будет доступно действие «чтение» на глобальном уровне системы. Фактически это означает, что всем пользователям с ролью user в системе Moodle информация в блоке доступна для отображения. Остальным (guest – гость) блок будет недоступен.
В ИнЕУ на основе API Moodle и внутреннего класса модуля fdo_cab_control, описанного в файле fdo_cab.php каталога lib в директории модуля, представленного объектом $FDO, разработан модуль, собирающий информацию о состоянии проверки работ студентов с формированием комплексного отчета. Данный модуль доступен на главной странице сайта в разделе «Дистанционное» на доске объявлений (рисунок 1).
Рисунок 1 – Кабинет администратора
Текст блока изменяется в зависимости от роли пользователя в системе (кабинет администратора, кабинет тьютора, кабинет преподавателя). Данную функцию реализует метод get_block_link() класса fdo_cab_control.
Переход по ссылке блока позволяет перейти к пользовательскому интерфейсу модуля, функционал которого также зависит от роли текущего пользователя в системе Moodle. Функционал модуля представлен в виде меню. Очевидно, что наиболее полный функционал будет в кабинете администратора.
Полнота и вид отчета о состоянии проверки работ студентов варьируется в зависимости от количества дисциплин, в которых задействован текущий пользователь. Таким образом, для преподавателя отчет будет формироваться только по тем дисциплинам, в которых он в системе дистанционного обучения Moodle назначен на роль преподавателя.
Тьютор кафедры имеет более полный отчет, охватывающий все дисциплины его кафедры. В то же время тьютор является преподавателем на кафедре и так же осуществляет преподавательскую деятельность. В этом случае отчет будет представлен двумя таблицами, отображающими информацию по дисциплинам преподавания и по остальным дисциплинам кафедры (рисунок 2).
Рисунок 2 – Вид отчета в кабинете тьютора
Для администратора системы реализован комплексный отчет по всем дисциплинам всех кафедр (рисунок 3).
Рисунок 3 – Вид отчета в кабинете администратора
Для удобства проверки работ названия дисциплин и названия элементов в контенте дисциплин, на которые была загружена работа студентом, оформлены в виде ссылок, переход по которым позволяет сразу открыть страницу с контентом дисциплины либо отобразить интерфейс оценивания и рецензирования работ студентов.
Выборку данных о состоянии проверки работ студентов из базы данных moodle осуществляется на основы многотабличного запроса. В Database API Moodle имеются несколько функция для формирования запросов в БД. Но единственной функцией, позволяющей осуществлять многотабличные запросы, возвращающий массив записей, является get_records_sql(). В разработанном модуле реализована следующая схема многотабличного запроса (рисунок 4).
Рисунок 4 – Схема многотабличного запроса выборки данных
Схема включает следующие таблицы:
- mdl_grade_grades (хранит информация о всех оценках);
- mdl_grade_items (содержит информация о всех элементах, которые могут быть оценены);
- mdl_course_modules (хранит информация и связях курса, элементов контента и модулей);
- mdl_course (основная таблица курсов);
- mdl_course_categories (хранит информация о категориях);
- mdl_context (хранит информацию о местоположении объекта в структуре системы);
- mdl_role_assignments (содержит информация о распределении ролей по контекстам системы ). Разработанный модуль, представленный в системе дистанционного обучения Moodle в виде блока, позволяет тьюторам кафедр, преподавателям и администратору системы в автоматическом режиме получать комплексную информацию о состоянии проверки работ, загружаемых студентами в виртуальную обучающую среду Инновационного Евразийского университета.
Литература
- http://docs.moodle.org Moodle 1.9
- Jonathan Moore, Michael Churchward - Moodle 9 Extension Development. — Packt Publishing, 2010.— 320 c.
- Зандстра М. PHP. Объекты, шаблоны и методики программирования, 3-е издание. — М.: Вильямс, — 560 с.