Разработка:sync/courseenrolment

Материал из DOF
Версия от 14:44, 14 января 2015; Polikarpov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Плагин
Название courseenrolment
Тип sync


Синхронизация подписок на учебные потоки с подписками на курсы Moodle.

  • Подписка на курс Moodle (вызывается из рабочего процесса cpassed при переводе объекта cpassed в статус "active", в случае, если для ученика существует пользователь Moodle, а для дисциплины задан курс Moodle). При этом, если для потока задана группа moodle, она тоже передается и при подписке происходит включение в эту группу.
  • Отписка от курса Moodle (вызывается из рабочего процесса cpassed при выводе подписки из статуса active).

Подписка, отписка и включение в группу происходит с использованием плагина modlibs/ama (modlib('ama')->course($mcourse)->role()->enrol(), modlib('ama')->course($mcourse)->role()->unenrol(), modlib('ama')->course($mcourse)->group($mgroup)->add_member($muser),

API

enrol_to_course()

Записывает пользователя на курс.

  • возвращаемое значение: (bool)
    • true если пользователя удалось подписать
    • false если произошла ошибка
  • $mdlcourseid - id курса в Moodle на который подписывается пользователь
  • $mdluserid - id пользователя в moodle
  • $mdlgroupid[optional] - id группы, в которую будет записан пользователь или null, если пользователь не будет записан в группу
  • @param int $mdlroleid[optional] - id роли прльзователя в курсе (из таблицы moodle). Роль по умолчанию - ученик.
  • @param int $timeend[optional] - время окончания обучения на курсе в формете unixtime (при наступлении этой даты пользователь булет отписан с курса)
  • @param bool $hidden[optional] - записать пользователя в скрытом режиме (он не будет отображаться в списке пользователей для учеников и учителей курса)

unenrol_from_course()

Отписывает пользователя из курса

  • возвращаемое значение: (bool)
    • true если пользователя удалось отписать
    • false если произошла ошибка
  • $mdlcourseid - id курса в Moodle с которого отписывается пользователь
  • $mdluserid - id пользователя в moodle

add_to_group()

Записывает пользователя в группу moodle

  • возвращаемое значение: (bool)
  • $mdlcourseid - id курса в Moodle в котором находится группа
  • $mdlgroupid - id группы в курсе, куда будет записываться пользователь
  • $mdluserid - id пользователя в moodle


get_cfg()

  • Краткое описание:

Позволяет обращаться к конфигурационному файлу данного плагина.

  • Логика работы:
    • Для работы требуется переменная класса для хранения массива параметров из файла, т.е. обращение в файл производится только при первой попытке.
    • Ищет конфигурационный файл (в соответствии с логикой работы dof - $this->dof->plugin_path($this->type(),$this->code(),'/cfg/cfg.php'))
    • Возвращает значение по ключу (если ключ не указан, то возвращает весь массив параметров из файла). к примеру return @$mas['a'], т.е. если нет значения, то не генерируется ошибка, а возвращается null.
  • Аргументы:
    • string[optional] $key=null Ключ в массиве, т.е. искомый параметр. Если параметр не передан, то возвращается весь массив.
  • Возвращаемое значение:
    • Параметр или null (если конфигурационный файл не найден или если параметр не найден в файле или если он найден и его значение null, это стоит учитывать)

sync_grades()

  • Краткое описание:

Синхронизирует оценки деканата и moodle (запускается кроном)

  • Логика работы:
    • Выбирает указанное в кофиге кол-во активных самых давно синхронизированных cstream`ов (отсортированных по дате последней синхронизации в порядке возрастания)
    • вернет false, если нет параметра в конфиге
    • запускает sync_cstream()
  • Аргументы:
  • Возвращаемое значение:
    • bool успешность. Если в конфиге не найдено количество cstream`ов, синхронизируемых за раз, то false. Так же false в случае, если произошла ошибка синхронизации хоть одного cstream`а

sync_cstream()

  • Краткое описание:

Синхронизирует оценки деканата и moodle по конкретному cstream`у

  • Логика работы:
    • Смотрит в дисциплине из таблицы programmitems (связанной с cstream`ом) флаг gradesyncenabled. Если false, то не синхронизируем
    • Выбирает все активные cpassed`ы для данного cstream`а
    • получает оценку с помощью метода get_scale_grade
    • Формирует и исполняет ведомость (с помощью класса, который находится в папке плагина в файле order_itog_grades.php), которая проставляет оценку в cpassed.
    • В зависимости от оценки и параметров дисциплины incjournwithoutgrade и incjournwithunsatisfgrade может не исполнить ведомость. Если передан параметр closing то в любом случае исполняет ведомость.
  • Аргументы:
    • int $cstreamid id cstream
    • bool $closing[optional] = false Если закрываем cstream (т.е. закрываем не здесь, но значит все cpassed надо обязательно проставить)
  • Возвращаемое значение:
    • bool

get_scale_grade()

  • Краткое описание:

получает оценку для указанного cpassed`а из таблиц moodle

  • Логика работы:
    • Ищет итоговую оценку курса в таблице grade_grades, id которого указан в cpassed`е. Если в дисциплине указан altgradeitem, то берет оценку из нее, т.е. из записи из grade_items с указанным id (пока для этого варианта не работает приведение оценки к шкале дисциплины ЭД)
    • С помощью метода bring_grade_to_scale оценку в шкалу для данной дисциплины деканата
  • Аргументы:
    • int|object $cpassed id cpassed`а или сам объект
    • int|object[optional] $pitem id programmitem`а или сам объект
  • Возвращаемое значение:
    • Приведенная к шкале оценка
    • false в случае ошибки
    • null - если нет оценки пока

init_logs()

  • Краткое описание:

Инициализация логов (не обязательно вызывать метод, для использования логов)

  • Логика работы:
    • Инициализирует переменную logs, которая является свойством текущего класса.
    • Если переменная уже инициализированна раннее или в конфигурационном файле не установлено или отключено ведение логов, то ничего не делает
    • Инициализация подразумевает установку:
      • формат даты для названий файлов
      • директории логов
      • базовых имен файлов. т.е. название файла логов для всех сообщений будет выглядеть так <дата в установленном формате>log.txt, а для лога с ошибками <дата в установленном формате>errorlog.txt
      • абсолютных путей к файлам логов, в которые будут писаться сообщения в данном экземпляре класса
    • Вызывает метод, устанавливающий абсолютные пути файлов логов. Если говорить кратко (лучше смотреть в коде), он ищет два файла логов (обычный и для ошибок), к которым недавно происходило обращение для записи (не более заданного в конфиге кол-ва секунд). Если не находит таких файлов, то создает новые в соответствии с заданным форматом имени.
  • Аргументы:
    • -
  • Возвращаемое значение:
    • на данный момент не предусмотрено возвращаемого значения

delete_old_logs()

  • Краткое описание:

Стирает старые логи в папке логов для данного плагина (эта директория устанавливается в init_logs)

  • Логика работы:
    • Вызывать нужно только после инициализации логов, иначе ничгео метод не сделает.
    • По заданному формату даты в названии логов ищет файлы, которые созданы более чем заданное в конфиге кол-во дней, и удаляет их.
    • Если в папке будут лишние файлы, формат названия которых не соответствует заданному, то они также могут быть удалены.
  • Аргументы:
  • Возвращаемое значение:
    • на данный момент не предусмотрено возвращаемого значения

log()

  • Краткое описание:

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

  • Логика работы:
    • Для корректной работы не требуется вызывать больше ничего, устанавливать параметры - все автоматически
    • Метод вызывает инициализацию логов
    • Пишет сообщение $message в лог для всех сообщений и если передан параметр $error, то пишет еще и в лог ошибок
  • Аргументы:
    • string $message Сообщение об ошибке
    • bool[optional] $error Если это сообщение об ошибке
  • Возвращаемое значение:
    • на данный момент не предусмотрено возвращаемого значения

log_get_str()

  • Краткое описание:

Вызывает log, но в качестве сообщения надо подавать код сообщения и параметр как в get_string()

  • Логика работы:
    • Получает сообщение используя get_string и вызывает log()
  • Аргументы:
    • string $message Сообщение об ошибке
    • mixed $a Параметры для строки из файла локализации
    • bool[optional] $error Если это сообщение об ошибке
  • Возвращаемое значение:
    • на данный момент не предусмотрено возвращаемого значения

Cron

  • Периодичность запуска
    • Значение берется из конфигурационного файла (стоит учитывать, что это происходит только при установке или обновлении плагина)
  • Что выполняется
    • sync_grades()
  • Условия запуска (нюансы, логика запуска)
    • Запускатся если в конфигурационном файле задана переменная, активирующая синхронизацию и если пониженная нагрузка системы в данный момент, иначе вернет true.

Перехватываемые события

Таблица событий, которые перехватывает этот плагин
Тип плагина Код плагина Код события Пояснение
workflow cpassed cpassed_active Событие смены статуса на активный
workflow cpassed cpassed_not_active Событие смены статуса с активного на любой другой
workflow cstreams cstreams_active Событие смены статуса на активный
workflow cstreams cstreams_passive Событие смены статуса с любого на неактивный
workflow cstreams cstreams_not_active Событие смены статуса с активного на любой другой
storage cpassed insert Событие добавления записи в справочник
storage cpassed delete Событие удаления записи из справочника
storage cstreams insert Событие добавления записи в справочник
storage cstreams update Событие обновления записи в справочнике
storage cstreams delete Событие удаления записи из справочника