Разработка:storages/plans
Содержание
Таблица в базе данных
plans - темы в учебном плане и контрольные точки внутри учебной дисциплины/предмета, предусмотренные учебным планом курса.
Подробный формат полей в таблице:
- linkid - связь с учебным периодом, учебной программой, дисциплиной или учебным процессом
- linktype - тип связи (ages, programmitems, cstreams)
- parentid - id родительской контрольной точки, если она наследовалась от стандартной темы в плане (модификация или дубль), либо id основной контрольной точки, если оценка является "дополнительной" (статус "дополнительная" - при этом тема не отображается в плане отдельной строкой, а только в подробной информации про основную тему, если основная тема наследуется, то и все дополнительные наследуются), по умолчанию - 0
- name - название контрольной точки или темы занятия
- reldate - относительная дата сдачи в секундах от начала учебного процесса, периода.
- reldldate - относительная дата последнего срока сдачи в секундах от начала учебного процесса, периода. Может совпадать с reldate.
- scale - диапазон или перечисленные через запятую возможные оценки, пустая строка если оценка не предусмотрена
- type - тип события (очный урок/лекция, дистанционный урок/лекция, семинар, лабораторная работа, практическая работа, контрольная работа, промежуточная атестация)
- typesync - тип синхронизации (выставление вручную, синхронизация с moodle)
- mdlinstance - id задания в moodle для синхронизации
- status - список статусов указан в одноименном плагине рабочих процессов plans
Дополнительные методы:
get_checkpoints()
Получает список контрольных точек напрямую связанных с одним объектом привязки. Сортируются по относительной дате. Данный метод возвращает только контрольные точки, напрямую привязанные к объекту, его не следует использовать для отображения полного учебно-тематического плана!
Аргументы:
- $id(int) - id элемента, к которому привязана контрольная точка.
- $type(string) - тип элемента, к которому привязана контрольная точка. (ages, programmitems, cstreams).
- $status(string) - статус контрольной точки, по умолчанию - действующая(active).
Возвращаемые значения:
- (array) массив объектов из таблицы.
- (bool) false если контрольные точки не найдены.
Структура работы:
- формируем SQL-запрос и возвращаем список КТ:
- если указывается статус - КТ с указанным статусом,
- если статус указывается null - КТ с любим статусом,
- если статус не указывается - КТ со статусом active.
get_checkpoints_for_cstreams()
Получает список контрольных точек актуальных для данного учебного процесса (включая контрольные точки дисциплины и периода, с которыми связан данный учебный процесс). Сортируются по абсолютной дате, которая вычисляется как дата старта учебного процесса + относительная дата точек, привязанных к учебному процессу или точек, привязанных к дисциплине, или как дата начала учебного периода + относительная дата точек, привязанных к учебному периоду.
Аргументы:
- $csid - id учебного процесса.
Возвращаемые значения:
- (array) массив объектов из таблицы.
- (bool) false если контрольные точки не найдены.
Структура работы:
- формируем SQL-запрос:
- по данному id находим учебный процесс.
- формируем условие выборки.
- по id периода из учебного находим учебный период.
- если период существует, добавляем его в условие выборки и формируем дополнительную колонку содержащюю абсолютную дату для каждой КТ,
- если периода нет, формируем дополнительную колонку без учета периода.
- возвращаем список КТ по SQL-запросу.
get_date()
Получает метку времени контрольной точки или соответствующего события. Приватный метод.
Аргументы:
- $pe() - объект контрольной точки.
Возвращаемые значения:
- (int) время контрольной точки.
- (bool) false если ни одной метки времени найдено не было.
Структура работы:
- если у КТ есть событие, возвращаем метку времени события.
- если у КТ события нет, то вернем метку времени по абсолютной дате (дата старта типа элемента + относительная дата точки)
- если у КТ нет элемента по типу связи или у элемента нет даты старта, то метку времени вернуть нельзя.
sort_checkpoints_and_events()
Получает список объединенных контрольных точек и событий отсортированных по дате события или контрольной точки.
Аргументы:
- $id(int) - id элемента, к которому привязана контрольная точка.
- $type(string) - тип элемента, к которому привязана контрольная точка. (ages, programmitems, cstreams).
- $status(string) - статус контрольной точки, по умолчанию - действующая(active).
Возвращаемые значения:
- (array) массив объектов из таблицы.
Структура работы:
- находим необходимые контрольные точки.
- получаем масив состыкованных КТ и событий.
- формируем новый массив состыкованных КТ и событий, в котором индексы заменены на метки времени.
- получаем метку времени при помощи get_date().
- если метку времени не получили, переходим к следующему элементу,
- если метка времени не уникальна, делаем ее уникальной.
- записываем получившуюся метку времени, как ключ массива.
- соритуем массив по ключам в порядке возрастания.
- возвращаем результат.