Перейти к основному содержимому

Зачисление через внешнюю базу данных

Использование внешней базы данных для управления зачислением на курсы

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

Ниже перечислены поддерживаемые источники данных, но обратите внимание, что вам потребуется скомпилировать PHP с соответствующими опциями или через ODBC.

  • access
  • ado
  • mssql
  • borland_ibase
  • csv
  • db2
  • fbsql
  • firebird
  • ibase
  • informix72
  • informix
  • mysql (устарело, используйте mysqli вместо этого)
  • mysqli
  • mysqlt
  • oci805
  • oci8
  • oci8po
  • odbc
  • odbc_mssql
  • odbc_oracle
  • oracle
  • postgres64
  • postgres7
  • postgres
  • proxy
  • sqlanywhere
  • sybase
  • vfp

Зачисление и исключение из курса

Зачисление через внешнюю базу данных происходит в момент, когда пользователь входит в Moodle. Плагин попытается автоматически записать студента на все курсы согласно данным во внешней базе данных и, при необходимости, создать пустые курсы, если они ещё не существуют. Чтобы проверить, работает ли это, вы можете войти в систему как студент и затем проверить, что список курсов соответствует ожиданиям.

Этот процесс также исключает пользователей из курсов, если их больше нет в базе данных. Записи пользователей помечаются в соответствии с их первоначальным способом зачисления. Следовательно, плагин внешней базы данных может исключать только тех пользователей, которые были зачислены с помощью плагина.

Скрытые курсы

Курсы, для которых установлено значение «Курс недоступен для студентов», могут быть проигнорированы при зачислении, если установить параметр «enrol_db_ignorehiddencourse» в yes.

Зачисление и роли

Настройка «enrol_database | defaultrole» на странице настроек плагина определяет роль, которую будет иметь пользователь при добавлении на курс. Настройка по умолчанию установит роль по умолчанию для курса (первоначально «студент»). Однако вы можете указать поле во внешней таблице (указанное в настройке «enrol_database | remoterolefield»), которое содержит краткое название или идентификатор роли пользователя. Это можно использовать, например, для зачисления как студентов, так и преподавателей на курсы с помощью соответствующим образом настроенной базы данных.

Исключение из курса

Настройка внешнего действия при исключении («enrol_database | unenrolaction») на странице настроек плагина определяет, какое действие должно быть предпринято, когда зачисление пользователя исчезает из внешнего источника зачисления. Каждая настройка делает следующее:

  1. «Исключить пользователя из курса». Когда пользователь исчезает из внешнего источника, зачисление полностью удаляется, и все роли удаляются. Это означает, что некоторые данные пользователя и настройки удаляются из курса во время исключения из курса (обычно это оценки, попытки выполнения заданий и т. д.).
  2. «Сохранить зачисление пользователя». Когда пользователь исчезает из внешнего источника, зачисление сохраняется, и пользователь по-прежнему может входить на курс и выполнять действия, получать доступ к ресурсам и т. д. Это опция «ничего не делать».
  3. «Отключить зачисление на курс». Когда пользователь исчезает из внешнего источника, зачисление приостанавливается (пользователь не может получить доступ к курсу, но данные пользователя и настройки сохраняются), а роли сохраняются. Вы можете использовать это, потому что в некоторых случаях пользователю нужна роль с определёнными правами, чтобы быть видимым в пользовательском интерфейсе — например, в журнале оценок, заданиях и т. д.
  4. «Отключить зачисление на курс и удалить роли». Когда пользователь исчезает из внешнего источника, зачисление приостанавливается, и роли, назначенные при зачислении, удаляются. Обратите внимание, что пользователь может «исчезнуть» из журнала оценок и других областей.

Создание курсов

При необходимости курсы, которых нет на сайте Moodle, могут быть созданы.

Вы также можете указать категорию, в которую будет помещён новый курс, в поле «Идентификатор новой категории курса». Данные в этом поле должны быть идентификатором существующей категории; новая категория не будет создана. Идентификатор — это номер, присвоенный Moodle в базе данных при создании категории (например, mdl_course_categories.id).

  • Не путайте этот идентификатор категории с новым настраиваемым полем идентификатора категории, которое вы можете присвоить категории вручную (см. MDL-28518 и MDL-31845).
  • Если оставить данные идентификатора категории пустыми, курс будет назначен в категорию по умолчанию.
  • Если вы назначите данные категориям, которых ещё нет в Moodle, курсы не будут созданы.

Категория для новых курсов по умолчанию — это категория, в которой будут создаваться и назначаться курсы, если вы не укажете иное в поле данных «Идентификатор новой категории курса».

Вы также можете указать шаблон нового курса: «шаблонный» курс, из которого будет скопирован новый курс. Данные для этого поля должны быть кратким названием шаблонного курса.

В Moodle 4.5 и выше вы можете установить дату начала и окончания нового курса в Администрирование сайта > Плагины > Внешняя база данных. Если даты не установлены, дата начала курса будет установлена на текущую дату, а дата окончания курса будет установлена в соответствии с продолжительностью курса по умолчанию.

Синхронизация зачислений через внешнюю базу данных

Запланированная задача

Запланированная задача под названием «Синхронизировать зачисление через внешнюю базу данных» синхронизирует все зачисления пользователей одновременно — как добавление, так и удаление зачислений пользователей (и создание курсов, если указано) (MDL-59986). Настройки для этого находятся в Администрирование сайта > Сервер > Задачи > Запланированные задачи. Убедитесь, что этот скрипт включён и настроен на выполнение так часто, как вам нужно для выполнения зачислений. По умолчанию он отключён и настроен на выполнение только один раз в день.

(Примечание: устаревший скрипт предоставлялся в Moodle с версии 3.6 по 3.10 на случай проблем с запланированной задачей, добавленной в Moodle 3.6. Этот скрипт был удалён в Moodle 3.11).

Учётные записи пользователей

Напоминаем, что необходимо убедиться, что у всех пользователей, присутствующих во внешних зачислениях, уже созданы учётные записи в Moodle, поскольку пользователи, которых нет в Moodle, не могут быть зачислены на курс. Если вы используете внешние плагины аутентификации (db, ldap и т. д.), вы можете использовать скрипты, предоставляемые этими плагинами, для синхронизации пользователей перед запуском этого скрипта.

Настройка синхронизации зачисления (как сделать)

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

  • Используйте существующую базу данных или создайте новую. Используйте существующую таблицу или создайте новую с следующими минимальными полями.
    1. Уникальный идентификатор курса для соответствия одному из следующих полей.
      • поле «idnumber» в таблице курсов Moodle (varchar 100), которое вручную указывается как «Идентификатор курса» при редактировании настроек курса
      • поле «shortname» в таблице курсов Moodle (varchar 255), которое вручную указывается как «Краткое название курса» при редактировании настроек курса
      • поле «id» в таблице курсов Moodle (int 10), которое основано на порядке создания курса
    2. Уникальный идентификатор пользователя для соответствия одному из следующих полей.
      • поле «idnumber» в таблице пользователей Moodle (varchar 255), которое вручную указывается как «Идентификатор пользователя» при редактировании профиля пользователя
      • поле «username» в таблице пользователей Moodle (varchar 100), которое вручную указывается как «Имя пользователя» при редактировании профиля пользователя
      • поле «email» в таблице пользователей Moodle (varchar 100), которое вручную указывается как «Адрес электронной почты» при редактировании профиля пользователя
      • поле «id» в таблице пользователей Moodle (int 10), которое основано на порядке создания пользователя
    3. (необязательно) Уникальный идентификатор роли для соответствия одному из следующих полей.
      • поле «shortname» в таблице ролей Moodle (varchar 100), например editingteacher, coursecreator, student, ...
      • поле «name» в таблице ролей Moodle (varchar 255), например Teacher, Course creator, Student, ...
      • поле «id» в таблице ролей Moodle (int 10), которое основано на начальной установке и порядке создания новой роли
  • Заполните таблицу базы данных. Каждая комбинация пользователь/курс должна иметь запись в таблице.
  • В Moodle перейдите в Администрирование сайта > Плагины > Зачисления > Управление плагинами зачисления, найдите «Внешняя база данных» в списке, включите её (щёлкните по иконке закрытого глаза) и нажмите «Настройки».
  • На верхней панели выберите тип базы данных (убедитесь, что у вас есть необходимая настройка в PHP для этого типа) и затем укажите информацию для подключения к базе данных.
  • Средняя панель создаёт сопоставление между M