![Page 1: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/1.jpg)
Moodle с точки зрения пользователя и программиста
Igor Sazonov ( @tigusigalpa, lmstech.ru / lms-service.org )
IT Global Meetup #5, Saint-Petersburg, Russia, June 6, 2015
![Page 2: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/2.jpg)
Банальная информация
Moodle – Modular Object-Oriented Dynamic Learning
Environment ( Модульная объектно-ориентированная динамическая среда )
Бесплатная open-source система ( https://moodle.org/ )
Количество пользователей: ~71 485 909
Количество стран: 222
Текущая версия: 2.9
Доля среди LMS: 96%
Первая версия: 2003 год
* https://wappalyzer.com/categories/lms
![Page 3: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/3.jpg)
Преимущества
Бесплатный
Огромное комьюнити
Постоянные обновления (раз в полгода) и улучшения по просьбам пользователей
Много возможностей и настроек (?!)
Много разных плагинов
![Page 4: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/4.jpg)
Недостатки
Большое число настроек
Сложность освоения
Требуется сервер с мощными ресурсами
Ограниченные возможности по кастомизации внешнего вида
Сложная архитектура БД
«Жесткая» структура файлов и классов
Малое количество документации
![Page 5: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/5.jpg)
Расслабьтесь
![Page 6: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/6.jpg)
Moodle с точки зрения пользователя
Управление курсами
Управление элементами курсов
Система ролей
Система отчетов
Банк вопросов
Блоки
Языки интерфейса
Дополнительные плагины
![Page 7: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/7.jpg)
Управление курсамиКурс – конечная сущность, состоящая из элементов курса (тесты, задания, лекции)
Курс может быть представлен одним из форматов:
Разделы по неделям – организует расписание курса (неделя за неделей) с точным сроком начала и окончания. Каждая неделя это модуль курса.
Разделы по темам – внешне похож на Разделы по неделям, но не имеет временных ограничений и не привязан к календарю. Каждая неделя это модуль курса.
Форум – курс организуется на основе одного большого форума. Может использоваться как одна большая доска сообщений
![Page 8: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/8.jpg)
Управление элементами курсов
Элемент курса – одна из составляющих курса, может быть представлена Тестом, Заданием, Лекцией, Опросом итп
![Page 9: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/9.jpg)
Система ролей
Роль – набор разрешений (прав), определенных для всей системы, Вы можете назначить роль пользователю или создать свою роль. Роль подчиняется уровням (сайт, категория, курс итд). Управляющий – управляющие имеют доступ к курсу и могут изменять его.
Они, как правило, не участвуют в курсах.
Создатель курса – создатели курсов могут создавать новые курсы.
Учитель – учителя могут делать в курсе всё, в том числе изменять элементы курса и оценивать студентов.
Ассистент (без права редактирования) – ассистент может преподавать в курсах и выставлять оценки, но он не может изменять содержание курса.
Студент – обычно студенты обладают меньшим набором прав в рамках курса.
Гость – обычно гости имеют минимальный набор прав и не могут нигде вводить текст.
Администрирование > Пользователи > Права >
![Page 10: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/10.jpg)
Система ролейКонтексты – участники иерархической архитектуры зависимости прав относительно конкретного элемента системы.
Количество прав, которые можно назначить роли – более 520
Например, Управлять файлами в области личных файлов или Просматривать профили других пользователей.
![Page 11: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/11.jpg)
Система отчетов (в рамках курса)
Отчет по оценкам Отчет формируется для каждого пользователя согласно пройденным им
элементам курса
История оценок: все попытки пользователя, втч и неудачные
Можно даже назначать оценки
Поддержка экспорта в форматы OpenDocument, Excel, XML, текстовый файл
Настройки Курса > Управление курсом > Оценки
Журнал событийОтчет о всевозможных действиях пользователей на сайте
Настройки Курса > Управление курсом > Отчеты
![Page 12: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/12.jpg)
Банк вопросовБанк вопросов позволяет управлять всеми вопросами, которые есть во всех тестах текущего курса.
Вы можете редактировать, дублировать, удалять, править вопросы из списка Банка вопросов курса.
Настройки курса > Управление тестом > Банк вопросов
![Page 13: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/13.jpg)
БлокиБлоки – это виджеты с определенном контентом, которые могут добавлены на страницу в Moodle (обычно в колонках справа или слева).
Они могут быть как встроенные в Moodle, так и предоставляемые сторонними плагинами (в данном случае это понятие «Блок»).
https://docs.moodle.org/29/en/Blocks
![Page 14: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/14.jpg)
Языки интерфейса
В Moodle, начиная с версии 2.5 внедрена поддержка переключения языка интерфейса (не контента!).
![Page 15: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/15.jpg)
Дополнительные плагины
Модули / плагины разделяются на категории по их функциональности
Установка только через FTP
https://moodle.org/plugins/
![Page 16: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/16.jpg)
Moodle с точки программиста
Проблемы для программиста
Полезные функции и глобальные переменные
Система контекстов
Логирование отчетов
Написание плагинов, блоков
Работа с БД
![Page 17: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/17.jpg)
Проблемы для программиста
Мало документации (система узкоспециализирована)
Не проинициализированы подключения файлов
328 таблиц в Базе Данных !!!
Строгая структура файлов
Строгое разделение плагинов на блоки / модули
Запутанная система работы с javascript
![Page 18: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/18.jpg)
Полезные функции и переменные
create_course($data)
Функция для создания курса, записывает в таблицу courseзначения объекта (!) $data (ключи = колонки таблицы)
course/lib.php
optional_param($parname, $default, $type)
Обрабатывает параметры из $_GET, $_POST по ключу $parname, если ключ пустой, то возвращает $default, а также проверяет полученное значение $type
lib/moodlelib.php
get_config($plugin)
Возвращает объект всех опций плагина $plugin из таблицы config_plugins
lib/moodlelib.php
![Page 19: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/19.jpg)
Полезные функции и переменные
$CFG – глобальная переменная-объект с системными данными (wwwroot (http://site.ru), libdir (/lib), tempdir)
require_capability($capability, $context);
Функция запрашивает права $capability на показ $context
lib/accesslib.php
get_string($string_id, $component);
Примеры: $id = optional_param('id', '', PARAM_INT);
$new_course = create_course($object);
include_once($CFG->libdir . '/formslib.php');
![Page 20: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/20.jpg)
Система контекстов
Контексты имеют так называемые context level:
define('CONTEXT_SYSTEM', 10);
define('CONTEXT_USER', 30);
define('CONTEXT_COURSECAT', 40);
define('CONTEXT_COURSE', 50);
define('CONTEXT_MODULE', 70);
define('CONTEXT_BLOCK', 80);
Каждое право «подчиняется» своему contextlevel
Чем contextlevel меньше, тем больше прав
Каждая сущность в Moodle должна иметь свой контекст
Таблица context
https://docs.moodle.org/dev/Access_API
![Page 21: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/21.jpg)
Логирование отчетов
Каждое действие должно (желательно) логироваться. Функции работы с логированием:
add_to_log($courseid, $module, $action, $url='', $info='',
$cm=0, $user=0)
$coursed – ID курса
$module – имя модуля/плагина которое совершает $action
$action – 'view', 'update', 'add' или 'delete‘
$cm – id модуля курса
$user – id пользователя, который совершает $action
get_logs($select, array $params=null, $order='l.time DESC',
$limitfrom='', $limitnum='', &$totalcount)
get_logs_usercourse($userid, $courseid, $coursestart)
https://docs.moodle.org/dev/Logging_API
![Page 22: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/22.jpg)
Написание плагинов/блоков
Плагины в Moodle имеют довольно много типов (блоки, утилиты админ панели итп):
https://docs.moodle.org/dev/Plugin_types
Общие моменты:
Точка входа – файл php (его имя должно соответствовать типу плагина)
Точка входа – это класс, который наследуется от базового класса нужного типа плагина. Этот класс может переписывать методы родительского класса.
Структура каталогов одинаковая
![Page 23: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/23.jpg)
Написание плагинов/блоков
Пример структуры каталогов и главного класса блока simplehtml =>
Пример инициализации входного класса
![Page 24: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/24.jpg)
Работа с БД
СУБД может быть как MySQL так и Postgresql
С БД работает глобальный объект $DB ( global $DB; )
Примеры: $user = $DB->get_record('user', array('id'=>'1'));
$DB->get_records($table, array $conditions=null, $sort='', $fields='*', $limitfrom=0,
$limitnum=0)
$DB->set_field($table, $newfield, $newvalue, array $conditions=null)
$DB->delete_records($table, array $conditions=null)
$DB->insert_record($table, $dataobject, $returnid=true, $bulk=false)
$DB->update_record($table, $dataobject, $bulk=false)
………..
https://docs.moodle.org/dev/Data_manipulation_API
![Page 25: Moodle с точки зрения пользователя и программиста](https://reader036.vdocuments.site/reader036/viewer/2022082218/55b66e6bbb61eb4a798b45ab/html5/thumbnails/25.jpg)