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

Материал из DOF
Перейти к: навигация, поиск
(id преподавателя, ведущего событие)
(Подробный формат полей в таблице:)
 
(не показано 20 промежуточных версий 4 участников)
Строка 1: Строка 1:
===Таблица в базе данных===
+
{{Infobox_Plugin
 +
| name = schevents
 +
| type = storages
 +
}}
 +
 
 +
=Таблица в базе данных=
 
''schevents'' - учебные события, отображенные на реальные даны. Содержит информацию о реальной дате и времени учебного события, его статусе (проведено/не проведено), собитии-замене, исходном шаблоне, подразделении, расписанию которого принадлежит события и другие.
 
''schevents'' - учебные события, отображенные на реальные даны. Содержит информацию о реальной дате и времени учебного события, его статусе (проведено/не проведено), собитии-замене, исходном шаблоне, подразделении, расписанию которого принадлежит события и другие.
  
 
====Подробный формат полей в таблице:====
 
====Подробный формат полей в таблице:====
* templateid - шаблон
+
* templateid - шаблон расписания в таблице [[Разработка:storages/schtemplates | schtemplates]]
* cstreamid - учебный поток
+
* dayid - день расписания, по которому было создано событие. Все запланированные(plan) и отложенные (postponed) события должны быть привязаны к существующим дням (то есть дняв с статусе active). Если в поле dayid стоит null - это нормальная ситуация. Она означает, что событие было создано вручную завучем, и не связано с шаблонами расписания.
 
* planid - тема урока в плане
 
* planid - тема урока в плане
* teacherid - id преподавателя по таблице persons
+
* type - тип события: обычный урок, совместный урок(например, учитель ведет свой обычный урок и параллельно ведет урок по совмещению от заболевшего учителя), бесплатный урок (например, учитель химии ведет урок химии, который связан и с биологией, при этом в журнале "биологии" отмечается бесплатный урок, который учитель биологии не вел, но тема пройдена), интегрированный урок (например, учитель географии приглашает на свой урок учителя информатики для занятия в ГИС, при этом урок записывается и в журнал информатики и преподаватель информатики получает за него деньги; при этом "итегрированным" считается только урок информатики, а географии - обычный).
* dayid - день расписания, по которому было создано событие
+
* joinid - id обычного урока, к которому присоединяется "бесплатный" , "совместный" или "интегрированный" либо 0
* type - тип события
+
* cstreamid - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]]
 +
* teacherid - '''БОЛЬШЕ НЕ ИСПОЛЬЗУЕТСЯ''' id преподавателя в таблице [[Разработка:storages/persons | persons ]]
 
* date - дата и время начала события по UTC
 
* date - дата и время начала события по UTC
* duration - продолжительность события
+
* duration - продолжительность события в секундах
 
* place - место проведения события (текстовое поле)
 
* place - место проведения события (текстовое поле)
 
* replaceid - id события, которое заменяется данным событием
 
* replaceid - id события, которое заменяется данным событием
* status - список статусов указан в одноименном плагине рабочих процессов [[Разработка:workflows/schevents |schevents  ]]  
+
* status - список статусов указан в одноименном плагине рабочих процессов [[Разработка:workflows/schevents |schevents  ]]
 +
* form - форма урока (очно/дистанционно)
 +
* appointmentid - назначение на должность, в рамках которого проходит урок (таблица[[Разработка:storages/persons | appointments ]])
 +
* ahours - продолжительность урока в академических часах
 +
* rhours - продолжительность в условных часах, рассчитанная по формуле(ahours * programmitem.salfactor * programmsbcs.salfactor * schtemplates.salfactor * конфиг.поправаподразделения * конфиг.поправкапоколичествуучеников * cstreams.salfactor + ahours * cstreams.substsalfactor)
 +
* salfactor - применяемый итоговый коэффициент (вычисляется как один час, к которому применены все действующие для данного урока поправочные коэффициенты или один замещающий)
 +
* salfactorparts - сериализованный объект с полями: $obj->vars-> значения всех действующих на момент расчета коэффициентов, $obj->formula - формула расчета
 +
* url - ссылка на занятие (текстовое поле формата url)
 +
 
 +
=Дополнительные методы:=
 +
 
 +
===='''replace_events($eventid, $date)'''====
 +
 
 +
Формирует замену для события событием.
 +
 
 +
''Аргументы:''
 +
* $eventid(int) - id события, для которого формируется замена.
 +
* $data(int) - дата, на которую переносится событие
 +
''Возвращаемые значения:''
 +
* (bool) true в случае успеха или false если обновление не удалось.
 +
''Структура работы:''
 +
 
 +
В поле replaceid заменяемого события записываем id события, которое будет его заменять и обновляем запись в таблице БД.
 +
 
 +
===='''delete_events($date=null)'''====
 +
 
 +
Удаляет все события дня.
 +
 
 +
''Аргументы:''
 +
* $date - день, для которого надо удалить все события, по умолчанию - текущий день (null).
 +
''Возвращаемые значения:''
 +
* (bool) true если все записи удалились и false в остальных случаях
 +
''Структура работы:''
 +
# если метка времени не указана, устанавливаем текущую метку времени.
 +
# формируем метку времени начала дня.
 +
# получаем все существующие события.
 +
# для каждого события проверяем, если метка времени события попадает в промежуток даты начала дня и даты конца дня, то удаляем событие.
 +
# возвращаем результат.
 +
 
 +
===='''get_cstream_events(csid, $status=null, $begin=null, $end=null)'''====
  
===Дополнительные методы:===
+
Получает список событий для учебного потока.
* Сформировать замену для события событием.
 
* Удалить все события дня
 
* Получить список событий для учебного потока (необязательные параметры - дата начала и окончания, статус)
 
* Получить список событий, принадлежащих структурному подразделению с даты по дату (необязательный параметр - статус, по умолчанию - все)
 
* Получить список событий для преподавателя (необязательные параметры - дата начала и окончания, статус)
 
  
====Планируются:====
+
''Аргументы:''
 +
* $csid(int) - id учебного потока в таблице [[Разработка:storages/cstreams | cstreams ]].
 +
* $status(string) - статус учебного процесса, по умолчанию - все (null).
 +
* $begin(int) - дата начала события, по умолчанию - все (null).
 +
* $end(int) - дата окончания события, по умолчанию - все (null).
 +
''Возвращаемые значения:''
 +
* (array) события для учебного потока.
 +
* (bool) false если события не найдены.
 +
''Структура работы:''
 +
* формируем SQL-запрос и возвращаем список событий:
 +
** если указываются даты начала и окончания - события в указанный промежуток,
 +
** если даты начала и окончания не указываются или указываются как null- события в любой день.
 +
** если указывается статус - группы с указанным статусом,
 +
** если статус не указывается или указывается как null - события с любым статусом.
 +
 
 +
===='''get_teacher_events($tcid, $status=null, $begin=null, $end=null)'''====
 +
 
 +
Получает список событий для преподавателя.
 +
 
 +
''Аргументы:''
 +
* $tcid(int) - id преподавателя в таблице [[Разработка:storages/persons | persons ]].
 +
* $status(string) - статус учебного процесса, по умолчанию - все (null).
 +
* $begin(int) - дата начала события, по умолчанию - все (null).
 +
* $end(int) - дата окончания события, по умолчанию - все (null).
 +
''Возвращаемые значения:''
 +
* (array) события для учебного потока.
 +
* (bool) false если события не найдены.
 +
''Структура работы:''
 +
# находим все учебные потоки для преподавателя.
 +
# для каждого учебного потока находим его события и заносим в массив.
 +
# возвращаем резальтат.
 +
 
 +
===='''get_department_events($dpid, $status=null, $begin=null, $end=null)'''====
 +
 
 +
Получает список событий, принадлежащих структурному подразделению.
 +
 
 +
''Аргументы:''
 +
* $dpid(int) - id структурного подразделения в таблице [[Разработка:storages/departments | departments ]].
 +
* $status(string) - статус учебного процесса, по умолчанию - все (null).
 +
* $begin(int) - дата начала события, по умолчанию - все (null).
 +
* $end(int) - дата окончания события, по умолчанию - все (null).
 +
''Возвращаемые значения:''
 +
* (array) события для учебного потока.
 +
* (bool) false если события не найдены.
 +
''Структура работы:''
 +
# находим все учебные потоки для подразделения.
 +
# для каждого учебного потока находим его события и заносим в массив.
 +
# возвращаем резальтат.
 +
 
 +
===='''get_pevent($point, $event)'''====
 +
 
 +
Состыковывает контрольную точку с событием.
 +
 
 +
''Аргументы:''
 +
* $point(obj) - контрольная точка
 +
* $event(obj) - событие
 +
''Возвращаемые значения:''
 +
* (obj) - cостыкованную запись
 +
 
 +
===='''get_pointevents($point, $cstreamid = null, $cancel_event = false)'''====
 +
 
 +
Получает массив состыкованных записей контрольной точки с ее событиями.
 +
 
 +
''Аргументы:''
 +
* $point(obj) - контрольная точка
 +
* $cstreamid - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]]
 +
* $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false
 +
''Возвращаемые значения:''
 +
* (array) - список состыкованных записей
 +
 
 +
===='''get_points_and_events($plans, $cstreamid, $cancel_event = false )'''====
 +
 
 +
Получает массив состыкованных записей контрольных точек с их событиями.
 +
 
 +
''Аргументы:''
 +
* $plans(array) - массив записей контрольных точек
 +
* $cstreamid(int) - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]]
 +
* $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false
 +
''Возвращаемые значения:''
 +
* (array) - список состыкованных записей
 +
 
 +
===='''canceled_event($eventid, $cancel_all = false)'''====
 +
 
 +
Отменяет урок.
 +
 
 +
''Аргументы:''
 +
* $eventid(int) - id урока
 +
* $cancel_all(bool) - отменить все события: true - все, включая замененные, по умолчанию false
 +
''Возвращаемые значения:''
 +
* (bool) true - если удалось отменить, false - иначе
 +
 
 +
===='''get_replace_event($eventid)'''====
 +
 
 +
Находит последнюю замену для события.
 +
 
 +
''Аргументы:''
 +
* $eventid(int) - id события для которого ищем замену
 +
''Возвращаемые значения:''
 +
* int|bool - id замененного события или false
 +
 
 +
===='''get_plansid_anchored_day($date = null)'''====
 +
 
 +
Возвращает массив id КТ уроков для указанного дня.
 +
 
 +
''Аргументы:''
 +
* $date(int) - день, по котором надо сделать выборку, если не указано, то текущий день, по умолчанию null
 +
''Возвращаемые значения:''
 +
* array|bool - массив id или false - если ничего не найдено
 +
 
 +
===='''get_listing($limitfrom = null, $limitnum = null, $conds=null, $countonly=false)'''====
 +
 
 +
Возвращает список событий по заданным критериям
 +
 
 +
''Аргументы:''
 +
* $limitfrom(int) - начиная с какой записи просматривается фрагмент списка записей, по умолчанию null
 +
* $limitnum(int) - сколько записей нужно извлечь из базы, по умолчанию null
 +
* $conds(obj) - объект со списком свойств, по которым будет происходить поиск, по умолчанию null
 +
* $countonly(obj) - только вернуть количество записей по указанным условиям, по умолчанию false
 +
''Возвращаемые значения:''
 +
* array массив записей из базы, или false в случае ошибки
 +
 
 +
===='''get_select_listing($inputconds)'''====
 +
 
 +
Возвращает фрагмент sql-запроса после слова WHERE
 +
 
 +
''Аргументы:''
 +
* $inputconds(obj) - список полей с условиями запроса в формате "поле_БД->значение"
 +
''Возвращаемые значения:''
 +
* string
 +
 
 +
===Планы:===
 +
====Дополнительные методы:====
 
* Создать событие на день по объекту шаблона расписания
 
* Создать событие на день по объекту шаблона расписания
 
* Получить статистику событий по структурному подразделению
 
* Получить статистику событий по структурному подразделению
Строка 28: Строка 199:
 
* Получить статистику событий по учебному процессу
 
* Получить статистику событий по учебному процессу
 
* Получить статистику событий с участием студента
 
* Получить статистику событий с участием студента
 +
 +
=События=
 +
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
 +
====Перехватываемые события====
 +
{| border="1"
 +
|+ Таблица событий, которые перехватывает этот плагин
 +
! Тип плагина
 +
! Код плагина
 +
! Код события
 +
! Доп. данные
 +
! Пояснение
 +
|-
 +
|colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''
 +
|}
 +
====Генерируемые события====
 +
{| border="1"
 +
|+ Таблица событий, которые генерирует этот плагин
 +
! Тип плагина
 +
! Код плагина
 +
! Код события
 +
! Доп. данные
 +
! Пояснение
 +
|-
 +
|storage
 +
|schevents
 +
|insert
 +
|Массив, содержащий в поле "new" объект с данными для вставки в таблицу.
 +
''Пример:'' array('new' => $dataobject)
 +
|Генерируется каждый раз при вставке новой записи в таблицу schevents.
 +
|-
 +
|storage
 +
|schevents
 +
|update
 +
|Массив, содержащий в поле "new" обновленный объект, и в поле "old" объект со старыми данными, до обновления записи.
 +
''Пример:'' array('old' => $dataobject_old, 'new' => $dataobject_new)
 +
|Генерируется каждый раз при обновлении записи в таблице schevents.
 +
|-
 +
|storage
 +
|schevents
 +
|delete
 +
|Массив, содержащий в поле "old" объект с данными, которые удаляются из таблицы
 +
''Пример:'' array('old' => $dataobject)
 +
|Генерируется каждый раз при удалении записи из таблицы schevents.
 +
|}
 +
 +
=Задания=
 +
 +
{| border="1"
 +
|+ Таблица заданий, которые выполняет этот плагин
 +
! Код задания
 +
! Дополнительный параметр
 +
! Пояснение
 +
|-
 +
|delete_broken_events
 +
|Необязателен. Указывается дата, с которой ищутся занятия, если не указан по-умолчанию выбираются все.
 +
|Находит все запланированные и отложенные занятия привязанные к дням начиная с указанной даты. Отменяет те события, чьи дни были удалены или отсутствуют в БД.
 +
|}
 +
 +
[[Категория:Плагины обработки todo | storages/schevents]]

Текущая версия на 12:46, 13 сентября 2018

Плагин
Название schevents
Тип storages


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

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

Подробный формат полей в таблице:

  • templateid - шаблон расписания в таблице schtemplates
  • dayid - день расписания, по которому было создано событие. Все запланированные(plan) и отложенные (postponed) события должны быть привязаны к существующим дням (то есть дняв с статусе active). Если в поле dayid стоит null - это нормальная ситуация. Она означает, что событие было создано вручную завучем, и не связано с шаблонами расписания.
  • planid - тема урока в плане
  • type - тип события: обычный урок, совместный урок(например, учитель ведет свой обычный урок и параллельно ведет урок по совмещению от заболевшего учителя), бесплатный урок (например, учитель химии ведет урок химии, который связан и с биологией, при этом в журнале "биологии" отмечается бесплатный урок, который учитель биологии не вел, но тема пройдена), интегрированный урок (например, учитель географии приглашает на свой урок учителя информатики для занятия в ГИС, при этом урок записывается и в журнал информатики и преподаватель информатики получает за него деньги; при этом "итегрированным" считается только урок информатики, а географии - обычный).
  • joinid - id обычного урока, к которому присоединяется "бесплатный" , "совместный" или "интегрированный" либо 0
  • cstreamid - учебный поток в таблице cstreams
  • teacherid - БОЛЬШЕ НЕ ИСПОЛЬЗУЕТСЯ id преподавателя в таблице persons
  • date - дата и время начала события по UTC
  • duration - продолжительность события в секундах
  • place - место проведения события (текстовое поле)
  • replaceid - id события, которое заменяется данным событием
  • status - список статусов указан в одноименном плагине рабочих процессов schevents
  • form - форма урока (очно/дистанционно)
  • appointmentid - назначение на должность, в рамках которого проходит урок (таблица appointments )
  • ahours - продолжительность урока в академических часах
  • rhours - продолжительность в условных часах, рассчитанная по формуле(ahours * programmitem.salfactor * programmsbcs.salfactor * schtemplates.salfactor * конфиг.поправаподразделения * конфиг.поправкапоколичествуучеников * cstreams.salfactor + ahours * cstreams.substsalfactor)
  • salfactor - применяемый итоговый коэффициент (вычисляется как один час, к которому применены все действующие для данного урока поправочные коэффициенты или один замещающий)
  • salfactorparts - сериализованный объект с полями: $obj->vars-> значения всех действующих на момент расчета коэффициентов, $obj->formula - формула расчета
  • url - ссылка на занятие (текстовое поле формата url)

Дополнительные методы:

replace_events($eventid, $date)

Формирует замену для события событием.

Аргументы:

  • $eventid(int) - id события, для которого формируется замена.
  • $data(int) - дата, на которую переносится событие

Возвращаемые значения:

  • (bool) true в случае успеха или false если обновление не удалось.

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

В поле replaceid заменяемого события записываем id события, которое будет его заменять и обновляем запись в таблице БД.

delete_events($date=null)

Удаляет все события дня.

Аргументы:

  • $date - день, для которого надо удалить все события, по умолчанию - текущий день (null).

Возвращаемые значения:

  • (bool) true если все записи удалились и false в остальных случаях

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

  1. если метка времени не указана, устанавливаем текущую метку времени.
  2. формируем метку времени начала дня.
  3. получаем все существующие события.
  4. для каждого события проверяем, если метка времени события попадает в промежуток даты начала дня и даты конца дня, то удаляем событие.
  5. возвращаем результат.

get_cstream_events(csid, $status=null, $begin=null, $end=null)

Получает список событий для учебного потока.

Аргументы:

  • $csid(int) - id учебного потока в таблице cstreams .
  • $status(string) - статус учебного процесса, по умолчанию - все (null).
  • $begin(int) - дата начала события, по умолчанию - все (null).
  • $end(int) - дата окончания события, по умолчанию - все (null).

Возвращаемые значения:

  • (array) события для учебного потока.
  • (bool) false если события не найдены.

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

  • формируем SQL-запрос и возвращаем список событий:
    • если указываются даты начала и окончания - события в указанный промежуток,
    • если даты начала и окончания не указываются или указываются как null- события в любой день.
    • если указывается статус - группы с указанным статусом,
    • если статус не указывается или указывается как null - события с любым статусом.

get_teacher_events($tcid, $status=null, $begin=null, $end=null)

Получает список событий для преподавателя.

Аргументы:

  • $tcid(int) - id преподавателя в таблице persons .
  • $status(string) - статус учебного процесса, по умолчанию - все (null).
  • $begin(int) - дата начала события, по умолчанию - все (null).
  • $end(int) - дата окончания события, по умолчанию - все (null).

Возвращаемые значения:

  • (array) события для учебного потока.
  • (bool) false если события не найдены.

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

  1. находим все учебные потоки для преподавателя.
  2. для каждого учебного потока находим его события и заносим в массив.
  3. возвращаем резальтат.

get_department_events($dpid, $status=null, $begin=null, $end=null)

Получает список событий, принадлежащих структурному подразделению.

Аргументы:

  • $dpid(int) - id структурного подразделения в таблице departments .
  • $status(string) - статус учебного процесса, по умолчанию - все (null).
  • $begin(int) - дата начала события, по умолчанию - все (null).
  • $end(int) - дата окончания события, по умолчанию - все (null).

Возвращаемые значения:

  • (array) события для учебного потока.
  • (bool) false если события не найдены.

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

  1. находим все учебные потоки для подразделения.
  2. для каждого учебного потока находим его события и заносим в массив.
  3. возвращаем резальтат.

get_pevent($point, $event)

Состыковывает контрольную точку с событием.

Аргументы:

  • $point(obj) - контрольная точка
  • $event(obj) - событие

Возвращаемые значения:

  • (obj) - cостыкованную запись

get_pointevents($point, $cstreamid = null, $cancel_event = false)

Получает массив состыкованных записей контрольной точки с ее событиями.

Аргументы:

  • $point(obj) - контрольная точка
  • $cstreamid - учебный поток в таблице cstreams
  • $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false

Возвращаемые значения:

  • (array) - список состыкованных записей

get_points_and_events($plans, $cstreamid, $cancel_event = false )

Получает массив состыкованных записей контрольных точек с их событиями.

Аргументы:

  • $plans(array) - массив записей контрольных точек
  • $cstreamid(int) - учебный поток в таблице cstreams
  • $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false

Возвращаемые значения:

  • (array) - список состыкованных записей

canceled_event($eventid, $cancel_all = false)

Отменяет урок.

Аргументы:

  • $eventid(int) - id урока
  • $cancel_all(bool) - отменить все события: true - все, включая замененные, по умолчанию false

Возвращаемые значения:

  • (bool) true - если удалось отменить, false - иначе

get_replace_event($eventid)

Находит последнюю замену для события.

Аргументы:

  • $eventid(int) - id события для которого ищем замену

Возвращаемые значения:

  • int|bool - id замененного события или false

get_plansid_anchored_day($date = null)

Возвращает массив id КТ уроков для указанного дня.

Аргументы:

  • $date(int) - день, по котором надо сделать выборку, если не указано, то текущий день, по умолчанию null

Возвращаемые значения:

  • array|bool - массив id или false - если ничего не найдено

get_listing($limitfrom = null, $limitnum = null, $conds=null, $countonly=false)

Возвращает список событий по заданным критериям

Аргументы:

  • $limitfrom(int) - начиная с какой записи просматривается фрагмент списка записей, по умолчанию null
  • $limitnum(int) - сколько записей нужно извлечь из базы, по умолчанию null
  • $conds(obj) - объект со списком свойств, по которым будет происходить поиск, по умолчанию null
  • $countonly(obj) - только вернуть количество записей по указанным условиям, по умолчанию false

Возвращаемые значения:

  • array массив записей из базы, или false в случае ошибки

get_select_listing($inputconds)

Возвращает фрагмент sql-запроса после слова WHERE

Аргументы:

  • $inputconds(obj) - список полей с условиями запроса в формате "поле_БД->значение"

Возвращаемые значения:

  • string

Планы:

Дополнительные методы:

  • Создать событие на день по объекту шаблона расписания
  • Получить статистику событий по структурному подразделению
  • Получить статитстику событий по преподавателю
  • Получить статистику событий по учебному процессу
  • Получить статистику событий с участием студента

События

В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.

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

Таблица событий, которые перехватывает этот плагин
Тип плагина Код плагина Код события Доп. данные Пояснение
Этот плагин не перехватывает никаких событий

Генерируемые события

Таблица событий, которые генерирует этот плагин
Тип плагина Код плагина Код события Доп. данные Пояснение
storage schevents insert Массив, содержащий в поле "new" объект с данными для вставки в таблицу.

Пример: array('new' => $dataobject)

Генерируется каждый раз при вставке новой записи в таблицу schevents.
storage schevents update Массив, содержащий в поле "new" обновленный объект, и в поле "old" объект со старыми данными, до обновления записи.

Пример: array('old' => $dataobject_old, 'new' => $dataobject_new)

Генерируется каждый раз при обновлении записи в таблице schevents.
storage schevents delete Массив, содержащий в поле "old" объект с данными, которые удаляются из таблицы

Пример: array('old' => $dataobject)

Генерируется каждый раз при удалении записи из таблицы schevents.

Задания

Таблица заданий, которые выполняет этот плагин
Код задания Дополнительный параметр Пояснение
delete_broken_events Необязателен. Указывается дата, с которой ищутся занятия, если не указан по-умолчанию выбираются все. Находит все запланированные и отложенные занятия привязанные к дням начиная с указанной даты. Отменяет те события, чьи дни были удалены или отсутствуют в БД.