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

Материал из DOF
Перейти к: навигация, поиск
м
 
(не показано 8 промежуточных версий 4 участников)
Строка 5: Строка 5:
 
=Таблица в базе данных=
 
=Таблица в базе данных=
 
''programmitems'' - элементы учебной программы - учебные дисциплины/предметы.  
 
''programmitems'' - элементы учебной программы - учебные дисциплины/предметы.  
 +
Создание связного курса в Moodle происходит по событиям добавления/обновления дисциплины через плагин sync/mcourses.
  
 
====Подробный формат полей в таблице:====
 
====Подробный формат полей в таблице:====
Строка 22: Строка 23:
 
** ''free'' - по выбору
 
** ''free'' - по выбору
 
* required - обязательный курс (0/1) На основании этого поля ориентируемся, нужно ли обязательно подписывать или нет, а предыдущий больше информационный. Например, даже обязательный курс, который планируется разделить на подгруппы может не требовать автоматической подписки.
 
* required - обязательный курс (0/1) На основании этого поля ориентируемся, нужно ли обязательно подписывать или нет, а предыдущий больше информационный. Например, даже обязательный курс, который планируется разделить на подгруппы может не требовать автоматической подписки.
* maxcredit - максимальное количество "кредитов", получаемое за прохождение дисциплины
+
* maxcredit - зачетные единицы трудоемкости (максимальное количество кредитов за курс, ЗЕТ)
 
* maxduration - максимальная продолжительность курса от начальной подписки (в секундах). Если не установлено - продолжительность неограничена.  Учебные потоки  всегда завершается автоматически с закрытием учебного периода, к которому они относятся.
 
* maxduration - максимальная продолжительность курса от начальной подписки (в секундах). Если не установлено - продолжительность неограничена.  Учебные потоки  всегда завершается автоматически с закрытием учебного периода, к которому они относятся.
* hours - количество часов, отведенное на дисциплину (отобразиться в индивидуальной ведомости рядом с названием и оценкой)
+
* hours - часов всего
* hourstheory - часов теории
+
* hourstheory - часов лекций (Лек)
* hourspractice - часов практики
+
* hourspractice - часов практики (Пр)
 
* eduweeks - количество учебных недель/циклов (каждая соответствует одному циклу в расписании) продолжительности курса, если не указано, учебные процессы наследуют из ages.
 
* eduweeks - количество учебных недель/циклов (каждая соответствует одному циклу в расписании) продолжительности курса, если не указано, учебные процессы наследуют из ages.
 
* instrlevelid - id уровня компоненты -  
 
* instrlevelid - id уровня компоненты -  
Строка 55: Строка 56:
 
* incjournwithunsatisfgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов имеющих неудовлетворительные оценки
 
* incjournwithunsatisfgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов имеющих неудовлетворительные оценки
 
* altgradeitem - id из grades_items (если не указано, то при синхронизации оценок берется оценка из итоговой оценки курса, который указан в mdlcourse)
 
* altgradeitem - id из grades_items (если не указано, то при синхронизации оценок берется оценка из итоговой оценки курса, который указан в mdlcourse)
 +
* metasyncon - включена ли синхронизация с метадисциплиной
 +
* metaprogrammitemid - id метадисциплины для синхронизации
 +
* billingtext - цена дисциплины
 +
* billingrules -
 +
* salfactor - поправочный зарплатный коэффициент
 +
* hourslab - часов лабораторных (Лаб)
 +
* hoursind - часов самостоятельной работы слушателя (СРС)
 +
* hourscontrol - часов контроля (Контроль)
 +
* autohours (0/1) - "Автоматически расчитывать количества Часов всего" (галочка рядом с полем "Часов всего"). Если установлена, при сохранении, в поле hours записывается сумма: hourstheory+hourslab+hourspractice+hoursind+hourscontrol
 +
* hoursclassroom - часов аудиторных - поле отображается, но не редактируется. При сохранении автоматически вычисляется как сумма: hourstheory+hourslab+hourspractice
 +
* verificationrequested - запрошено согласование мастер-курса (ожидание проверки)
 +
* coursetemplateversion - версия шаблона курса, соответствующая имени файла с резервной копией
 +
* courselinktype - тип связи с курсом moodle (прямая подписка или клонирование)
  
 
=Дополнительные методы:=
 
=Дополнительные методы:=
Строка 167: Строка 181:
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
 
* bool (true - если поток удачно завершен и false в остальных случаях)
 
* bool (true - если поток удачно завершен и false в остальных случаях)
 +
 +
===='''get_hours_sum($programmitemids)'''====
 +
 +
Получить суммарное количество часов и ЗЕТ по нескольким предметам
 +
 +
''Аргументы:''
 +
* (array) $programmitemids - массив id из таблицы programmitems
 +
* (int) $id - id дисциплины
 +
''Возвращаемые значения:''
 +
* (bool) - false в случае ошибки
 +
* (object) - или объект с полями:
 +
** ->maxcredit
 +
** ->hours
 +
** ->hourstheory
 +
** ->hourspractice
 +
** ->hoursweek
 +
** ->hourslab
 +
** ->hoursind
 +
** ->hourscontrol
 +
** ->hoursclassroom
  
 
===Планы:===
 
===Планы:===
  
 +
 +
=Права=
 +
{| border="1"
 +
|+ Таблица прав, объявленных данным плагином
 +
! Код права
 +
! Описание
 +
|-
 +
|view
 +
|
 +
|-
 +
|edit
 +
|
 +
|-
 +
|create
 +
|
 +
|-
 +
|delete
 +
|
 +
|-
 +
|use
 +
|
 +
|-
 +
|edit:mdlcourse
 +
|
 +
|-
 +
|view/meta
 +
|
 +
|-
 +
|edit/meta
 +
|
 +
|-
 +
|create/meta
 +
|
 +
|-
 +
|delete/meta
 +
|
 +
|-
 +
|use/meta
 +
|
 +
|-
 +
|edit:verificationrequested
 +
|Отправлять мастер-курсы на проверку
 +
|-
 +
|benotified:edit:coursetemplateversion
 +
|Получать уведомления о результатах проверки мастер-курса
 +
|-
 +
|edit:coursetemplateversion
 +
|Согласовывать (одобрять/отклонять) версию мастер-курса
 +
|-
 +
|benotified:edit:verificationrequested
 +
|Получать уведомления о новых запросах на проверку мастер-курса
 +
|-
 +
|view:mastercourse
 +
|Видеть ссылку на мастер-курс
 +
|}
 
=События=
 
=События=
 
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
 
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
Строка 183: Строка 272:
 
  |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''
 
  |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''
 
  |}
 
  |}
 +
 
====Генерируемые события====
 
====Генерируемые события====
 
{| border="1"
 
{| border="1"
Строка 212: Строка 302:
 
''Пример:'' array('old' => $dataobject)
 
''Пример:'' array('old' => $dataobject)
 
  |Генерируется каждый раз при удалении записи из таблицы programmitems.
 
  |Генерируется каждый раз при удалении записи из таблицы programmitems.
 +
|}
 +
 +
=Задания=
 +
 +
{| border="1"
 +
|+ Таблица заданий, которые выполняет этот плагин
 +
! Код задания
 +
! Дополнительный параметр
 +
! Пояснение
 +
|-
 +
|change_mcourse_in_programmitem
 +
|Обязателен. Указывается id дисциплины. В mixedvar необходим параметр mdlcourse.
 +
|'''Только для внутреннего использования системой'''. Находит все активные подписки на дисциплины в указанной дисциплине, после чего каждую из них приостанавливает. Меняет курс Moodle в дисциплине. Возобновляет приостановленные подписки. Посылается из формы смены курса Moodle на странице просмотра дисциплины.
 +
|}
 +
 +
[[Категория:Плагины обработки todo | storages/programmitems]]
 +
 +
 +
=Периодические задания=
 +
{| border="1"
 +
|+ Таблица периодических заданий, которые выполняет этот плагин
 +
! Метод, выполняющий периодическое задание
 +
! Параметры
 +
! Пояснение
 +
! Режим нагрузки
 +
|-
 +
|check_deleted_courses
 +
|Без параметров
 +
|Поиск дисциплин с удаленным курсами, отвязка удаленных курсов от дисциплин
 +
|loan=2
 
  |}
 
  |}

Текущая версия на 11:40, 2 марта 2018

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


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

programmitems - элементы учебной программы - учебные дисциплины/предметы. Создание связного курса в Moodle происходит по событиям добавления/обновления дисциплины через плагин sync/mcourses.

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

  • programmid - учебная программа в таблице programms
  • agenum - номер учебного периода, от начала обучения по программе на который назначена дисциплина. Для необязательных дисциплин возможен 0, тогда студент может "взять" дисциплину в любом семестре.
  • courseclsid - id по таблице coursecls (таблица пока не предусмотрена), предназначен для объединения однородных дисциплин. Однородность дисциплин может быть четырех уровней (записываются внутри таблицы coursecls):
    • 1 - одинаковые дисциплины изучаемые в составе различных учебных программ,
    • 2 - разные ступени изучения одной дисциплины,
    • 3 - дисциплины, относящиеся к одной науке,
    • 4 - категории (общественные, естественные, технические). Сама таблица coursecls пока не реализована, а поле зарезервировано на будущее.
  • name - название дисциплины (текстовое поле)
  • code - код дисциплины (текстовое поле, необязательное, при указании проверяется уникальность). Если код не указан - то вместо него подставляется id записи.
  • mdlcourse - id курса в moodle
  • type - тип предмета:
    • required- обязательный
    • recommended - рекомендованный
    • free - по выбору
  • required - обязательный курс (0/1) На основании этого поля ориентируемся, нужно ли обязательно подписывать или нет, а предыдущий больше информационный. Например, даже обязательный курс, который планируется разделить на подгруппы может не требовать автоматической подписки.
  • maxcredit - зачетные единицы трудоемкости (максимальное количество кредитов за курс, ЗЕТ)
  • maxduration - максимальная продолжительность курса от начальной подписки (в секундах). Если не установлено - продолжительность неограничена. Учебные потоки всегда завершается автоматически с закрытием учебного периода, к которому они относятся.
  • hours - часов всего
  • hourstheory - часов лекций (Лек)
  • hourspractice - часов практики (Пр)
  • eduweeks - количество учебных недель/циклов (каждая соответствует одному циклу в расписании) продолжительности курса, если не указано, учебные процессы наследуют из ages.
  • instrlevelid - id уровня компоненты -
    • 1 - федеральная,
    • 2 - региональная,
    • 3 - учебного заведения,
    • 4 - кафедры
  • gradelevel - уровень оценки
    • notused - оценка не идет в кондуит
    • discipline - дисциплина
    • coursework - курсовая работа
    • practice - практика
    • finalexam - междисциплинарный экзамен
    • diplom - дипломная работа
  • scale - диапазон или перечисленные через запятую возможной итоговой оценки, пустая строка если оценка не предусмотрена. Оценка может быть и дробной. Диапазон задается двумя числами через дефис: худшая_оценка_-_лучшая_оценка_. Например 5-1. 5 - самый плохой балл. 1 - самый лучший. Если задается не диапазон, а интервал, то оценки перечисляются через запятую: 5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1.
  • mingrade - минимальная (для диапазона) или начальная слева-направа начиная с единицы (для перечисления) оценка, при которой курс считается завершенным. Если не указано, курс считается завершенным при выставлении любой оценки.
  • sname - название в источнике/стандарте
  • scode - код в источнике/стандарте
  • status - список статусов указан в одноименном плагине рабочих процессов programmitems
  • departmentid - структурное подразделение в таблице departments , ответственное за реализацию дисциплины
  • about - описание дисциплины
  • notice - заметка о дисциплины для внутреннего пользования
  • controltypeid - тип итогового контроля по данному курсу
  • hoursweek - часов в неделю
  • explanatory - пояснительная записка
  • gradesyncenabled - разрешать синхронизацию оценок для данной дисциплины
  • incjournwithoutgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов не имеющих оценки
  • incjournwithunsatisfgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов имеющих неудовлетворительные оценки
  • altgradeitem - id из grades_items (если не указано, то при синхронизации оценок берется оценка из итоговой оценки курса, который указан в mdlcourse)
  • metasyncon - включена ли синхронизация с метадисциплиной
  • metaprogrammitemid - id метадисциплины для синхронизации
  • billingtext - цена дисциплины
  • billingrules -
  • salfactor - поправочный зарплатный коэффициент
  • hourslab - часов лабораторных (Лаб)
  • hoursind - часов самостоятельной работы слушателя (СРС)
  • hourscontrol - часов контроля (Контроль)
  • autohours (0/1) - "Автоматически расчитывать количества Часов всего" (галочка рядом с полем "Часов всего"). Если установлена, при сохранении, в поле hours записывается сумма: hourstheory+hourslab+hourspractice+hoursind+hourscontrol
  • hoursclassroom - часов аудиторных - поле отображается, но не редактируется. При сохранении автоматически вычисляется как сумма: hourstheory+hourslab+hourspractice
  • verificationrequested - запрошено согласование мастер-курса (ожидание проверки)
  • coursetemplateversion - версия шаблона курса, соответствующая имени файла с резервной копией
  • courselinktype - тип связи с курсом moodle (прямая подписка или клонирование)

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

get_pitem_by_code($code)

Ищет дисциплины по коду дисциплины.

Аргументы:

  • $code(string) - код дисциплины.

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

  • (object) объект дисциплины.
  • (bool) false если дисциплина не найдена.

get_pitems_list($programmid, $agenum=false, $status = null)

Ищет список дисциплин, относящихся к учебной программе и учебному периоду.

Аргументы:

  • (int) $programmid - id учебной программы из таблицы programms.
  • (int) $agenum - порядковый номер периода или false, обозначающий получение дисциплин отсортированных в порядке возрастания периодав и по названию внутри них, по умолчанию false
  • (str) $status - статус, по умолчанию null

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

  • (array) список дисциплин.
  • (bool) false если дисциплины не найдены.

Структура работы: По SQL-запросу находим список дисциплин и возвращаем результат.

get_maxagenum($programmid)

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

Аргументы:

  • $programmid - id учебной программы из таблицы programms.

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

  • false - если не нашлось не одной записи
  • 0 - если нашлись только записи с agenum=0, то есть необязательные
  • в остальных случаях возвращается целое число - максимальное кол-во дисциплин в данном периоде

Структура работы: По sql-запросу производится поиск максимального значения agenum среди записей с выбранных programmid.

get_gradelevels()

Возвращает список всех возможных уровней оценки

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

  • array

get_gradelevel_name($value)

Возвращает название уровня оценки по его обозначению

Аргументы:

  • (str) $value обозначение уровня оценки в БД

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

  • string

get_types()

Возвращает все возможные типы дисциплины

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

  • array

get_type_name($value)

Возвращает название типа по его идентификатору в базе

Аргументы:

  • (str) $value

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

  • string

is_positive_grade($programmitemid, $grade)

Определяет является ли переданная оценка положительной(достаточной, для продолжения обучения)

Аргументы:

  • (int) $programmitemid - id предмета, по которому выставляется итоговая оценка
  • (str) $grade - выставляемая оценка

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

  • bool

analyze_grade_scale($pitem, $grade)

Определяет является ли переданная оценка допустимой для шкалы текущего предмета

Аргументы:

  • (obj) $pitem - объект из таблицы programmitems
  • (str) $grade - выставляемая оценка

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

  • bool

is_grade_valid($id, $grade, $scale=null)

Определяет допустима ли переданная оценка для данной дисциплины

Аргументы:

  • (int) $id - id предмета в таблице programmitems
  • (str) $grade - выставляемая оценка
  • (str) $scale - шкала оценок, если она указывается вручную, по умолчанию null

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

  • bool

set_status_deleted($id)

Переводит дисциплину в статус "удален"

Аргументы:

  • (int) $id - id дисциплины

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

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

get_hours_sum($programmitemids)

Получить суммарное количество часов и ЗЕТ по нескольким предметам

Аргументы:

  • (array) $programmitemids - массив id из таблицы programmitems
  • (int) $id - id дисциплины

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

  • (bool) - false в случае ошибки
  • (object) - или объект с полями:
    • ->maxcredit
    • ->hours
    • ->hourstheory
    • ->hourspractice
    • ->hoursweek
    • ->hourslab
    • ->hoursind
    • ->hourscontrol
    • ->hoursclassroom

Планы:

Права

Таблица прав, объявленных данным плагином
Код права Описание
view
edit
create
delete
use
edit:mdlcourse
view/meta
edit/meta
create/meta
delete/meta
use/meta
edit:verificationrequested Отправлять мастер-курсы на проверку
benotified:edit:coursetemplateversion Получать уведомления о результатах проверки мастер-курса
edit:coursetemplateversion Согласовывать (одобрять/отклонять) версию мастер-курса
benotified:edit:verificationrequested Получать уведомления о новых запросах на проверку мастер-курса
view:mastercourse Видеть ссылку на мастер-курс

События

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

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

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

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

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

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

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

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

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

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

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

Задания

Таблица заданий, которые выполняет этот плагин
Код задания Дополнительный параметр Пояснение
change_mcourse_in_programmitem Обязателен. Указывается id дисциплины. В mixedvar необходим параметр mdlcourse. Только для внутреннего использования системой. Находит все активные подписки на дисциплины в указанной дисциплине, после чего каждую из них приостанавливает. Меняет курс Moodle в дисциплине. Возобновляет приостановленные подписки. Посылается из формы смены курса Moodle на странице просмотра дисциплины.


Периодические задания

Таблица периодических заданий, которые выполняет этот плагин
Метод, выполняющий периодическое задание Параметры Пояснение Режим нагрузки
check_deleted_courses Без параметров Поиск дисциплин с удаленным курсами, отвязка удаленных курсов от дисциплин loan=2