Применение API-функций для создания дополнительных расширений в системе MOODLE

В данной статье рассматриваются 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]:

  1. Блок должен иметь уникальное название, состоящее только из латинских букв и арабских цифр, и не должен совпадать с названиями остальных блоков в системе.
  2. В директории blocks корневого каталога системы Moodle необходимо создать папку с названием блока, в которой размещаются все скрипты разрабатываемого модуля.
  3. Для блока должен быть реализован класс с названием block_<имя_блока>, расширяющий базовый класс block_base, в одноименном файле php-скрипта в папке модуля:

class block_fdo_cab extends block_base { }

  1. Класс блока должен содержать как минимум два метода: 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. В данном случае в блоке будет отображаться ссылка на скрипт, реализующий интерфейс модуля.

  1. Для указания допускаемых для отображения блока контекстных уровней в системе Moodle используется функция applicable_formats():

function applicable_formats() { return array('site' => true);

В данном случае блок будет доступен для отображения только на главной странице системы.

  1. Для отображения локализованных строк в интерфейсе модуля используется  специальная директория lang в папке модуля. Данная папка имеет иерархическую структуру, содержащую родительские папки  языков.  Родительская  папка  ru_utf8  означает,  что  языком  является русский в кодировке Unicode. Внутри родительской папки языка необходимо создать файл с таким же названием файла, как у основного скрипта модуля (block_fdo_cab.php). В данном файле Moodle хранит все строки локализаций в хэш-массиве $string:

$string['title'] = 'ФДО Кабинет';

$string['main_link_tutor'] = 'Кабинет тьютора';

$string['studwork'] = 'Проверка работ';

Строки из хэш-массива $string доступны с помощью API-функции get_string().

  1. Для ограничения доступа к информации модуля используются специальные 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)) {}

  1. Для определения прав доступа к блоку в каталоге модуля используется специальная директория 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 в виде блока, позволяет тьюторам кафедр, преподавателям и администратору системы в автоматическом режиме получать   комплексную    информацию    о    состоянии    проверки    работ,    загружаемых   студентами в виртуальную обучающую среду Инновационного Евразийского университета.

 

Литература

  1. http://docs.moodle.org Moodle 1.9
  2. Jonathan Moore, Michael Churchward - Moodle 9 Extension Development. — Packt Publishing, 2010.— 320 c.
  3. Зандстра М. PHP. Объекты, шаблоны и методики программирования, 3-е издание. — М.: Вильямс, — 560 с.
Фамилия автора: Т.М. Салий, Д.В. Голощапов
Год: 2012
Город: Павлодар
Категория: Информатика
Яндекс.Метрика