Разработка:sync/courseenrolment — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(API)
(Добавлены методы синхронизации оценок)
Строка 35: Строка 35:
 
* $mdlgroupid - id группы в курсе, куда будет записываться пользователь
 
* $mdlgroupid - id группы в курсе, куда будет записываться пользователь
 
* $mdluserid - id пользователя в moodle
 
* $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 - если нет оценки пока

Версия 15:54, 21 апреля 2011

Плагин
Название courseenrolments
Тип 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 - если нет оценки пока