Презентация Игоря Сазонова на IT Global Meetup #5

25
Moodle с точки зрения пользователя и программиста Igor Sazonov ( @tigusigalpa, lmstech.ru / lms-service.org ) IT Global Meetup #5, Saint-Petersburg, Russia, June 6, 2015

Transcript of Презентация Игоря Сазонова на IT Global Meetup #5

Page 1: Презентация Игоря Сазонова на IT Global Meetup #5

Moodle с точки зрения пользователя и программиста

Igor Sazonov ( @tigusigalpa, lmstech.ru / lms-service.org )

IT Global Meetup #5, Saint-Petersburg, Russia, June 6, 2015

Page 2: Презентация Игоря Сазонова на IT Global Meetup #5

Банальная информация

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: Презентация Игоря Сазонова на IT Global Meetup #5

Преимущества

Бесплатный

Огромное комьюнити

Постоянные обновления (раз в полгода) и улучшения по просьбам пользователей

Много возможностей и настроек (?!)

Много разных плагинов

Page 4: Презентация Игоря Сазонова на IT Global Meetup #5

Недостатки

Большое число настроек

Сложность освоения

Требуется сервер с мощными ресурсами

Ограниченные возможности по кастомизации внешнего вида

Сложная архитектура БД

«Жесткая» структура файлов и классов

Малое количество документации

Page 5: Презентация Игоря Сазонова на IT Global Meetup #5

Расслабьтесь

Page 6: Презентация Игоря Сазонова на IT Global Meetup #5

Moodle с точки зрения пользователя

Управление курсами

Управление элементами курсов

Система ролей

Система отчетов

Банк вопросов

Блоки

Языки интерфейса

Дополнительные плагины

Page 7: Презентация Игоря Сазонова на IT Global Meetup #5

Управление курсамиКурс – конечная сущность, состоящая из элементов курса (тесты, задания, лекции)

Курс может быть представлен одним из форматов:

Разделы по неделям – организует расписание курса (неделя за неделей) с точным сроком начала и окончания. Каждая неделя это модуль курса.

Разделы по темам – внешне похож на Разделы по неделям, но не имеет временных ограничений и не привязан к календарю. Каждая неделя это модуль курса.

Форум – курс организуется на основе одного большого форума. Может использоваться как одна большая доска сообщений

Page 8: Презентация Игоря Сазонова на IT Global Meetup #5

Управление элементами курсов

Элемент курса – одна из составляющих курса, может быть представлена Тестом, Заданием, Лекцией, Опросом итп

Page 9: Презентация Игоря Сазонова на IT Global Meetup #5

Система ролей

Роль – набор разрешений (прав), определенных для всей системы, Вы можете назначить роль пользователю или создать свою роль. Роль подчиняется уровням (сайт, категория, курс итд). Управляющий – управляющие имеют доступ к курсу и могут изменять его.

Они, как правило, не участвуют в курсах.

Создатель курса – создатели курсов могут создавать новые курсы.

Учитель – учителя могут делать в курсе всё, в том числе изменять элементы курса и оценивать студентов.

Ассистент (без права редактирования) – ассистент может преподавать в курсах и выставлять оценки, но он не может изменять содержание курса.

Студент – обычно студенты обладают меньшим набором прав в рамках курса.

Гость – обычно гости имеют минимальный набор прав и не могут нигде вводить текст.

Администрирование > Пользователи > Права >

Page 10: Презентация Игоря Сазонова на IT Global Meetup #5

Система ролейКонтексты – участники иерархической архитектуры зависимости прав относительно конкретного элемента системы.

Количество прав, которые можно назначить роли – более 520

Например, Управлять файлами в области личных файлов или Просматривать профили других пользователей.

Page 11: Презентация Игоря Сазонова на IT Global Meetup #5

Система отчетов (в рамках курса)

Отчет по оценкам Отчет формируется для каждого пользователя согласно пройденным им

элементам курса

История оценок: все попытки пользователя, втч и неудачные

Можно даже назначать оценки

Поддержка экспорта в форматы OpenDocument, Excel, XML, текстовый файл

Настройки Курса > Управление курсом > Оценки

Журнал событийОтчет о всевозможных действиях пользователей на сайте

Настройки Курса > Управление курсом > Отчеты

Page 12: Презентация Игоря Сазонова на IT Global Meetup #5

Банк вопросовБанк вопросов позволяет управлять всеми вопросами, которые есть во всех тестах текущего курса.

Вы можете редактировать, дублировать, удалять, править вопросы из списка Банка вопросов курса.

Настройки курса > Управление тестом > Банк вопросов

Page 13: Презентация Игоря Сазонова на IT Global Meetup #5

БлокиБлоки – это виджеты с определенном контентом, которые могут добавлены на страницу в Moodle (обычно в колонках справа или слева).

Они могут быть как встроенные в Moodle, так и предоставляемые сторонними плагинами (в данном случае это понятие «Блок»).

https://docs.moodle.org/29/en/Blocks

Page 14: Презентация Игоря Сазонова на IT Global Meetup #5

Языки интерфейса

В Moodle, начиная с версии 2.5 внедрена поддержка переключения языка интерфейса (не контента!).

Page 15: Презентация Игоря Сазонова на IT Global Meetup #5

Дополнительные плагины

Модули / плагины разделяются на категории по их функциональности

Установка только через FTP

https://moodle.org/plugins/

Page 16: Презентация Игоря Сазонова на IT Global Meetup #5

Moodle с точки программиста

Проблемы для программиста

Полезные функции и глобальные переменные

Система контекстов

Логирование отчетов

Написание плагинов, блоков

Работа с БД

Page 17: Презентация Игоря Сазонова на IT Global Meetup #5

Проблемы для программиста

Мало документации (система узкоспециализирована)

Не проинициализированы подключения файлов

328 таблиц в Базе Данных !!!

Строгая структура файлов

Строгое разделение плагинов на блоки / модули

Запутанная система работы с javascript

Page 18: Презентация Игоря Сазонова на IT Global Meetup #5

Полезные функции и переменные

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: Презентация Игоря Сазонова на IT Global Meetup #5

Полезные функции и переменные

$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: Презентация Игоря Сазонова на IT Global Meetup #5

Система контекстов

Контексты имеют так называемые 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: Презентация Игоря Сазонова на IT Global Meetup #5

Логирование отчетов

Каждое действие должно (желательно) логироваться. Функции работы с логированием:

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: Презентация Игоря Сазонова на IT Global Meetup #5

Написание плагинов/блоков

Плагины в Moodle имеют довольно много типов (блоки, утилиты админ панели итп):

https://docs.moodle.org/dev/Plugin_types

Общие моменты:

Точка входа – файл php (его имя должно соответствовать типу плагина)

Точка входа – это класс, который наследуется от базового класса нужного типа плагина. Этот класс может переписывать методы родительского класса.

Структура каталогов одинаковая

Page 23: Презентация Игоря Сазонова на IT Global Meetup #5

Написание плагинов/блоков

Пример структуры каталогов и главного класса блока simplehtml =>

Пример инициализации входного класса

Page 24: Презентация Игоря Сазонова на IT Global Meetup #5

Работа с БД

СУБД может быть как 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: Презентация Игоря Сазонова на IT Global Meetup #5