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

Материал из DOF
Перейти к: навигация, поиск
(Дополнительные методы:)
(Дополнительные методы:)
Строка 16: Строка 16:
  
 
===Дополнительные методы:===
 
===Дополнительные методы:===
* '''get_checkpoints'''($id, $type, $status = 'active') - получить список контрольных точек напрямую связанных с одним объектом привязки. Сортируются по относительной дате.
+
'''get_checkpoints()'''
* '''get_checkpoints_for_cstreams'''($csid) - Получить список контрольных точек актуальных для данного учебного процесса (включая контрольные точки дисциплины и периода, с которыми связан данный учебный процесс). Сортируются по абсолютной дате, которая вычисляется как дата старта учебного процесса + относительная дата точек, привязанных к учебному процессу или точек, привязанных к дисциплине, или как дата начала учебного периода + относительная дата точек, привязанных к учебному периоду. Данные вычисления выполняются внутри sql-запроса, создается вычисляемая колонка, по которой производится сортировка.
 
* '''get_date'''($pe) - получить метку времени контрольной точки или соответствующего события. Если в данных объекта имеется событие, возвращается метка времени события, ежели события нет метка времени вычисляется как дата старта учебного процесса + относительная дата точки.
 
* '''sort_checkpoints_and_events'''($id, $type, $status='active') - получить список объединенных контрольных точек и событий отсортированных по дате события или контрольной точки.
 
  
====Планируются:====
+
Получает список контрольных точек напрямую связанных с одним объектом привязки. Сортируются по относительной дате. Данный метод возвращает только контрольные точки, напрямую привязанные к объекту, его не следует использовать для отображения полного учебно-тематического плана!
 +
 
 +
''Аргументы:''
 +
* $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()|get_date()]].
 +
#* если метку времени не получили, переходим к следующему элементу,
 +
#* если метка времени не уникальна, делаем ее уникальной.
 +
#* записываем получившуюся метку времени, как ключ массива.
 +
# соритуем массив по ключам в порядке возрастания.
 +
# возвращаем результат. 
 +
 
 +
===Планы:===

Версия 15:13, 12 августа 2009

Таблица в базе данных

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) массив объектов из таблицы.

Структура работы:

  1. находим необходимые контрольные точки.
  2. получаем масив состыкованных КТ и событий.
  3. формируем новый массив состыкованных КТ и событий, в котором индексы заменены на метки времени.
    • получаем метку времени при помощи get_date().
    • если метку времени не получили, переходим к следующему элементу,
    • если метка времени не уникальна, делаем ее уникальной.
    • записываем получившуюся метку времени, как ключ массива.
  4. соритуем массив по ключам в порядке возрастания.
  5. возвращаем результат.

Планы: