<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://docs.deansoffice.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agadzhanyan</id>
		<title>DOF - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://docs.deansoffice.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agadzhanyan"/>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Agadzhanyan"/>
		<updated>2026-04-12T15:59:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.2</generator>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/schpresences&amp;diff=3203</id>
		<title>Разработка:storages/schpresences</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/schpresences&amp;diff=3203"/>
				<updated>2018-09-13T09:53:41Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Подробный формат полей в таблице: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schpresences&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''schpresences'' - содержит сведения о присутствии или отсутствии учащихся на учебном событии.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* eventid - событие&lt;br /&gt;
* personid - ученик в таблице [[Разработка:storages/persons | persons ]]&lt;br /&gt;
* present - присутствие: 0/1&lt;br /&gt;
* orderid - id приказа в таблице [[Разработка:storages/orders | orders ]], в соответствии в котором был выставлен статус присутсвия&lt;br /&gt;
* mdlevent - Id события в moodle&lt;br /&gt;
* reasonid - ID причины отсутствия&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
===='''save_present_student($obj)'''====&lt;br /&gt;
&lt;br /&gt;
Сохраняет статус присутствия/отсутствия ученика на занятии. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $obj(object) - запись в таблицу БД.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) id вставленной записи, если запись вставляется.&lt;br /&gt;
* (bool) true, если запись обновляется.&lt;br /&gt;
* (bool) false, если операции не удались.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
#находим запись в таблице БД по данным из обьекта:&lt;br /&gt;
#* если запись была найдена, мы ее обновляем и возвращаем результат.&lt;br /&gt;
#* если не найдена - запысываем в таблицу БД и возвращаем результат.&lt;br /&gt;
 &lt;br /&gt;
===='''save_present_students($obj)'''====&lt;br /&gt;
&lt;br /&gt;
Сохраняет список статусов присутствия/отсутствия учеников на занятии. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $obj(object) - запись в таблицу БД (объект, в котором первое свойство(eventid) является id события, а второе(presents) - массив записей, где ключ - id персоны, значение - статус присутствия).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true, если все записи успешно обновились/вставились.&lt;br /&gt;
* (bool) false во всех остальных случаях.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# обновляем/вставляем все записи в БД&lt;br /&gt;
#* перебираем исходный массив из данных объекта.&lt;br /&gt;
#* формируем объект для обновления/вставки в БД.&lt;br /&gt;
#* обновляем/вставляем объект в таблицу БД.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_present_status($stid, $evid)'''====&lt;br /&gt;
&lt;br /&gt;
Получает статус присутствия ученика на занятии.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $stid(int) - id студента в таблице [[Разработка:storages/persons | persons ]].&lt;br /&gt;
* $evid(int) - id события.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) статус присутствия, если собитие существует.&lt;br /&gt;
* (bool) false если события нет.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
# находим запись в таблице БД.&lt;br /&gt;
#* если запись найдена, возвращаем статус присутствия.&lt;br /&gt;
#* если не найдена, возвращаем false.&lt;br /&gt;
&lt;br /&gt;
===='''get_present_students($evid)'''==== &lt;br /&gt;
&lt;br /&gt;
Получает статусы присутствия учеников на занятии. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $evid(int) - id события&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив, где ключ - id персоны, значение - статус присутствия &lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все записи связанные с данным собитием в таблице БД.&lt;br /&gt;
# формируем массив id ученика=&amp;gt;статус присутствия по каждому из событий.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Получить статистику посещения учеником занятий по id учебного процесса и id ученика: количество прошедших занятий, количество посещенных занятий, доля посещенных занятий (от 0 до 1), если установлен флаг - массив с посещаемостью всех прошедших занятий id_события =&amp;gt; статус посещения.&lt;br /&gt;
* Получить статистику посещения учениками занятий по id учебного процесса (общие показатели по группе), если установлен флаг - массив с посещаемостью всех прошедших занятий id_события =&amp;gt; =&amp;gt;id_студента =&amp;gt;статус посещения.&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''&lt;br /&gt;
 |}&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schpresences&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу schpresences.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schpresences&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице schpresences.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schpresences&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы schpresences.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/cpgrades&amp;diff=3202</id>
		<title>Разработка:storages/cpgrades</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/cpgrades&amp;diff=3202"/>
				<updated>2018-09-13T09:51:11Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Подробный формат полей в таблице: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = cpgrades&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''cpgrades'' - оценки по контрольным точкам внутри дисциплины. Контрольные точки могут быть как локальными (внутри учебной дисциплины), так и глобальными - на все учебное заведение (четверти в школе или промежуточные аттестации).&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* cpassedid - подписка на дисциплину в таблице [[Разработка:storages/cpassed | cpassed ]] (связь с personid студента осуществляется через id подписки)&lt;br /&gt;
* planid - контрольная точка или тема в плане (таблица [[Разработка:storages/plans | plans ]]), за которую получена оценка&lt;br /&gt;
* grade - полученная оценка&lt;br /&gt;
* date - дата получения оценки&lt;br /&gt;
* notice - комментарий преподавателя к отметке (виден студенту и родителям)&lt;br /&gt;
* typesync - тип синхронизации (выставление вручную, синхронизация с moodle)&lt;br /&gt;
* mdlinstance - id задания в moodle, с которым выполнялась синхронизация&lt;br /&gt;
* orderid - id приказа в таблице [[Разработка:storages/orders | orders ]], в соответствии с которым была выставлена эта оценка&lt;br /&gt;
* teacherid - id сотрудника по справочнику [[Разработка:storages/persons | persons ]], вручную (если не синхронизация) выставившего отметку&lt;br /&gt;
* status - статус оценки (черновик (tmp), поставлена (put), удалена (delete) )&lt;br /&gt;
* estimatedin - источник, выставивший оценку в последний раз&lt;br /&gt;
&lt;br /&gt;
====Комментарии====&lt;br /&gt;
* История оценок выставляется в эту же таблицу, старые оценки не удаляются, актуальной считается одна, самая последняя по дате&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''save_grade_student($obj)'''====&lt;br /&gt;
&lt;br /&gt;
Сохраняет отметку студента. (в перспективе, когда будет реализован справочник с историей изменения отметок - вызов функции протоколирования)&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $obj(object) - запись в таблицу БД.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) id вставленной записи, если запись вставляется.&lt;br /&gt;
* (bool) - true, если запись обновляется и false, если операции не удались.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим запись в таблице БД по данным из обьекта:&lt;br /&gt;
#* если запись была найдена и ее статус при этом является черновым, мы ее обновляем и возвращаем результат.&lt;br /&gt;
#* если не найдена или статус не черновой - запысываем в таблицу БД и возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''save_grade_students($obj)'''====&lt;br /&gt;
&lt;br /&gt;
Cохраняет отметки всех студентов.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $obj(object) - запись в таблицу БД (объект, в котором имеются свойства date(дата), planid(id плана), teacherid(id учителя) и grades - массив записей, где ключ - id персоны, значения - оценка, подписка на учибный процесс и статус оценки).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true, если все записи успешно обновильсь/вставились, и false, во всех остальных случаях.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# обновляем/вставляем все записи в БД.&lt;br /&gt;
#* перебираем исходный массив из данных объекта.&lt;br /&gt;
#* формируем объект для обновления/вставки в БД.&lt;br /&gt;
#* обновляем/вставляем объект в таблицу БД.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_grade_student_cpassed($cpid, $plid)'''====&lt;br /&gt;
&lt;br /&gt;
Получает последнюю по дате оценку студента по id-подписки и id контрольной точки&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $cpid(int) - id подписки в таблице [[Разработка:storages/cpassed | cpassed ]].&lt;br /&gt;
* $plid(int) - id контрольной точки в таблице [[Разработка:storages/plans | plans ]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) запись из таблицы БД - последняя по дате оценка студента.&lt;br /&gt;
* (bool) - false, если ни одной оценки не найдено.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все оценки студента отсортированных по дате в порядке убывания.&lt;br /&gt;
# возвращаем первую стоящюю в списке оценку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_grade_student($stid, $csid, $plid)'''====&lt;br /&gt;
&lt;br /&gt;
Получает последнюю по дате оценку студента по id студента, id учебного потока и id контрольной точки.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $stid(int) - id студента в таблице [[Разработка:storages/persons | persons ]].&lt;br /&gt;
* $cpid(int) - id учебного потока в таблице [[Разработка:storages/cstreams | cstreams ]].&lt;br /&gt;
* $plid(int) - id контрольной точки в таблице [[Разработка:storages/plans | plans ]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) запись из таблицы БД - последняя по дате оценка студента.&lt;br /&gt;
* (bool) - false, если ни одной оценки не найдено.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# по id учебного потока и id студента находим подписку студента на учебный поток.&lt;br /&gt;
# по id подписка и id контрольной точки находим последнюю по дате оценку студента.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_all_grade_student($cpid)'''====&lt;br /&gt;
&lt;br /&gt;
Получает все оценки одного студента по подписке на дисциплину вместе с информацией из плана.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $cpid(int) - id подписки на дисциплину в таблице [[Разработка:storages/cpassed | cpassed ]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - список оценок вместе c планом. &lt;br /&gt;
* (bool) - false, если ни одной оценки не найдено.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все оценки студента по подписке.&lt;br /&gt;
# создаем массив оценок вместе с информацией из плана.&lt;br /&gt;
#* создаем новый объек со свойствами:&lt;br /&gt;
#** grade - оценка студента&lt;br /&gt;
#** plan - контрольная точка (информация из учебного плана, таблица [[Разработка:storages/plans | plans ]])&lt;br /&gt;
#* записываем объект в массив&lt;br /&gt;
# возвращаем созданный массив&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Получить историю изменения оценок по id подписки и id контрольной точки&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''&lt;br /&gt;
 |}&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |cpgrades&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу cpgrades.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |cpgrades&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице cpgrades.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |cpgrades&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы cpgrades.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/plans&amp;diff=3201</id>
		<title>Разработка:storages/plans</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/plans&amp;diff=3201"/>
				<updated>2018-09-13T09:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Подробный формат полей в таблице: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = plans&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''plans'' - темы в учебном плане и контрольные точки внутри учебной дисциплины/предмета, предусмотренные учебным планом курса.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* linkid - связь с учебным периодом, учебной программой, дисциплиной или учебным процессом&lt;br /&gt;
* linktype - тип связи ([[Разработка:storages/ages | ages ]], [[Разработка:storages/programmitems | programmitems ]], [[Разработка:storages/cstreams | cstreams ]], plan). Тип связи &amp;quot;plan&amp;quot; - означает что эта контрольная точка относится к индивидуальному тематическому планированию ученика. linkid в этом случае указывает на таблицу cstreams.&lt;br /&gt;
* parentid - id родительской контрольной точки, если она наследовалась от стандартной темы в плане (модификация или дубль), либо id основной контрольной точки, если оценка является &amp;quot;дополнительной&amp;quot; (статус &amp;quot;дополнительная&amp;quot; - при этом тема не отображается в плане отдельной строкой, а только в подробной информации про основную тему, если основная тема наследуется, то и все дополнительные наследуются), по умолчанию - 0&lt;br /&gt;
* name - название контрольной точки или темы занятия&lt;br /&gt;
* date - абсолютная дата контрольной точки или 0.&lt;br /&gt;
* reldate - относительная дата сдачи в секундах от начала учебного процесса, периода.&lt;br /&gt;
* reldldate - относительная дата последнего срока сдачи в секундах от начала учебного процесса, периода. Может совпадать с reldate.&lt;br /&gt;
* scale - диапазон или перечисленные через запятую возможные оценки, пустая строка если оценка не предусмотрена&lt;br /&gt;
* mingrade - минимальная оценка, при которой занятие считается успешно-завершенным&lt;br /&gt;
* type - тип события (очный урок/лекция(facetime), дистанционный урок/лекция(distance),  семинар(seminar), лабораторная работа(laboratorywork), практическая работа(practicework), контрольная работа(testwork), промежуточная аттестация(intermediate))&lt;br /&gt;
* typesync - тип синхронизации (выставление вручную, синхронизация с moodle)&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/plans | plans ]]&lt;br /&gt;
* homework - домашнее задание&lt;br /&gt;
* homeworkhours - количество часов, отведенных на домашнее задание&lt;br /&gt;
* directmap - непосредственное отображение в журнале&lt;br /&gt;
* number - номер&lt;br /&gt;
* datetheme - дата темы&lt;br /&gt;
* plansectionsid - id из таблицы тематических разделов [[Разработка:storages/plansections | plansections ]]&lt;br /&gt;
* note - примечание&lt;br /&gt;
* estimated - является ли элемент оцениваемым&lt;br /&gt;
* gradessynctype - Тип синхронизации оценки (0 - Выключена/1 - Вручную/2 - Автоматически)&lt;br /&gt;
* gradespriority - Приоритет оценок (dof/moodle)&amp;quot;&lt;br /&gt;
* gradesoverride - Перезаписывать оценки в Moodle (0/1)&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_checkpoints($id, $type, $status = 'active')'''====&lt;br /&gt;
&lt;br /&gt;
Получает список контрольных точек напрямую связанных с одним объектом привязки. Сортируются по относительной дате. Данный метод возвращает только контрольные точки, напрямую привязанные к объекту, его не следует использовать для отображения полного учебно-тематического плана!&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id элемента, к которому привязана контрольная точка.&lt;br /&gt;
* (str) $type - тип элемента, к которому привязана контрольная точка. ([[Разработка:storages/ages | ages ]], [[Разработка:storages/programmitems | programmitems ]], [[Разработка:storages/cstreams | cstreams ]]).&lt;br /&gt;
* (str) $status - статус контрольной точки, по умолчанию - действующая(active).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив объектов из таблицы. &lt;br /&gt;
* (bool) false если контрольные точки не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* формируем SQL-запрос и возвращаем список КТ:&lt;br /&gt;
** если указывается статус - КТ с указанным статусом,&lt;br /&gt;
** если статус указывается null - КТ с любим статусом,&lt;br /&gt;
** если статус не указывается - КТ со статусом active.&lt;br /&gt;
&lt;br /&gt;
===='''get_list_no_status($status = 'active')'''====&lt;br /&gt;
&lt;br /&gt;
Получает список контрольных точек, со всеми статусами, кроме указанного&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $status - статус уоторый надо исключить, по умолчанию active&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array|bool - массив записей из таблицы [[Разработка:storages/plans | plans ]] или false если ничего не найдено&lt;br /&gt;
&lt;br /&gt;
===='''sort_checkpoints_and_events($id, $planstatuses=null, $eventstatuses=null)'''====&lt;br /&gt;
&lt;br /&gt;
Получает список объединенных контрольных точек и событий отсортированных по дате события или контрольной точки. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (int) $id - id учебного процесса в таблице [[Разработка:storages/cstreams | cstreams ]]&lt;br /&gt;
* array $planstatuses  - список статусов с которыми получаются контрольные точки из таблицы [[Разработка:storages/plans | plans ]], по умолчанию - с любым статусом(null)&lt;br /&gt;
* array $eventstatuses - список статусов с которыми нужно получить события из таблицы [[Разработка:storages/schevents | schevents ]], по умолчанию - с любым статусом(null) &lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array массив объектов - контрольных точек из таблицы [[Разработка:storages/plans | plans ]]. Если для КТ есть событие - то оно записывается в поле &amp;quot;event&amp;quot;&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим необходимые контрольные точки.&lt;br /&gt;
# получаем масив состыкованных КТ и событий.&lt;br /&gt;
# формируем новый массив состыкованных КТ и событий, в котором индексы заменены на метки времени.&lt;br /&gt;
#* получаем метку времени при помощи get_date().&lt;br /&gt;
#* если метку времени не получили, переходим к следующему элементу,&lt;br /&gt;
#* если метка времени не уникальна, делаем ее уникальной.&lt;br /&gt;
#* записываем получившуюся метку времени, как ключ массива.&lt;br /&gt;
# соритуем массив по ключам в порядке возрастания.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_date($pe)'''====&lt;br /&gt;
&lt;br /&gt;
Получает метку времени КT или соответствующего события.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (object) $pe - объект контрольной точки&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string - дата начало события, &lt;br /&gt;
* string - если нет даты события, дата начала КТ,&lt;br /&gt;
* string - если нет даты начала КТ, дата начала учебного потока + смещение.&lt;br /&gt;
* bool - false, если возникли ошибки&lt;br /&gt;
&lt;br /&gt;
===='''get_checkpoints_for_cstreams($csid, $statuses=null)'''====&lt;br /&gt;
&lt;br /&gt;
Получает список контрольных точек актуальных для данного учебного процесса (включая контрольные точки дисциплины и периода, с которыми связан данный учебный процесс). Сортируются по абсолютной дате, которая вычисляется как дата старта учебного процесса + относительная дата точек, привязанных к учебному процессу или точек, привязанных к дисциплине, или как дата начала учебного периода + относительная дата точек, привязанных к учебному периоду.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (int) $csid - id учебного процесса в таблице [[Разработка:storages/cstreams | cstreams ]].&lt;br /&gt;
* (str) $statuses - статусы контрольных точек в таблице [[Разработка:storages/plans | plans ]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив объектов из таблицы. &lt;br /&gt;
* bool - false если контрольные точки не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* формируем SQL-запрос:&lt;br /&gt;
** по данному id находим учебный процесс.&lt;br /&gt;
** формируем условие выборки.&lt;br /&gt;
** по id периода из учебного находим учебный период.&lt;br /&gt;
*** если период существует, добавляем его в условие выборки и формируем дополнительную колонку содержащюю абсолютную дату для каждой КТ,&lt;br /&gt;
*** если периода нет, формируем дополнительную колонку без учета периода.&lt;br /&gt;
* возвращаем список КТ по SQL-запросу.&lt;br /&gt;
&lt;br /&gt;
===='''get_numberof_points($select)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает количество КТ, удовлетворяющих указанным критериям.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (str) $select - критерии отбора записей&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int - количество найденных записей&lt;br /&gt;
&lt;br /&gt;
===='''cancel_checkpoint($id, $all = false)'''====&lt;br /&gt;
&lt;br /&gt;
Отменяет контрольную точку с событием.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (int) $id - id контрольной точки&lt;br /&gt;
* (bool) $all - удалять ли все события: true - да, false - нет, по умолчанию false&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool true - КТ отменено, false - возникли ошибки&lt;br /&gt;
&lt;br /&gt;
===='''get_grades_scale($scale)'''====&lt;br /&gt;
&lt;br /&gt;
Разбивает шкалу оценок на массив оценок.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (string) $scale - шкала оценок&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив оценок&lt;br /&gt;
&lt;br /&gt;
===='''get_theme_plan($linktype, $linkid, $statuses=null, $viewplan = false)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает список тематических разделов.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (string)$linktype - тип связи (plans, cstreams, programmitems, ages)&lt;br /&gt;
* (int)$linkid - id связи&lt;br /&gt;
* (string)$statuses - список статусов (по умолчанию null)&lt;br /&gt;
* (string) $viewplan - (по умолчанию false)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array|false - список тематических разделов или false&lt;br /&gt;
&lt;br /&gt;
===='''succession_pitem_plan($cstream)'''====&lt;br /&gt;
&lt;br /&gt;
Наследует учебный темплан из планирования по предмету.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (object)|(int) $cstream - объект учебного потока или id из таблицы cstreams&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool&lt;br /&gt;
&lt;br /&gt;
===='''widgets_save_field($querytype, $objectid, $data)'''====&lt;br /&gt;
&lt;br /&gt;
Сохрание данных одного поля при ajax-редактировании.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (string) $querytype - уникальное имя запроса сохранения внутри плагина. Как правило имя &lt;br /&gt;
сохраняемого поля&lt;br /&gt;
* (int) $objectid - id объекта, данные которого редактируются&lt;br /&gt;
* (object) $data - данные для сохранения (обычно - новое значение поля)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string - новое значение элемента или строка с html-кодом ошибки&lt;br /&gt;
&lt;br /&gt;
===='''widgets_field_variants_list($querytype='standart', $obj)'''====&lt;br /&gt;
&lt;br /&gt;
Метод, который возвращает список для автозаполнения.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (string) $querytype - тип запроса (по-умолчанию стандарт)&lt;br /&gt;
* (object) $obj - объект с параметрами для выборки&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array | false - запись, если есть или false, если нет&lt;br /&gt;
&lt;br /&gt;
===='''widgets_load_field($fieldname, $objectid, $data=null)'''====&lt;br /&gt;
&lt;br /&gt;
Подгрузить значение поля перед inline-редактированием.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* (string) $fieldname - название поля объекта, которое будет подгружено&lt;br /&gt;
* (int) $objectid  - id редактируемого объекта&lt;br /&gt;
* (mixed)  $data[optional] - дополнительные данные для запроса&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''&lt;br /&gt;
 |}&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |plans&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу plans.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |plans&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице plans.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |plans&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы plans.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/schevents&amp;diff=3200</id>
		<title>Разработка:storages/schevents</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/schevents&amp;diff=3200"/>
				<updated>2018-09-13T09:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Подробный формат полей в таблице: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schevents&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Таблица в базе данных=&lt;br /&gt;
''schevents'' - учебные события, отображенные на реальные даны. Содержит информацию о реальной дате и времени учебного события, его статусе (проведено/не проведено), собитии-замене, исходном шаблоне, подразделении, расписанию которого принадлежит события и другие.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* templateid - шаблон расписания в таблице [[Разработка:storages/schtemplates | schtemplates]]&lt;br /&gt;
* dayid - день расписания, по которому было создано событие. Все запланированные(plan) и отложенные (postponed) события должны быть привязаны к существующим дням (то есть дняв с статусе active). Если в поле dayid стоит null - это нормальная ситуация. Она означает, что событие было создано вручную завучем, и не связано с шаблонами расписания.&lt;br /&gt;
* planid - тема урока в плане&lt;br /&gt;
* type - тип события: обычный урок, совместный урок(например, учитель ведет свой обычный урок и параллельно ведет урок по совмещению от заболевшего учителя), бесплатный урок (например, учитель химии ведет урок химии, который связан и с биологией, при этом в журнале &amp;quot;биологии&amp;quot; отмечается бесплатный урок, который учитель биологии не вел, но тема пройдена), интегрированный урок (например, учитель географии приглашает на свой урок учителя информатики для занятия в ГИС, при этом урок записывается и в журнал информатики и преподаватель информатики получает за него деньги; при этом &amp;quot;итегрированным&amp;quot; считается только урок информатики, а географии - обычный).&lt;br /&gt;
* joinid - id обычного урока, к которому присоединяется &amp;quot;бесплатный&amp;quot; , &amp;quot;совместный&amp;quot; или &amp;quot;интегрированный&amp;quot; либо 0&lt;br /&gt;
* cstreamid - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]]&lt;br /&gt;
* teacherid - '''БОЛЬШЕ НЕ ИСПОЛЬЗУЕТСЯ''' id преподавателя в таблице [[Разработка:storages/persons | persons ]] &lt;br /&gt;
* date - дата и время начала события по UTC&lt;br /&gt;
* duration - продолжительность события в секундах&lt;br /&gt;
* place - место проведения события (текстовое поле)&lt;br /&gt;
* replaceid - id события, которое заменяется данным событием&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов [[Разработка:workflows/schevents |schevents  ]]&lt;br /&gt;
* form - форма урока (очно/дистанционно)&lt;br /&gt;
* appointmentid - назначение на должность, в рамках которого проходит урок (таблица[[Разработка:storages/persons | appointments ]])&lt;br /&gt;
* ahours - продолжительность урока в академических часах&lt;br /&gt;
* rhours - продолжительность в условных часах, рассчитанная по формуле(ahours * programmitem.salfactor * programmsbcs.salfactor * schtemplates.salfactor * конфиг.поправаподразделения * конфиг.поправкапоколичествуучеников * cstreams.salfactor + ahours * cstreams.substsalfactor)&lt;br /&gt;
* salfactor - применяемый итоговый коэффициент (вычисляется как один час, к которому применены все действующие для данного урока поправочные коэффициенты или один замещающий)&lt;br /&gt;
* salfactorparts - сериализованный объект с полями: $obj-&amp;gt;vars-&amp;gt; значения всех действующих на момент расчета коэффициентов, $obj-&amp;gt;formula - формула расчета&lt;br /&gt;
* url - ссылка на занятие (текстовое поле формата url)&lt;br /&gt;
&lt;br /&gt;
=Дополнительные методы:=&lt;br /&gt;
&lt;br /&gt;
===='''replace_events($eventid, $date)'''====&lt;br /&gt;
&lt;br /&gt;
Формирует замену для события событием. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $eventid(int) - id события, для которого формируется замена.&lt;br /&gt;
* $data(int) - дата, на которую переносится событие&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true в случае успеха или false если обновление не удалось.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
В поле replaceid заменяемого события записываем id события, которое будет его заменять и обновляем запись в таблице БД. &lt;br /&gt;
&lt;br /&gt;
===='''delete_events($date=null)'''====&lt;br /&gt;
&lt;br /&gt;
Удаляет все события дня. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date - день, для которого надо удалить все события, по умолчанию - текущий день (null).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если все записи удалились и false в остальных случаях&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# если метка времени не указана, устанавливаем текущую метку времени.&lt;br /&gt;
# формируем метку времени начала дня.&lt;br /&gt;
# получаем все существующие события.&lt;br /&gt;
# для каждого события проверяем, если метка времени события попадает в промежуток даты начала дня и даты конца дня, то удаляем событие.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_cstream_events(csid, $status=null, $begin=null, $end=null)'''====&lt;br /&gt;
&lt;br /&gt;
Получает список событий для учебного потока.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $csid(int) - id учебного потока в таблице [[Разработка:storages/cstreams | cstreams ]].&lt;br /&gt;
* $status(string) - статус учебного процесса, по умолчанию - все (null).&lt;br /&gt;
* $begin(int) - дата начала события, по умолчанию - все (null).&lt;br /&gt;
* $end(int) - дата окончания события, по умолчанию - все (null).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) события для учебного потока.&lt;br /&gt;
* (bool) false если события не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* формируем SQL-запрос и возвращаем список событий:&lt;br /&gt;
** если указываются даты начала и окончания - события в указанный промежуток,&lt;br /&gt;
** если даты начала и окончания не указываются или указываются как null- события в любой день.&lt;br /&gt;
** если указывается статус - группы с указанным статусом,&lt;br /&gt;
** если статус не указывается или указывается как null - события с любым статусом.&lt;br /&gt;
&lt;br /&gt;
===='''get_teacher_events($tcid, $status=null, $begin=null, $end=null)'''====&lt;br /&gt;
&lt;br /&gt;
Получает список событий для преподавателя.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $tcid(int) - id преподавателя в таблице [[Разработка:storages/persons | persons ]].&lt;br /&gt;
* $status(string) - статус учебного процесса, по умолчанию - все (null).&lt;br /&gt;
* $begin(int) - дата начала события, по умолчанию - все (null).&lt;br /&gt;
* $end(int) - дата окончания события, по умолчанию - все (null).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) события для учебного потока.&lt;br /&gt;
* (bool) false если события не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все учебные потоки для преподавателя.&lt;br /&gt;
# для каждого учебного потока находим его события и заносим в массив.&lt;br /&gt;
# возвращаем резальтат.&lt;br /&gt;
&lt;br /&gt;
===='''get_department_events($dpid, $status=null, $begin=null, $end=null)'''====&lt;br /&gt;
&lt;br /&gt;
Получает список событий, принадлежащих структурному подразделению. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dpid(int) - id структурного подразделения в таблице [[Разработка:storages/departments | departments ]].&lt;br /&gt;
* $status(string) - статус учебного процесса, по умолчанию - все (null).&lt;br /&gt;
* $begin(int) - дата начала события, по умолчанию - все (null).&lt;br /&gt;
* $end(int) - дата окончания события, по умолчанию - все (null).&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) события для учебного потока.&lt;br /&gt;
* (bool) false если события не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все учебные потоки для подразделения.&lt;br /&gt;
# для каждого учебного потока находим его события и заносим в массив.&lt;br /&gt;
# возвращаем резальтат.&lt;br /&gt;
&lt;br /&gt;
===='''get_pevent($point, $event)'''====&lt;br /&gt;
&lt;br /&gt;
Состыковывает контрольную точку с событием.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $point(obj) - контрольная точка&lt;br /&gt;
* $event(obj) - событие&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (obj) - cостыкованную запись&lt;br /&gt;
&lt;br /&gt;
===='''get_pointevents($point, $cstreamid = null, $cancel_event = false)'''====&lt;br /&gt;
&lt;br /&gt;
Получает массив состыкованных записей контрольной точки с ее событиями.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $point(obj) - контрольная точка&lt;br /&gt;
* $cstreamid - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]] &lt;br /&gt;
* $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - список состыкованных записей&lt;br /&gt;
&lt;br /&gt;
===='''get_points_and_events($plans, $cstreamid, $cancel_event = false )'''====&lt;br /&gt;
&lt;br /&gt;
Получает массив состыкованных записей контрольных точек с их событиями.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans(array) - массив записей контрольных точек&lt;br /&gt;
* $cstreamid(int) - учебный поток в таблице [[Разработка:storages/cstreams | cstreams ]]&lt;br /&gt;
* $cancel_event(bool) - нужно ли отображать отмененные уроки, по умолчанию false&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - список состыкованных записей&lt;br /&gt;
&lt;br /&gt;
===='''canceled_event($eventid, $cancel_all = false)'''====&lt;br /&gt;
&lt;br /&gt;
Отменяет урок.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $eventid(int) - id урока&lt;br /&gt;
* $cancel_all(bool) - отменить все события: true - все, включая замененные, по умолчанию false&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true - если удалось отменить, false - иначе&lt;br /&gt;
&lt;br /&gt;
===='''get_replace_event($eventid)'''====&lt;br /&gt;
&lt;br /&gt;
Находит последнюю замену для события.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $eventid(int) - id события для которого ищем замену&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int|bool - id замененного события или false&lt;br /&gt;
&lt;br /&gt;
===='''get_plansid_anchored_day($date = null)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает массив id КТ уроков для указанного дня.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date(int) - день, по котором надо сделать выборку, если не указано, то текущий день, по умолчанию null &lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array|bool - массив id или false - если ничего не найдено&lt;br /&gt;
&lt;br /&gt;
===='''get_listing($limitfrom = null, $limitnum = null, $conds=null, $countonly=false)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает список событий по заданным критериям&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $limitfrom(int) - начиная с какой записи просматривается фрагмент списка записей, по умолчанию null&lt;br /&gt;
* $limitnum(int) - сколько записей нужно извлечь из базы, по умолчанию null&lt;br /&gt;
* $conds(obj) - объект со списком свойств, по которым будет происходить поиск, по умолчанию null&lt;br /&gt;
* $countonly(obj) - только вернуть количество записей по указанным условиям, по умолчанию false&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array массив записей из базы, или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===='''get_select_listing($inputconds)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает фрагмент sql-запроса после слова WHERE&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $inputconds(obj) - список полей с условиями запроса в формате &amp;quot;поле_БД-&amp;gt;значение&amp;quot; &lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Создать событие на день по объекту шаблона расписания&lt;br /&gt;
* Получить статистику событий по структурному подразделению&lt;br /&gt;
* Получить статитстику событий по преподавателю&lt;br /&gt;
* Получить статистику событий по учебному процессу&lt;br /&gt;
* Получить статистику событий с участием студента&lt;br /&gt;
&lt;br /&gt;
=События=&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''&lt;br /&gt;
 |}&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schevents&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу schevents.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schevents&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице schevents.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |schevents&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы schevents.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=Задания=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица заданий, которые выполняет этот плагин&lt;br /&gt;
 ! Код задания&lt;br /&gt;
 ! Дополнительный параметр&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |delete_broken_events&lt;br /&gt;
 |Необязателен. Указывается дата, с которой ищутся занятия, если не указан по-умолчанию выбираются все.&lt;br /&gt;
 |Находит все запланированные и отложенные занятия привязанные к дням начиная с указанной даты. Отменяет те события, чьи дни были удалены или отсутствуют в БД.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Плагины обработки todo | storages/schevents]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3198</id>
		<title>Разработка:modlibs/transmit</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3198"/>
				<updated>2018-03-02T09:17:39Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Справочник дополнительных параметров: ===&lt;br /&gt;
{{Infobox_Plugin&lt;br /&gt;
| name = transmit&lt;br /&gt;
| type = modlibs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Принцип работы =&lt;br /&gt;
Библиотека обмена данными между электронным деканатом и внешней системой.&lt;br /&gt;
Логика работы заключается в обработке входного/выходного массива данных пуллом обработчиков, который привязывается к выбранной стратегии импорта/экспорта.&lt;br /&gt;
&lt;br /&gt;
== Обработчики ==&lt;br /&gt;
Обработчика делятся на четыре группы:&lt;br /&gt;
* Валидаторы - валидируют входные данные&lt;br /&gt;
* Конвертеры - конвертируют свалидированные данные на бизнес-язык ЭД&lt;br /&gt;
* Импортеры - импортируют данные в систему&lt;br /&gt;
* Экспортеры - экспортируют данные&lt;br /&gt;
&lt;br /&gt;
=== Валидаторы ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Конвертеры ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица конвертеров с описанием&lt;br /&gt;
 ! Код конвертера&lt;br /&gt;
 ! Входные слоты&lt;br /&gt;
 ! Выходные слоты&lt;br /&gt;
 ! Статические слоты&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Описание&lt;br /&gt;
 |-&lt;br /&gt;
 | person_email&lt;br /&gt;
 | &lt;br /&gt;
* (string)email&lt;br /&gt;
 | &lt;br /&gt;
* (int)personid&lt;br /&gt;
 | &lt;br /&gt;
* (bool)trycreatefrommoodle&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
Обработчик получает по email идентификатор персоны в деканате и выкидывает его в пулл в случае успешного нахождения.&lt;br /&gt;
Если персоны не существует в электронном деканате и при этом статичный слот trycreatefrommoodle равен true, то обработчик пытается получить пользователя Moodle.&lt;br /&gt;
После успешного получения пользователя Moodle, происходит поиск персоны в ЭД, которая привязаны к найденому пользователю Moodle.&lt;br /&gt;
Если персона в ЭД не найдена, то происходит регистрация персоны и привязка к пользователю Moodle, затем идентификатор созданной персоны выкидывается в пулл.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Импортеры ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Экспортеры ===&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3197</id>
		<title>Разработка:modlibs/transmit</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3197"/>
				<updated>2018-03-02T09:01:41Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Конвертеры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Справочник дополнительных параметров: ===&lt;br /&gt;
{{Infobox_Plugin&lt;br /&gt;
| name = transmit&lt;br /&gt;
| type = modlibs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Принцип работы =&lt;br /&gt;
Библиотека обмена данными между электронным деканатом и внешней системой.&lt;br /&gt;
Логика работы заключается в обработке входного/выходного массива данных пуллом обработчиков, который привязывается к выбранной стратегии импорта/экспорта.&lt;br /&gt;
&lt;br /&gt;
== Обработчики ==&lt;br /&gt;
Обработчика делятся на три группы:&lt;br /&gt;
* Валидаторы - валидируют входные данные&lt;br /&gt;
* Конвертеры - конвертируют свалидированные данные на бизнес-язык ЭД&lt;br /&gt;
* Импортеры - импортируют данные в систему&lt;br /&gt;
* Экспортеры - экспортируют данные&lt;br /&gt;
&lt;br /&gt;
=== Валидаторы ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Конвертеры ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица конвертеров с описанием&lt;br /&gt;
 ! Код конвертера&lt;br /&gt;
 ! Входные слоты&lt;br /&gt;
 ! Выходные слоты&lt;br /&gt;
 ! Статические слоты&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Описание&lt;br /&gt;
 |-&lt;br /&gt;
 | person_email&lt;br /&gt;
 | &lt;br /&gt;
* email&lt;br /&gt;
 | &lt;br /&gt;
* personid&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обработчик получает по email идентификатор персоны в деканате (если не существует, создает персону) и выкидывает его в пулл.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Импортеры ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Экспортеры ===&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3196</id>
		<title>Разработка:modlibs/transmit</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:modlibs/transmit&amp;diff=3196"/>
				<updated>2018-03-02T09:01:34Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: Новая страница: «=== Справочник дополнительных параметров: === {{Infobox_Plugin | name = transmit | type = modlibs }}  = Принцип работы...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Справочник дополнительных параметров: ===&lt;br /&gt;
{{Infobox_Plugin&lt;br /&gt;
| name = transmit&lt;br /&gt;
| type = modlibs&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Принцип работы =&lt;br /&gt;
Библиотека обмена данными между электронным деканатом и внешней системой.&lt;br /&gt;
Логика работы заключается в обработке входного/выходного массива данных пуллом обработчиков, который привязывается к выбранной стратегии импорта/экспорта.&lt;br /&gt;
&lt;br /&gt;
== Обработчики ==&lt;br /&gt;
Обработчика делятся на три группы:&lt;br /&gt;
* Валидаторы - валидируют входные данные&lt;br /&gt;
* Конвертеры - конвертируют свалидированные данные на бизнес-язык ЭД&lt;br /&gt;
* Импортеры - импортируют данные в систему&lt;br /&gt;
* Экспортеры - экспортируют данные&lt;br /&gt;
&lt;br /&gt;
=== Валидаторы ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Конвертеры ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица конвертеров с описанием&lt;br /&gt;
 ! Код конвертера&lt;br /&gt;
 ! Входные слоты&lt;br /&gt;
 ! Выходные слоты&lt;br /&gt;
 ! Статические слоты&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Описание&lt;br /&gt;
 |-&lt;br /&gt;
 | person_email&lt;br /&gt;
 | * email&lt;br /&gt;
 | * personid&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обработчик получает по email идентификатор персоны в деканате (если не существует, создает персону) и выкидывает его в пулл.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Импортеры ===&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=== Экспортеры ===&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/programmitems&amp;diff=3195</id>
		<title>Разработка:storages/programmitems</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/programmitems&amp;diff=3195"/>
				<updated>2018-03-02T08:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = programmitems&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
=Таблица в базе данных=&lt;br /&gt;
''programmitems'' - элементы учебной программы - учебные дисциплины/предметы. &lt;br /&gt;
Создание связного курса в Moodle происходит по событиям добавления/обновления дисциплины через плагин sync/mcourses.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* programmid - учебная программа в таблице [[Разработка:storages/programms | programms ]]&lt;br /&gt;
* agenum - номер учебного периода, от начала обучения по программе на который назначена дисциплина. Для необязательных дисциплин возможен 0, тогда студент может &amp;quot;взять&amp;quot; дисциплину в любом семестре.&lt;br /&gt;
* courseclsid - id по таблице coursecls (таблица пока не предусмотрена), предназначен для объединения однородных дисциплин. Однородность дисциплин может быть четырех уровней (записываются внутри таблицы coursecls): &lt;br /&gt;
** 1 - одинаковые дисциплины изучаемые в составе различных учебных программ, &lt;br /&gt;
** 2 - разные ступени изучения одной дисциплины, &lt;br /&gt;
** 3 - дисциплины, относящиеся к одной науке, &lt;br /&gt;
** 4 - категории (общественные, естественные, технические). Сама таблица coursecls пока не реализована, а поле зарезервировано на будущее.&lt;br /&gt;
* name - название дисциплины (текстовое поле)&lt;br /&gt;
* code - код дисциплины (текстовое поле, необязательное, при указании проверяется уникальность). Если код не указан - то вместо него подставляется id записи.&lt;br /&gt;
* mdlcourse - id курса в moodle&lt;br /&gt;
* type - тип предмета:&lt;br /&gt;
** ''required''- обязательный&lt;br /&gt;
** ''recommended'' - рекомендованный&lt;br /&gt;
** ''free'' - по выбору&lt;br /&gt;
* required - обязательный курс (0/1) На основании этого поля ориентируемся, нужно ли обязательно подписывать или нет, а предыдущий больше информационный. Например, даже обязательный курс, который планируется разделить на подгруппы может не требовать автоматической подписки.&lt;br /&gt;
* maxcredit - зачетные единицы трудоемкости (максимальное количество кредитов за курс, ЗЕТ)&lt;br /&gt;
* maxduration - максимальная продолжительность курса от начальной подписки (в секундах). Если не установлено - продолжительность неограничена.  Учебные потоки  всегда завершается автоматически с закрытием учебного периода, к которому они относятся.&lt;br /&gt;
* hours - часов всего&lt;br /&gt;
* hourstheory - часов лекций (Лек)&lt;br /&gt;
* hourspractice - часов практики (Пр)&lt;br /&gt;
* eduweeks - количество учебных недель/циклов (каждая соответствует одному циклу в расписании) продолжительности курса, если не указано, учебные процессы наследуют из ages.&lt;br /&gt;
* instrlevelid - id уровня компоненты - &lt;br /&gt;
** 1 - федеральная, &lt;br /&gt;
** 2 - региональная, &lt;br /&gt;
** 3 - учебного заведения, &lt;br /&gt;
** 4 - кафедры&lt;br /&gt;
* gradelevel - уровень оценки&lt;br /&gt;
** ''notused'' - оценка не идет в кондуит&lt;br /&gt;
** ''discipline'' - дисциплина&lt;br /&gt;
** ''coursework'' - курсовая работа&lt;br /&gt;
** ''practice'' - практика&lt;br /&gt;
** ''finalexam'' - междисциплинарный экзамен&lt;br /&gt;
** ''diplom'' - дипломная работа&lt;br /&gt;
* scale - диапазон или перечисленные через запятую возможной итоговой оценки, пустая строка если оценка не предусмотрена.  Оценка может быть и дробной. Диапазон задается двумя числами через дефис: худшая_оценка_-_лучшая_оценка_. Например 5-1. 5 - самый плохой балл. 1 - самый лучший. Если задается не диапазон, а интервал, то оценки перечисляются через запятую: 5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1.&lt;br /&gt;
* mingrade - минимальная (для диапазона) или начальная слева-направа начиная с единицы (для перечисления) оценка, при которой курс считается завершенным. Если не указано, курс считается завершенным при выставлении любой оценки.&lt;br /&gt;
* sname - название в источнике/стандарте&lt;br /&gt;
* scode - код в источнике/стандарте&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/programmitems | programmitems ]] &lt;br /&gt;
* departmentid - структурное подразделение в таблице [[Разработка:storages/departments | departments ]], ответственное за реализацию дисциплины&lt;br /&gt;
* about - описание дисциплины&lt;br /&gt;
* notice - заметка о дисциплины для внутреннего пользования&lt;br /&gt;
* controltypeid - тип итогового контроля по данному курсу&lt;br /&gt;
* hoursweek - часов в неделю&lt;br /&gt;
* explanatory - пояснительная записка&lt;br /&gt;
* gradesyncenabled - разрешать синхронизацию оценок для данной дисциплины&lt;br /&gt;
* incjournwithoutgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов не имеющих оценки&lt;br /&gt;
* incjournwithunsatisfgrade - при синхронизации оценок вносить в ведомость на момент ее заполнения студентов имеющих неудовлетворительные оценки&lt;br /&gt;
* altgradeitem - id из grades_items (если не указано, то при синхронизации оценок берется оценка из итоговой оценки курса, который указан в mdlcourse)&lt;br /&gt;
* metasyncon - включена ли синхронизация с метадисциплиной&lt;br /&gt;
* metaprogrammitemid - id метадисциплины для синхронизации&lt;br /&gt;
* billingtext - цена дисциплины&lt;br /&gt;
* billingrules - &lt;br /&gt;
* salfactor - поправочный зарплатный коэффициент&lt;br /&gt;
* hourslab - часов лабораторных (Лаб)&lt;br /&gt;
* hoursind - часов самостоятельной работы слушателя (СРС)&lt;br /&gt;
* hourscontrol - часов контроля (Контроль)&lt;br /&gt;
* autohours (0/1) - &amp;quot;Автоматически расчитывать количества Часов всего&amp;quot; (галочка рядом с полем &amp;quot;Часов всего&amp;quot;). Если установлена, при сохранении, в поле hours записывается сумма: hourstheory+hourslab+hourspractice+hoursind+hourscontrol&lt;br /&gt;
* hoursclassroom - часов аудиторных - поле отображается, но не редактируется. При сохранении автоматически вычисляется как сумма: hourstheory+hourslab+hourspractice&lt;br /&gt;
* verificationrequested - запрошено согласование мастер-курса (ожидание проверки)&lt;br /&gt;
* coursetemplateversion - версия шаблона курса, соответствующая имени файла с резервной копией&lt;br /&gt;
* courselinktype - тип связи с курсом moodle (прямая подписка или клонирование)&lt;br /&gt;
&lt;br /&gt;
=Дополнительные методы:=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_pitem_by_code($code)'''====&lt;br /&gt;
&lt;br /&gt;
Ищет дисциплины по коду дисциплины.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $code(string) - код дисциплины.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) объект дисциплины.&lt;br /&gt;
* (bool) false если дисциплина не найдена.&lt;br /&gt;
&lt;br /&gt;
===='''get_pitems_list($programmid, $agenum=false, $status = null)'''====&lt;br /&gt;
&lt;br /&gt;
Ищет список дисциплин, относящихся к учебной программе и учебному периоду.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $programmid - id учебной программы из таблицы [[Разработка:storages/programms|programms]].&lt;br /&gt;
* (int) $agenum - порядковый номер периода или false, обозначающий получение дисциплин отсортированных в порядке возрастания периодав и по названию внутри них, по умолчанию false&lt;br /&gt;
* (str) $status - статус, по умолчанию null&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) список дисциплин.&lt;br /&gt;
* (bool) false если дисциплины не найдены.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
По SQL-запросу находим список дисциплин и возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_maxagenum($programmid)'''====&lt;br /&gt;
&lt;br /&gt;
Получить количество периодов для данной учебной программы&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $programmid - id учебной программы из таблицы [[Разработка:storages/programms|programms]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* false - если не нашлось не одной записи&lt;br /&gt;
* 0 - если нашлись только записи с agenum=0, то есть необязательные&lt;br /&gt;
* в остальных случаях возвращается целое число - максимальное кол-во дисциплин в данном периоде&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
По sql-запросу производится поиск максимального значения agenum среди записей с выбранных programmid.&lt;br /&gt;
&lt;br /&gt;
===='''get_gradelevels()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает список всех возможных уровней оценки&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array&lt;br /&gt;
&lt;br /&gt;
===='''get_gradelevel_name($value)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает название уровня оценки по его обозначению&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $value обозначение уровня оценки в БД&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string&lt;br /&gt;
&lt;br /&gt;
===='''get_types()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает все возможные типы дисциплины&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array&lt;br /&gt;
&lt;br /&gt;
===='''get_type_name($value)'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает название типа по его идентификатору в базе&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $value &lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string&lt;br /&gt;
&lt;br /&gt;
===='''is_positive_grade($programmitemid, $grade)'''====&lt;br /&gt;
&lt;br /&gt;
Определяет является ли переданная оценка положительной(достаточной, для продолжения обучения)&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $programmitemid - id предмета, по которому выставляется итоговая оценка&lt;br /&gt;
* (str) $grade - выставляемая оценка&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool&lt;br /&gt;
&lt;br /&gt;
===='''analyze_grade_scale($pitem, $grade)'''====&lt;br /&gt;
&lt;br /&gt;
Определяет является ли переданная оценка допустимой для шкалы текущего предмета&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (obj) $pitem - объект из таблицы [[Разработка:storages/programmitems | programmitems]]&lt;br /&gt;
* (str) $grade - выставляемая оценка&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool&lt;br /&gt;
&lt;br /&gt;
===='''is_grade_valid($id, $grade, $scale=null)'''====&lt;br /&gt;
&lt;br /&gt;
Определяет допустима ли переданная оценка для данной дисциплины&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id предмета в таблице [[Разработка:storages/programmitems | programmitems]]&lt;br /&gt;
* (str) $grade - выставляемая оценка&lt;br /&gt;
* (str) $scale - шкала оценок, если она указывается вручную, по умолчанию null&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool&lt;br /&gt;
&lt;br /&gt;
===='''set_status_deleted($id)'''====&lt;br /&gt;
&lt;br /&gt;
Переводит дисциплину в статус &amp;quot;удален&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id дисциплины&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool (true - если поток удачно завершен и false в остальных случаях)&lt;br /&gt;
&lt;br /&gt;
===='''get_hours_sum($programmitemids)'''====&lt;br /&gt;
&lt;br /&gt;
Получить суммарное количество часов и ЗЕТ по нескольким предметам&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (array) $programmitemids - массив id из таблицы programmitems&lt;br /&gt;
* (int) $id - id дисциплины&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) - false в случае ошибки&lt;br /&gt;
* (object) - или объект с полями:&lt;br /&gt;
** -&amp;gt;maxcredit&lt;br /&gt;
** -&amp;gt;hours&lt;br /&gt;
** -&amp;gt;hourstheory&lt;br /&gt;
** -&amp;gt;hourspractice&lt;br /&gt;
** -&amp;gt;hoursweek&lt;br /&gt;
** -&amp;gt;hourslab&lt;br /&gt;
** -&amp;gt;hoursind&lt;br /&gt;
** -&amp;gt;hourscontrol&lt;br /&gt;
** -&amp;gt;hoursclassroom&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Права=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица прав, объявленных данным плагином&lt;br /&gt;
 ! Код права&lt;br /&gt;
 ! Описание&lt;br /&gt;
 |-&lt;br /&gt;
 |view&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |edit&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |create&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |delete&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |use&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |edit:mdlcourse&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |view/meta&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |edit/meta&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |create/meta&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |delete/meta&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |use/meta&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 |edit:verificationrequested&lt;br /&gt;
 |Отправлять мастер-курсы на проверку&lt;br /&gt;
 |-&lt;br /&gt;
 |benotified:edit:coursetemplateversion&lt;br /&gt;
 |Получать уведомления о результатах проверки мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 |edit:coursetemplateversion&lt;br /&gt;
 |Согласовывать (одобрять/отклонять) версию мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 |benotified:edit:verificationrequested&lt;br /&gt;
 |Получать уведомления о новых запросах на проверку мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 |view:mastercourse&lt;br /&gt;
 |Видеть ссылку на мастер-курс&lt;br /&gt;
 |}&lt;br /&gt;
=События=&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |programmitems&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу programmitems.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |programmitems&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице programmitems.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |programmitems&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы programmitems.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=Задания=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица заданий, которые выполняет этот плагин&lt;br /&gt;
 ! Код задания&lt;br /&gt;
 ! Дополнительный параметр&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |change_mcourse_in_programmitem&lt;br /&gt;
 |Обязателен. Указывается id дисциплины. В mixedvar необходим параметр mdlcourse.&lt;br /&gt;
 |'''Только для внутреннего использования системой'''. Находит все активные подписки на дисциплины в указанной дисциплине, после чего каждую из них приостанавливает. Меняет курс Moodle в дисциплине. Возобновляет приостановленные подписки. Посылается из формы смены курса Moodle на странице просмотра дисциплины.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Плагины обработки todo | storages/programmitems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Периодические задания=&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица периодических заданий, которые выполняет этот плагин&lt;br /&gt;
 ! Метод, выполняющий периодическое задание&lt;br /&gt;
 ! Параметры&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 ! Режим нагрузки&lt;br /&gt;
 |-&lt;br /&gt;
 |check_deleted_courses&lt;br /&gt;
 |Без параметров&lt;br /&gt;
 |Поиск дисциплин с удаленным курсами, отвязка удаленных курсов от дисциплин&lt;br /&gt;
 |loan=2&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3194</id>
		<title>Разработка:sync/mcourses</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3194"/>
				<updated>2018-03-02T08:37:07Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* CRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = mcourses&lt;br /&gt;
| type = sync&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Работа с курсами moodle.&lt;br /&gt;
Плагин отлавливает события создания/обновления дисциплины/учебного процесса, проверяет флаг создания курса в Moodle и создает, если это необходимо.&lt;br /&gt;
&lt;br /&gt;
= Конфиги =&lt;br /&gt;
Список конфигов плагина.&lt;br /&gt;
&lt;br /&gt;
* (string)mdlcategoryvarname - название переменной конфига в плагине sync/mcategories, куда будут добавляться новый курсы Moodle&lt;br /&gt;
* (int)mdlcourseid_template - идентификатор шаблона курса, на основании которого будут создаваться новые курсы в Moodle&lt;br /&gt;
&lt;br /&gt;
= CRON =&lt;br /&gt;
Задачи, которые выполняются по крону.&lt;br /&gt;
&lt;br /&gt;
* Починка неправильно созданных дисциплин (если был параметр создания курса в Moodle, но он не был создан)&lt;br /&gt;
* Починка неправильно созданных учебных процессов (если был параметр создания курса в Moodle, но он не был создан)&lt;br /&gt;
&lt;br /&gt;
=События=&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Идентификтаор&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_verification_requested&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* initiator - пользователь, запросивший согласование&lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Запрошено согласование мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_accepted&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс одобрен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_declined&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс отклонен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление учебного процесса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление учебного процесса&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
===='''get_course($id)'''====&lt;br /&gt;
Получить объект курса moodle по его id&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object|bool - объект курса или false&lt;br /&gt;
&lt;br /&gt;
===='''get_course_link($id)'''====&lt;br /&gt;
Получить ссылку на курс moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string|bool - строка для ссылки на курс или false если такого курса нет&lt;br /&gt;
&lt;br /&gt;
===='''course_exists_quiet($id)'''====&lt;br /&gt;
Аккуратно проверить существование курса в moodle, не создавая ошибок print_error&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool - true, если курс существует; false, если курс не существует&lt;br /&gt;
&lt;br /&gt;
===='''create_backup($courseid, $backupoptions = [], $fileoptions = [])'''====&lt;br /&gt;
Создание резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $backupoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''restore_backup($courseid, $restoreoptions = [], $fileoptions = [], $courseoptions = [])'''====&lt;br /&gt;
Восстановление курса из резервной копии&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* int $courseid&lt;br /&gt;
* array $restoreoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
* array $courseoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''backup_exists($courseid, $fileoptions = [])'''====&lt;br /&gt;
Проверка существования резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''create_course(stdClass $courseobj)'''====&lt;br /&gt;
Создание курса мудл&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''clone_course($mdlcourseid, stdClass $courseobj)'''====&lt;br /&gt;
Создание курса на основе существующего курса в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $mdlcourseid - id курса в moodle&lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int | false - идентификатора курса вслучае успеха и false в остальных случаях&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3193</id>
		<title>Разработка:sync/mcourses</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3193"/>
				<updated>2018-03-02T08:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = mcourses&lt;br /&gt;
| type = sync&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Работа с курсами moodle.&lt;br /&gt;
Плагин отлавливает события создания/обновления дисциплины/учебного процесса, проверяет флаг создания курса в Moodle и создает, если это необходимо.&lt;br /&gt;
&lt;br /&gt;
= Конфиги =&lt;br /&gt;
Список конфигов плагина.&lt;br /&gt;
&lt;br /&gt;
* (string)mdlcategoryvarname - название переменной конфига в плагине sync/mcategories, куда будут добавляться новый курсы Moodle&lt;br /&gt;
* (int)mdlcourseid_template - идентификатор шаблона курса, на основании которого будут создаваться новые курсы в Moodle&lt;br /&gt;
&lt;br /&gt;
= CRON =&lt;br /&gt;
Задачи, который выполняются по крону.&lt;br /&gt;
&lt;br /&gt;
* Починка неправильно созданных дисциплин (если был параметр создания курса в Moodle, но он не был создан)&lt;br /&gt;
* Починка неправильно созданных учебных процессов (если был параметр создания курса в Moodle, но он не был создан)&lt;br /&gt;
&lt;br /&gt;
=События=&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Идентификтаор&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_verification_requested&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* initiator - пользователь, запросивший согласование&lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Запрошено согласование мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_accepted&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс одобрен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_declined&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс отклонен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление учебного процесса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление учебного процесса&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
===='''get_course($id)'''====&lt;br /&gt;
Получить объект курса moodle по его id&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object|bool - объект курса или false&lt;br /&gt;
&lt;br /&gt;
===='''get_course_link($id)'''====&lt;br /&gt;
Получить ссылку на курс moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string|bool - строка для ссылки на курс или false если такого курса нет&lt;br /&gt;
&lt;br /&gt;
===='''course_exists_quiet($id)'''====&lt;br /&gt;
Аккуратно проверить существование курса в moodle, не создавая ошибок print_error&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool - true, если курс существует; false, если курс не существует&lt;br /&gt;
&lt;br /&gt;
===='''create_backup($courseid, $backupoptions = [], $fileoptions = [])'''====&lt;br /&gt;
Создание резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $backupoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''restore_backup($courseid, $restoreoptions = [], $fileoptions = [], $courseoptions = [])'''====&lt;br /&gt;
Восстановление курса из резервной копии&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* int $courseid&lt;br /&gt;
* array $restoreoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
* array $courseoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''backup_exists($courseid, $fileoptions = [])'''====&lt;br /&gt;
Проверка существования резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''create_course(stdClass $courseobj)'''====&lt;br /&gt;
Создание курса мудл&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''clone_course($mdlcourseid, stdClass $courseobj)'''====&lt;br /&gt;
Создание курса на основе существующего курса в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $mdlcourseid - id курса в moodle&lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int | false - идентификатора курса вслучае успеха и false в остальных случаях&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3192</id>
		<title>Разработка:sync/mcourses</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcourses&amp;diff=3192"/>
				<updated>2018-03-02T08:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = mcourses&lt;br /&gt;
| type = sync&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Работа с курсами moodle&lt;br /&gt;
&lt;br /&gt;
= Конфиги =&lt;br /&gt;
Список конфигов плагина.&lt;br /&gt;
&lt;br /&gt;
* (string)mdlcategoryvarname - название переменной конфига в плагине sync/mcategories, куда будут добавляться новый курсы Moodle&lt;br /&gt;
* (int)mdlcourseid_template - идентификатор шаблона курса, на основании которого будут создаваться новые курсы в Moodle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=События=&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Идентификтаор&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_verification_requested&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* initiator - пользователь, запросивший согласование&lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Запрошено согласование мастер-курса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_accepted&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс одобрен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | coursedata_declined&lt;br /&gt;
 | идентификатор курса&lt;br /&gt;
 | массив с данными: &lt;br /&gt;
* course - наименование курса&lt;br /&gt;
* discipline - наименование дисциплины&lt;br /&gt;
* notificationresult - массив с результатами отправки уведомлений &lt;br /&gt;
 | Мастер-курс отклонен&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | programmitems&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление дисциплины&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | insert&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Добавление учебного процесса&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | cstreams&lt;br /&gt;
 | update&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | Обновление учебного процесса&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
===='''get_course($id)'''====&lt;br /&gt;
Получить объект курса moodle по его id&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object|bool - объект курса или false&lt;br /&gt;
&lt;br /&gt;
===='''get_course_link($id)'''====&lt;br /&gt;
Получить ссылку на курс moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* string|bool - строка для ссылки на курс или false если такого курса нет&lt;br /&gt;
&lt;br /&gt;
===='''course_exists_quiet($id)'''====&lt;br /&gt;
Аккуратно проверить существование курса в moodle, не создавая ошибок print_error&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id курса в moodle&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool - true, если курс существует; false, если курс не существует&lt;br /&gt;
&lt;br /&gt;
===='''create_backup($courseid, $backupoptions = [], $fileoptions = [])'''====&lt;br /&gt;
Создание резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $backupoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''restore_backup($courseid, $restoreoptions = [], $fileoptions = [], $courseoptions = [])'''====&lt;br /&gt;
Восстановление курса из резервной копии&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* int $courseid&lt;br /&gt;
* array $restoreoptions&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
* array $courseoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''backup_exists($courseid, $fileoptions = [])'''====&lt;br /&gt;
Проверка существования резервной копии курса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $courseid - id курса в moodle&lt;br /&gt;
* array $fileoptions&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* boolean&lt;br /&gt;
&lt;br /&gt;
===='''create_course(stdClass $courseobj)'''====&lt;br /&gt;
Создание курса мудл&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int&lt;br /&gt;
&lt;br /&gt;
===='''clone_course($mdlcourseid, stdClass $courseobj)'''====&lt;br /&gt;
Создание курса на основе существующего курса в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $mdlcourseid - id курса в moodle&lt;br /&gt;
* stdClass $courseobj&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int | false - идентификатора курса вслучае успеха и false в остальных случаях&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcategories&amp;diff=3191</id>
		<title>Разработка:sync/mcategories</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:sync/mcategories&amp;diff=3191"/>
				<updated>2018-03-02T08:15:03Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: Новая страница: «{{Infobox_Plugin | name = mcategories | type = sync }}  Работа с категориями moodle. Плагин позволяет синхронизироват...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = mcategories&lt;br /&gt;
| type = sync&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Работа с категориями moodle.&lt;br /&gt;
Плагин позволяет синхронизировать подразделения с категориями Moodle.&lt;br /&gt;
Предоставляется возможность синхронизации двух независимых веток категорий Moodle независимо друг от друга.&lt;br /&gt;
Все методы обработки работают через библиотеку ama (modlib/ama).&lt;br /&gt;
&lt;br /&gt;
= События =&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Идентификтаор&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | departments&lt;br /&gt;
 | insert&lt;br /&gt;
 | идентификатор подразделения&lt;br /&gt;
 | &lt;br /&gt;
 | Событие добавления подразделения&lt;br /&gt;
 |-&lt;br /&gt;
 | storage&lt;br /&gt;
 | departments&lt;br /&gt;
 | update&lt;br /&gt;
 | идентификатор подразделения&lt;br /&gt;
 | &lt;br /&gt;
 | Событие обновления подразделения&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Конфиги =&lt;br /&gt;
Список конфигов плагина.&lt;br /&gt;
&lt;br /&gt;
* (bool)syncenable1 - отвечает за включение автоматической синхронизации создаваемых дочерних подразделений с категориями курсов&lt;br /&gt;
* (bool)syncenable2 - сихнронизация второй ветки подразделений&lt;br /&gt;
* (int)mdlcategoryid1 - должна хранить в себе идентификатор категории курсов moodle, связанной с редактируемым подразделением&lt;br /&gt;
* (int)mdlcategoryid2 - идентификатор категории второй ветки&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
Список TODO задач плагина.&lt;br /&gt;
* update_department_mdlcategory_tree =&amp;gt; $departmentid - синхронизация ветки подразделений, начиная от переданного идентификатора, с веткой категорий Moodle.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
==='''get_category($id)'''===&lt;br /&gt;
Получить объект категории Moodle по его id&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id категории в moodle&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object|bool - объект категории или false&lt;br /&gt;
&lt;br /&gt;
===='''get_courses($id, $options = [])'''====&lt;br /&gt;
Получить курсы Moodle в переданной категории&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id категории в moodle&lt;br /&gt;
* array $options - дополнительные опции&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив курсов&lt;br /&gt;
&lt;br /&gt;
===='''get_courses_count($id, $options = [])'''====&lt;br /&gt;
Получить количество курсов в категории&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* int $id - id категории в moodle&lt;br /&gt;
* array $options - дополнительные опции&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int - количество курсов в категории&lt;br /&gt;
&lt;br /&gt;
===='''create($categoryobj)'''====&lt;br /&gt;
Создание категории в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $categoryobj - простой объект с базовыми полями категории&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* bool int - идентификатора созданной категории&lt;br /&gt;
&lt;br /&gt;
===='''update(stdClass $categoryobj)====&lt;br /&gt;
Обновление категории в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $categoryobj - простой объект с полями категории&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
&lt;br /&gt;
* bool int | false - идентификатора обновленной категории в случае удачного обновления или false в остальных случаях&lt;br /&gt;
&lt;br /&gt;
===='''delete(stdClass $categoryobj)'''====&lt;br /&gt;
Удаление категории в Moodle&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* stdClass $categoryobj - простой объект с полями категории&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
&lt;br /&gt;
* bool int | false - идентификатора обновленной категории в случае удачного удаления или false в остальных случаях&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/acl&amp;diff=3190</id>
		<title>Разработка:storages/acl</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/acl&amp;diff=3190"/>
				<updated>2018-03-02T07:51:38Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Перехватываемые события */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = acl&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Кеширование===&lt;br /&gt;
Права кешируются на уровне сесси пользователя.&lt;br /&gt;
Если какие-то права были добавлены, но кеш не сбросился, то необходимо перезайти в систему для сброса сессии и обновления кеш хранилища.&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''acl'' - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: [[Разработка:Управление_доступом | Управление доступом]].&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* id - номер записи &lt;br /&gt;
* code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)&lt;br /&gt;
* plugintype - тип плагина (im, storage, workflow, sync, modlib)&lt;br /&gt;
* plugincode - код плагина&lt;br /&gt;
* objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)&lt;br /&gt;
* aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]]&lt;br /&gt;
&lt;br /&gt;
==== Стандартные полномочия для хранилищ и рабочих процессов ====&lt;br /&gt;
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:&lt;br /&gt;
&lt;br /&gt;
* view - право просматривать объект из таблицы&lt;br /&gt;
* edit - право редактировать объект из таблицы&lt;br /&gt;
* create - право создавать новый объект в таблице&lt;br /&gt;
* delete - право удалять объект из таблицы&lt;br /&gt;
* viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)&lt;br /&gt;
* viewextended - право просматривать расширенную информацию по объекту (все поля)&lt;br /&gt;
* edit:имя_поля - право редактировать отдельное поле&lt;br /&gt;
* view:имя_поля - право просматривать отдельное поле&lt;br /&gt;
* changestatus - вообще изменять статус (с любого на любой)&lt;br /&gt;
* changestatus:from:статус - изменять статус с указанного&lt;br /&gt;
* changestatus:to:статус - изменять статус на указанный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права.&lt;br /&gt;
Отношение указывается через прямой слеш &amp;quot;/&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
* 'edit/owner' - право редактировать объект для владельца.&lt;br /&gt;
* 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | acl&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш хранилище прав&lt;br /&gt;
 |-&lt;br /&gt;
 | acl&lt;br /&gt;
 | storage&lt;br /&gt;
 | delete&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш хранилище прав&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''get_persons_acl_by_code($plugintype, $plugincode, $aclcode, $departmentid = 0, $objectid = 0)'''====&lt;br /&gt;
&lt;br /&gt;
Получить список персон имеющих указанное полномочие&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $plugintype - тип плагина деканата&lt;br /&gt;
* int $plugincode - код плагина деканата&lt;br /&gt;
* int $aclcode - код права&lt;br /&gt;
* int $departmentid - id подразделения&lt;br /&gt;
* int $objectid - id объекта&lt;br /&gt;
''Возвращает значение:''&lt;br /&gt;
* array|false - массив записей из БД, содержащих идентификатор пользователя и подразделения или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление доступом]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/acl&amp;diff=3189</id>
		<title>Разработка:storages/acl</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/acl&amp;diff=3189"/>
				<updated>2018-03-02T07:51:27Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = acl&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Кеширование===&lt;br /&gt;
Права кешируются на уровне сесси пользователя.&lt;br /&gt;
Если какие-то права были добавлены, но кеш не сбросился, то необходимо перезайти в систему для сброса сессии и обновления кеш хранилища.&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''acl'' - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: [[Разработка:Управление_доступом | Управление доступом]].&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* id - номер записи &lt;br /&gt;
* code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)&lt;br /&gt;
* plugintype - тип плагина (im, storage, workflow, sync, modlib)&lt;br /&gt;
* plugincode - код плагина&lt;br /&gt;
* objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)&lt;br /&gt;
* aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]]&lt;br /&gt;
&lt;br /&gt;
==== Стандартные полномочия для хранилищ и рабочих процессов ====&lt;br /&gt;
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:&lt;br /&gt;
&lt;br /&gt;
* view - право просматривать объект из таблицы&lt;br /&gt;
* edit - право редактировать объект из таблицы&lt;br /&gt;
* create - право создавать новый объект в таблице&lt;br /&gt;
* delete - право удалять объект из таблицы&lt;br /&gt;
* viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)&lt;br /&gt;
* viewextended - право просматривать расширенную информацию по объекту (все поля)&lt;br /&gt;
* edit:имя_поля - право редактировать отдельное поле&lt;br /&gt;
* view:имя_поля - право просматривать отдельное поле&lt;br /&gt;
* changestatus - вообще изменять статус (с любого на любой)&lt;br /&gt;
* changestatus:from:статус - изменять статус с указанного&lt;br /&gt;
* changestatus:to:статус - изменять статус на указанный&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права.&lt;br /&gt;
Отношение указывается через прямой слеш &amp;quot;/&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
* 'edit/owner' - право редактировать объект для владельца.&lt;br /&gt;
* 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | acl&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш хранилище прав&lt;br /&gt;
 |-&lt;br /&gt;
 | acl&lt;br /&gt;
 | storage&lt;br /&gt;
 | delete&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш хранилище прав&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''get_persons_acl_by_code($plugintype, $plugincode, $aclcode, $departmentid = 0, $objectid = 0)'''====&lt;br /&gt;
&lt;br /&gt;
Получить список персон имеющих указанное полномочие&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $plugintype - тип плагина деканата&lt;br /&gt;
* int $plugincode - код плагина деканата&lt;br /&gt;
* int $aclcode - код права&lt;br /&gt;
* int $departmentid - id подразделения&lt;br /&gt;
* int $objectid - id объекта&lt;br /&gt;
''Возвращает значение:''&lt;br /&gt;
* array|false - массив записей из БД, содержащих идентификатор пользователя и подразделения или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление доступом]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/config&amp;diff=3188</id>
		<title>Разработка:storages/config</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/config&amp;diff=3188"/>
				<updated>2018-03-02T07:44:13Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = config&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''config'' - таблица настроек.&lt;br /&gt;
Описание настройки всех плагинов должно записываться в языковой файл в виде - config:код настройки.&lt;br /&gt;
Конфиги кешируются и обновляются при CrUD действиях над справочником конфигов.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* id - номер записи &lt;br /&gt;
* departmentid - номер записи в таблице [[Разработка:storages/departments | departments ]]&lt;br /&gt;
* code - кодовое обозначение&lt;br /&gt;
* type - тип настройки. Задается как тип элемента quickform. Возможные значения&lt;br /&gt;
** checkbox&lt;br /&gt;
** password&lt;br /&gt;
** passwordunmask&lt;br /&gt;
** text&lt;br /&gt;
** textarea&lt;br /&gt;
** date_selector&lt;br /&gt;
** date_time_selector&lt;br /&gt;
** selectyesno&lt;br /&gt;
** advcheckbox&lt;br /&gt;
** file&lt;br /&gt;
** radio&lt;br /&gt;
** select&lt;br /&gt;
** htmleditor&lt;br /&gt;
** dof_duration&lt;br /&gt;
* value - значения настройки&lt;br /&gt;
* plugintype - тип плагина (im, storage, workflow, sync, modlib)&lt;br /&gt;
* plugincode - код плагина&lt;br /&gt;
* noextend -  запретить наследование настройки (принимает или 0 или 1)&lt;br /&gt;
* personid - персона из  [[Разработка:storages/persons | persons ]], для которго действует настройка(0 для всех)&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | config&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш конфигов подразделений&lt;br /&gt;
 |-&lt;br /&gt;
 | config&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш конфигов подразделений&lt;br /&gt;
 |-&lt;br /&gt;
 | config&lt;br /&gt;
 | storage&lt;br /&gt;
 | delete&lt;br /&gt;
 | &lt;br /&gt;
 | Сбрасывается кеш конфигов подразделений&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3187</id>
		<title>Разработка:storages/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3187"/>
				<updated>2018-03-02T07:28:47Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* name - название&lt;br /&gt;
* code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи. &lt;br /&gt;
* managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]]&lt;br /&gt;
* leaddepid - вышестоящее структурное подразделение&lt;br /&gt;
* addressid - местоположение в таблице [[Разработка:storages/addresses | addresses ]]&lt;br /&gt;
* zone - временная зона, действующая в подразделении&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/departments | departments ]]&lt;br /&gt;
* path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены &amp;quot;/&amp;quot;&lt;br /&gt;
* depth - глубина вложенности подразделения&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''departments_list()'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех структурных подразделений в алфавитном порядке&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все существующие структурные подразделения.&lt;br /&gt;
# для каждого подразделения создаем запись в массиве.&lt;br /&gt;
# сортируем массив и возвращаем значение.&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = '0' ,$spase = '')'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех подчиненных структурных подразделений по id структурного подразделения.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id подразделения, по умолчанию - головное (0).&lt;br /&gt;
* (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) список дочерних подразделений.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим дочерние подразделения первого уровня для данного подразделения.&lt;br /&gt;
# для каждого подразделения:&lt;br /&gt;
#* создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения.&lt;br /&gt;
#* находим дочерние подразделения для полученного подразделения.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_numberof_departments($select)'''====&lt;br /&gt;
&lt;br /&gt;
Подсчитывает количество записей, найденных по критериям&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $select - условие выборки&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* mixed&lt;br /&gt;
&lt;br /&gt;
===='''get_default()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object&lt;br /&gt;
&lt;br /&gt;
===='''get_default_id()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает id объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int - id объект департамента&lt;br /&gt;
&lt;br /&gt;
===='''is_code_notunique($code)'''====&lt;br /&gt;
&lt;br /&gt;
Проверяет уникальность кодового названия&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $code&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если запись не уникальна&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = '', $code = false, $accesscheck = true)'''====&lt;br /&gt;
Выводит список всех дочерних структурных подразделений указанного подразделения&lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int) $id - id подразделения, к которому хотим получить список подчиненных&lt;br /&gt;
* (int) $depth - глубина, для которой выводим список подразделений и их дочек&lt;br /&gt;
* (string) $path - путь, для &lt;br /&gt;
* (string) $select&lt;br /&gt;
* (string) $space&lt;br /&gt;
* (bool) $code - выводит только код(без названия-используется для блока слева подразделении)&lt;br /&gt;
* (bool) $accesscheck - проверять ли права при составлении списка подразделений?&lt;br /&gt;
             true - проверять&lt;br /&gt;
             false - не проверять&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Cписок дочерних подразделений&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации.&lt;br /&gt;
* Получить структурное подразделение по его коду&lt;br /&gt;
* Получить список подчиненных структурных подразделений первого уровня по id структурного подразделения&lt;br /&gt;
* Получить список структурных подразделений, подчиняющихся сотруднику по id персоны&lt;br /&gt;
* Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение)&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 | status = deleted&lt;br /&gt;
 | Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы departments.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3186</id>
		<title>Разработка:storages/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3186"/>
				<updated>2018-03-02T07:28:34Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* name - название&lt;br /&gt;
* code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи. &lt;br /&gt;
* managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]]&lt;br /&gt;
* leaddepid - вышестоящее структурное подразделение&lt;br /&gt;
* addressid - местоположение в таблице [[Разработка:storages/addresses | addresses ]]&lt;br /&gt;
* zone - временная зона, действующая в подразделении&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/departments | departments ]]&lt;br /&gt;
* path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены &amp;quot;/&amp;quot;&lt;br /&gt;
* depth - глубина вложенности подразделения&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''departments_list()'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех структурных подразделений в алфавитном порядке&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все существующие структурные подразделения.&lt;br /&gt;
# для каждого подразделения создаем запись в массиве.&lt;br /&gt;
# сортируем массив и возвращаем значение.&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = '0' ,$spase = '')'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех подчиненных структурных подразделений по id структурного подразделения.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id подразделения, по умолчанию - головное (0).&lt;br /&gt;
* (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) список дочерних подразделений.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим дочерние подразделения первого уровня для данного подразделения.&lt;br /&gt;
# для каждого подразделения:&lt;br /&gt;
#* создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения.&lt;br /&gt;
#* находим дочерние подразделения для полученного подразделения.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_numberof_departments($select)'''====&lt;br /&gt;
&lt;br /&gt;
Подсчитывает количество записей, найденных по критериям&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $select - условие выборки&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* mixed&lt;br /&gt;
&lt;br /&gt;
===='''get_default()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object&lt;br /&gt;
&lt;br /&gt;
===='''get_default_id()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает id объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int - id объект департамента&lt;br /&gt;
&lt;br /&gt;
===='''is_code_notunique($code)'''====&lt;br /&gt;
&lt;br /&gt;
Проверяет уникальность кодового названия&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $code&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если запись не уникальна&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = '', $code = false, $accesscheck = true)'''====&lt;br /&gt;
Выводит список всех дочерних структурных подразделений указанного подразделения&lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int) $id - id подразделения, к которому хотим получить список подчиненных&lt;br /&gt;
* (int) $depth - глубина, для которой выводим список подразделений и их дочек&lt;br /&gt;
* (string) $path - путь, для &lt;br /&gt;
* (string) $select&lt;br /&gt;
* (string) $space&lt;br /&gt;
* (bool) $code - выводит только код(без названия-используется для блока слева подразделении)&lt;br /&gt;
* (bool) $accesscheck - проверять ли права при составлении списка подразделений?&lt;br /&gt;
*            true - проверять&lt;br /&gt;
*            false - не проверять&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Cписок дочерних подразделений&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации.&lt;br /&gt;
* Получить структурное подразделение по его коду&lt;br /&gt;
* Получить список подчиненных структурных подразделений первого уровня по id структурного подразделения&lt;br /&gt;
* Получить список структурных подразделений, подчиняющихся сотруднику по id персоны&lt;br /&gt;
* Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение)&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 | status = deleted&lt;br /&gt;
 | Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы departments.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3185</id>
		<title>Разработка:storages/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:storages/departments&amp;diff=3185"/>
				<updated>2018-03-02T07:28:10Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости.&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
* name - название&lt;br /&gt;
* code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи. &lt;br /&gt;
* managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]]&lt;br /&gt;
* leaddepid - вышестоящее структурное подразделение&lt;br /&gt;
* addressid - местоположение в таблице [[Разработка:storages/addresses | addresses ]]&lt;br /&gt;
* zone - временная зона, действующая в подразделении&lt;br /&gt;
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/departments | departments ]]&lt;br /&gt;
* path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены &amp;quot;/&amp;quot;&lt;br /&gt;
* depth - глубина вложенности подразделения&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
===='''departments_list()'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех структурных подразделений в алфавитном порядке&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим все существующие структурные подразделения.&lt;br /&gt;
# для каждого подразделения создаем запись в массиве.&lt;br /&gt;
# сортируем массив и возвращаем значение.&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = '0' ,$spase = '')'''====&lt;br /&gt;
&lt;br /&gt;
Выводит список всех подчиненных структурных подразделений по id структурного подразделения.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (int) $id - id подразделения, по умолчанию - головное (0).&lt;br /&gt;
* (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) список дочерних подразделений.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# находим дочерние подразделения первого уровня для данного подразделения.&lt;br /&gt;
# для каждого подразделения:&lt;br /&gt;
#* создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения.&lt;br /&gt;
#* находим дочерние подразделения для полученного подразделения.&lt;br /&gt;
# возвращаем результат.&lt;br /&gt;
&lt;br /&gt;
===='''get_numberof_departments($select)'''====&lt;br /&gt;
&lt;br /&gt;
Подсчитывает количество записей, найденных по критериям&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $select - условие выборки&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* mixed&lt;br /&gt;
&lt;br /&gt;
===='''get_default()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object&lt;br /&gt;
&lt;br /&gt;
===='''get_default_id()'''====&lt;br /&gt;
&lt;br /&gt;
Возвращает id объект департамента по умолчанию&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
нет&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* int - id объект департамента&lt;br /&gt;
&lt;br /&gt;
===='''is_code_notunique($code)'''====&lt;br /&gt;
&lt;br /&gt;
Проверяет уникальность кодового названия&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* (str) $code&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если запись не уникальна&lt;br /&gt;
&lt;br /&gt;
===='''departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = '', $code = false, $accesscheck = true)'''====&lt;br /&gt;
Выводит список всех дочерних структурных подразделений указанного подразделения&lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int) $id - id подразделения, к которому хотим получить список подчиненных&lt;br /&gt;
* (int) $depth - глубина, для которой выводим список подразделений и их дочек&lt;br /&gt;
* (string) $path - путь, для &lt;br /&gt;
* (string) $select&lt;br /&gt;
* (string) $space&lt;br /&gt;
* (bool) $code - выводит только код(без названия-используется для блока слева подразделении)&lt;br /&gt;
* (bool) $accesscheck - проверять ли права при составлении списка подразделений?&lt;br /&gt;
*                              true - проверять&lt;br /&gt;
*                              false - не проверять&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Cписок дочерних подразделений&lt;br /&gt;
&lt;br /&gt;
===Планы:===&lt;br /&gt;
====Дополнительные методы:====&lt;br /&gt;
* Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации.&lt;br /&gt;
* Получить структурное подразделение по его коду&lt;br /&gt;
* Получить список подчиненных структурных подразделений первого уровня по id структурного подразделения&lt;br /&gt;
* Получить список структурных подразделений, подчиняющихся сотруднику по id персоны&lt;br /&gt;
* Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение)&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 |&lt;br /&gt;
 | Обновляет path и depth&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 | status = deleted&lt;br /&gt;
 | Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые генерирует этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |insert&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; объект с данными для вставки в таблицу.&lt;br /&gt;
''Пример:'' array('new' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при вставке новой записи в таблицу departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |update&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;new&amp;quot; обновленный объект, и в поле &amp;quot;old&amp;quot; объект со старыми данными, до обновления записи.&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject_old, 'new' =&amp;gt; $dataobject_new)&lt;br /&gt;
 |Генерируется каждый раз при обновлении записи в таблице departments.&lt;br /&gt;
 |-&lt;br /&gt;
 |storage&lt;br /&gt;
 |departments&lt;br /&gt;
 |delete&lt;br /&gt;
 |Массив, содержащий в поле &amp;quot;old&amp;quot; объект с данными, которые удаляются из таблицы&lt;br /&gt;
''Пример:'' array('old' =&amp;gt; $dataobject)&lt;br /&gt;
 |Генерируется каждый раз при удалении записи из таблицы departments.&lt;br /&gt;
 |}&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3184</id>
		<title>Разработка:im/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3184"/>
				<updated>2018-03-02T07:24:45Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Подразделения ==&lt;br /&gt;
Интерфейс позволяет производить действия с подразделениями системы. Подразделения - отдельные элементы Деканата, которые позволяют разграничить работу с контингентом, установить собственные настройки плагинов и права пользователей. Под подразделениями можно понимать такие элементы, как Институты и их Филиалы, Факультеты и Отделы.&lt;br /&gt;
&lt;br /&gt;
=== Список подразделений ===&lt;br /&gt;
Подразделения выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения.&lt;br /&gt;
В зависимости от уровня прав, которыми располагает пользователь, становятся доступны функции создания, удаления и редактирования.&lt;br /&gt;
Интерфейс позволяет увидеть только подразделения текущего местонахождения пользователя( само подразделение и его прямые потомки ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Форма сохранения подразделения ===&lt;br /&gt;
&lt;br /&gt;
Форма сохранения подразделения приспособлена под включение на любую страницу системы и работает с системой потока сообщений Деканата. &lt;br /&gt;
&lt;br /&gt;
'''Назначение полей:'''&lt;br /&gt;
* ''Название'' - Название подразделения. Обязательное поле.&lt;br /&gt;
* ''Код подразделения'' - Обязательное поле. Уникальное поле. Автоматически генерируется для новых подразделений, если не указано вручную(транслитерация первых 10 символов названия и  добавление случайного номера).&lt;br /&gt;
* ''Руководитель'' - Необязательное поле. Руководитель структурного подразделения. По-умолчанию не указан. Выбирается из списка существующих персон и несет исключительно информационную цель. Пользователь не получает никаких прав, став Руководителем.&lt;br /&gt;
* ''Вышестоящий отдел'' - Обязательное поле. Какому подразделению подчиняется данное подразделение. По умолчанию стоит подразделение текущего местоположения пользователя. Выбирается из списка существующих подразделений. &lt;br /&gt;
* ''Часовой пояс'' - Обязательное поле. Временная зона подразделения. Необходимо для правильного расчета времени при составлении расписания и др. действий в системе. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера. &lt;br /&gt;
&lt;br /&gt;
=== Карточка отдела ===&lt;br /&gt;
&lt;br /&gt;
Выводит всю информацию о структурном подразделении. Также выводит список всех дочерних подразделения данного подразделения в древовидной структуре.&lt;br /&gt;
&lt;br /&gt;
===События===&lt;br /&gt;
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.&lt;br /&gt;
&lt;br /&gt;
====Перехватываемые события====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 |+ Таблица событий, которые перехватывает этот плагин&lt;br /&gt;
 ! Тип плагина&lt;br /&gt;
 ! Код плагина&lt;br /&gt;
 ! Код события&lt;br /&gt;
 ! Доп. данные&lt;br /&gt;
 ! Пояснение&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | insert&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш списка подразделений&lt;br /&gt;
 |-&lt;br /&gt;
 | departments&lt;br /&gt;
 | storage&lt;br /&gt;
 | update&lt;br /&gt;
 |&lt;br /&gt;
 | Сбрасывается кеш списка подразделений&lt;br /&gt;
 |-&lt;br /&gt;
 | obj&lt;br /&gt;
 | im&lt;br /&gt;
 | get_object_url&lt;br /&gt;
 | &lt;br /&gt;
 | Возвращается ссылка на объект&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
====Генерируемые события====&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Методы интерфейса подразделений&lt;br /&gt;
&lt;br /&gt;
===== get_listing() =====&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $limitfrom - с какой записи начинать вывод&lt;br /&gt;
* $limitnum - сколько записей выводить на одной странице&lt;br /&gt;
* $conds - Обьект, содержащий данные с условиями выборки, в формате ''поле_БД-&amp;gt;значение'' по умолчанию пустой массив&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив записей из базы, или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
=====showlist($list, $addvars, $options = [])=====&lt;br /&gt;
Возвращает HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (array) $list - Массив подразделений из справочника [[Разработка:storages/departments|departments]].&lt;br /&gt;
* (array) $addvars - Массив GET-параметров для передачи по ссылкам.&lt;br /&gt;
* (array) $options - Массив дополнительных параметров отображения&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) -  HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
===== show_id() =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $id - id записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-код или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_html_link($id, $withcode = false) =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$id - ID записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
* (bool)$withcode - Требуется код подразделения в названии ссылки&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-строка со ссылкой на подразделение или пустая строка в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_departments_select_options($parentdep = 0, $options = []) =====&lt;br /&gt;
Возвращает список доступных подразделений для отображения в селекте. &lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$parentdep - Подразделение, от которого начинается сбор массива&lt;br /&gt;
* (array)$options - Массив опций сбора данных&lt;br /&gt;
             ['delimiter'] - Разделитель для уровней иерархии. По - умолчанию '-' &lt;br /&gt;
             ['statuses'] -  Массив статусов в виде ['status1', 'status2']. По-умолчанию - actual метастатус&lt;br /&gt;
             ['access_callback'] - Функция дополнительной проверки прав доступа к подразделению&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Массив для добавления в select список&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/journal&amp;diff=3183</id>
		<title>Разработка:im/journal</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/journal&amp;diff=3183"/>
				<updated>2018-03-02T07:19:02Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Журнал группы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = journal&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
= Классный журнал =&lt;br /&gt;
В журнале можно выставлять оценки и вводить отчет о проведенном уроке.&lt;br /&gt;
== Список занятий ==&lt;br /&gt;
Включает в себя три страницы: информацию о текущем дне, список занятий в целом и поиск занятий по конкретной персоне.&lt;br /&gt;
Каждая страница содержит соответствующую ей навигацию.&lt;br /&gt;
====Список занятий за текущий день====&lt;br /&gt;
При заходе с главной страницы при нажатии на ссылку &amp;quot;Журнал&amp;quot; пользователь попадает именно на эту страницу, с нее начинается работа со списком занятий. &lt;br /&gt;
&lt;br /&gt;
В начале страницы отображается секция навигации, с помощью которой пользователь может перейти на просмотр списка занятий в целом, поиск занятий по персоне или просмотреть отчет по фактической нагрузке.&lt;br /&gt;
&lt;br /&gt;
Далее отображаются все уроки пользователя за сегодняшний день. Если уроков нет секция остается пустой.&lt;br /&gt;
&lt;br /&gt;
После этого отображается секция нагрузки пользователя. В ней пользователь может просмотреть всю информацию о своих табельных нагрузках: подразделение, к которому относится табель, табельный номер, ставка в часах фактическая и указанная и табеле, а также список всех активных учебных процессов, которые преподает пользователь. Каждая табельная нагрузка выводится в отдельной таблице.&lt;br /&gt;
====Список занятий в целом====&lt;br /&gt;
В начале страницы отображается секция навигации, с помощью которой пользователь может вернутся обратно на страницу списка занятий за день, а также перейти на страницу поиска занятий по персоне.&lt;br /&gt;
&lt;br /&gt;
После навигации пользователь видит два календарика, где он может выбрать как один определенный день, так и целый период, за который он хочет просмотреть список занятий. &lt;br /&gt;
&lt;br /&gt;
Далее отображается список занятий за указанный день или период.&lt;br /&gt;
&lt;br /&gt;
====Поиск занятий по персоне====&lt;br /&gt;
&lt;br /&gt;
На этой странице пользователь видит текстовое поле для ввода фамилии (а может даже имени и отчества) персоны и кнопку &amp;quot;Найти&amp;quot;. Если по запросу были найдены персоны, он выведет их в виде списка. Кликнув на искомую персону пользователя перекинет на страницу просмотра списка занятий в целом, но уже по конкретной персоне.&lt;br /&gt;
&lt;br /&gt;
== Журнал группы ==&lt;br /&gt;
Страница принимает обязательный параметр id учебного процесса.&lt;br /&gt;
&lt;br /&gt;
Под панелью навигации выводится надпись &amp;quot;Журнал группы&amp;quot;.&lt;br /&gt;
Ниже таблица с информацией о потоке - программа, предмет, группа, преподаватель. Справа от этой таблицы размещена  ссылка &amp;quot;Новый урок&amp;quot;. Нажатие на нее позволяет создать новый отчет об уроке. Над этой ссылкой будут выводиться сообщения об ошибках сохранения данных из таблицы оценок.&lt;br /&gt;
&lt;br /&gt;
По умолчанию журнал отображает занятия начиная с даты, являющейся разницей текущей даты - 30 дней.&lt;br /&gt;
Опционально можно отобразить все занятия, нажав на кнопку загрузки полного списка занятий.&lt;br /&gt;
&lt;br /&gt;
Ниже отображаются две таблицы - таблица оценок и, справа от нее, таблица уроков. Обе таблицы сделаны максимально похожими на соответствующие таблицы в бумажном &amp;quot;Классном журнале&amp;quot;. Таблицы связаны друг с другом, содержат в себе темы с directmap=1&lt;br /&gt;
&lt;br /&gt;
Таблица уроков содержит в себе темы и события связанные с указанным учебным процессом, кроме удаленных. Если же тема не связана с событием или событие не связано с темой они также отображаются в таблице, но без соответствующей информации.&lt;br /&gt;
&lt;br /&gt;
Таблица оценок события и темы отображаются также как и в таблице уроков, кроме замененных событий и событий без тем. Дата в таблице оценок отображаются только в том случае, если для созданной темы создано событие, если у темы события нет, отображается полностью его название. &lt;br /&gt;
&lt;br /&gt;
При нажатии на дату в таблице оценок, происходит перемещение к соответствующей строке отчета об уроке. При нажатии на иконку редактирования отображается форма заполнения оценок и посещаемости.&lt;br /&gt;
&lt;br /&gt;
=== Таблица оценок. ===&lt;br /&gt;
&lt;br /&gt;
Если таблица уроков пуста, то в таблице оценок нет ни одной колонки с датой.&lt;br /&gt;
&lt;br /&gt;
Если журнал заполнен, то в верхней строке отображаются названия месяцев, ниже номера дней месяцев, на которые приходились занятия. Каждое число месяца - ссылка, при нажатии на которую происходит переход на соответствующую этому дню строку таблицы уроков.&lt;br /&gt;
&lt;br /&gt;
Сразу под числом расположен значок редактирования. Он также выполнен в виде ссылки. При нажатии на него страница перезагружается в режиме формы ввода оценок и выставления присутствия учеников на уроке, который проходил в тот день, по значку под числом которого щелкнули.&lt;br /&gt;
&lt;br /&gt;
В колонке этого дня, напротив фамилии каждого ученика появляются три поля. Поле выбора из списка - для проставления оценки, поле переключатель - для отметки присутствия на уроке и поле переключатель - для отметки обучения учащегося на уроке. &lt;br /&gt;
&lt;br /&gt;
В выборе оценок из списка, отображаются те оценки, что прописаны в шкале оценок указанной темы. Если в теме шкала отсутствует, то шкала берется из связанного с темой предмета, если же и там шкалы нет, то задается стандартная от 1 до 5.&lt;br /&gt;
&lt;br /&gt;
Далее отображается галочка &amp;quot;н&amp;quot;, при нажатии на которую учащийся помечается как отсутствующий на уроке. Если же мы хотим указать учащегося как присутствующего галочку просто не ставим. Если кому-то была выставлена и оценка и отметка об отсутствии на уроке, на против его фамилии можно будет увидеть оценку с буквой &amp;quot;н&amp;quot;. Однако перед сохранением будет выведено предупреждение о том, что выставлена оценка отсутствующему ученику. Под уведомлением будут две кнопки - &amp;quot;Продолжить&amp;quot; и &amp;quot;Отменить&amp;quot;. При нажатии на &amp;quot;Продолжить&amp;quot; сценарий сохранения будет выполнен. Нажатие на другую кнопку вызовет отмену процедуры сохранения и возврат к форме с несохраненными изменениями.&lt;br /&gt;
&lt;br /&gt;
Замыкает тройку галочка &amp;quot;н/о&amp;quot;, которая показывает обучался ли учащийся на этом уроке или нет. В отличие от галочки &amp;quot;н&amp;quot;, которая помечает присутствие или отсутствие учащегося на уроке, галочка &amp;quot;н/о&amp;quot; или &amp;quot;не обучался&amp;quot;, что ученик в данный момент времени вообще не обучался на данном уроке по какой-либо причине(начал обучатся не со всеми, закончил обучатся раньше, взял академический отпуск, находится на лечении в санатории или больнице и т.д). Появляется эта галочка только в том случае, если присутствие или отсутствие у учащегося не проставлено.&lt;br /&gt;
&lt;br /&gt;
При переключении в режим формы под таблицей появляется надпись &amp;quot;Внимание! До нажатия кнопки &amp;quot;сохранить&amp;quot; оценки не сохраняются...&amp;quot;, под которой также появится галочка о подтверждения проведения урока и три кнопки - &amp;quot;Сохранить&amp;quot;, &amp;quot;Сохранить и продолжить&amp;quot;, &amp;quot;Восстановить&amp;quot;. &lt;br /&gt;
Нажатие на первую кнопку сохраняет изменения, сделанные в форме и перезагружает страницу в режим просмотра. Вторая - сохраняет сделанные изменения, но страница остается в режиме формы - можно продолжать ввод. Третья кнопка отменяет сделанные изменения. Все введенные,  но несохраненные данные удаляются из формы. Форма перегружается с отображением последних сохраненных изменений.&lt;br /&gt;
&lt;br /&gt;
Если ученику была выставлена оценка, а затем отменена - в форме было выбрано пустое поле, то ранее выбранная оценка будет удалена. Если оценка была изменена, то оценка будет обновлена. Каждое из этих действий, а также выставление статуса присутствия на уроке, будет выполнено через издание приказа.&lt;br /&gt;
Если редактируется контрольная точка без события, то в форме показываеются только поля выставления оценки. Поле присутствия на уроке не показывается и статус присутствия не сохраняется.&lt;br /&gt;
Контрольная точка без события выводится в таблице оценок без даты. Вместо даты выводится название КТ.&lt;br /&gt;
Если пользователь нажал галочку отметки проведения урока, то вместе с приказом о посещаемости событие помечается как состоявшееся.&lt;br /&gt;
&lt;br /&gt;
Что происходит в процессе сохранения.&lt;br /&gt;
После того как нажата одна из кнопок, сохраняющая внесенные изменения происходит&lt;br /&gt;
&lt;br /&gt;
* формирование приказа регистрации присутствия учеников на уроке. В него сохраняются данные о всех учениках потока, их статусы присутствия, id события, статус присутствия на котором выставляется. Также вместе с приказом идет отметка о проведении урока. &lt;br /&gt;
* применение приказа и сохранение статусов учеников в соответствующих таблицах.&lt;br /&gt;
&lt;br /&gt;
Если были выставлены оценки. То в дополнение к вышеописанным действиям происходят следующие действия:&lt;br /&gt;
* формирование приказа регистрации выставления оценок только тем ученикам, которые их получили на уроке. В приказе сохраняются: точное время выставления оценки, id КТ, за которую выставлена оценка, id преподавателя (из /storage/persons), который выставил оценку, ученики, которые получили оценку, и соответствующие им оценки, статус оценки, id подписки ученика на поток.&lt;br /&gt;
* применение приказа и сохранение оценок в соответствующих таблицах.&lt;br /&gt;
&lt;br /&gt;
Примечание: Если у учащегося была проставлена галочка &amp;quot;н/о&amp;quot;, то данные по этому ученику в приказ не сохраняются &lt;br /&gt;
&lt;br /&gt;
После создания отчета об уроке, происходит возврат на главную страницу журнала и таблица оценок загружается в режиме формы того дня, отчет для которого был создан. Если этот день выходит за границы видимости окна, то происходит перемещение таблицы оценок таким образом, чтобы нужная колонка оказалась видимой. После редактирования отчета об уроке таблица оценок загружается в режиме просмотра. Если день, для которого происходило редактирование отчета выходит за границы видимости, то происходит перемещение таблицы оценок таким образом, чтобы нужная колонка оказалась видимой.&lt;br /&gt;
&lt;br /&gt;
=== Таблица уроков. ===&lt;br /&gt;
Представляет собой таблицу из семи столбцов.&lt;br /&gt;
# Порядковый номер урока.&lt;br /&gt;
# Дата проведения урока в формате дд.мм.гг&lt;br /&gt;
# Тема урока. Если отображается событие без темы, данная ячейка пустая.&lt;br /&gt;
# Домашнее задание. Если отображается событие без темы или пользователь ничего не вводил в поле домашнего задания, данная ячейка пустая.&lt;br /&gt;
# Время на домашнее задание. Аналогично со столбцом &amp;quot;Домашнее задание&amp;quot;&lt;br /&gt;
# Примечание. Аналогично со столбцом &amp;quot;Домашнее задание&amp;quot;. На данный момент не используется, ввиду сокращения размеров таблицы &lt;br /&gt;
# Статус урока. Если отображается тема без события, данная ячейка пустая. Если событие зафиксировано как состоявшееся, ниже пишется персона проводившая событие.&lt;br /&gt;
&lt;br /&gt;
Уроки в таблице сортируются по датам, сверху вниз по возрастанию, как и положено в бумажном журнале.&lt;br /&gt;
Под датой располагается значок редактирования информации об уроке, выполненный в виде ссылки. При щелчке по нему открывается новая страница с формой редактирования урока. Все поля формы заполнены соответствующей информацией. Ее можно изменить, а изменения сохранить.&lt;br /&gt;
Эта же страница открывается при щелчке по ссылке &amp;quot;Новый урок&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Страница редактирования урока. ===&lt;br /&gt;
Вверху страницы, под строкой навигации, выводится надпись &amp;quot;Журнал группы&amp;quot;.&lt;br /&gt;
Ниже выводится форма ввода информации об уроке. &lt;br /&gt;
&lt;br /&gt;
Первой отображается секция создания события. Здесь можно выбрать создавать событие или нет (если создается тема без события), если да, то можно выбрать форму проведения урока (очно/дистанционно) и дату проведения. Если событие редактируется, то эти поля изменить нельзя. Если у пользователя нет прав для создания события, то данная секция не отображается.&lt;br /&gt;
&lt;br /&gt;
Следом идет секция для создания темы урока. Сначала мы выбираем как мы создаем тему:&lt;br /&gt;
* Не создавать новую тему - если событие создается без темы&lt;br /&gt;
* Выбрать тему из планирования - если к событию мы привязываем существующую уже созданную тему.&lt;br /&gt;
* Создать собственную тему - создает новую тему на планирование по учебному процессу&lt;br /&gt;
В третьем варианте, при создании новой темы пользователь может либо выбрать родительские темы, откуда он будет наследовать название своей темы (поле &amp;quot;Что пройдено на уроке&amp;quot;, необязательно к заполнению, но пользователь может ввести что-то свое), либо заполнить поле Что пройдено на уроке&amp;quot;. Далее пользователь заполняет все оставшееся поля по мере необходимости.&lt;br /&gt;
&lt;br /&gt;
В самом низу расположены две кнопки - &amp;quot;Сохранить&amp;quot; и &amp;quot;Отмена&amp;quot;. При нажатии на вторую происходит возврат на главную страницу журнала без сохранения внесенных изменений. После нажатия на кнопку &amp;quot;Сохранить&amp;quot; происходит сохранение введенных данных в соответствующих таблицах. О результатах операции сохранения информирует надпись, выводимая под кнопками. Еще ниже появляется ссылка &amp;quot;назад&amp;quot; для возврата на главную страницу журнала. В случае возврата после сохранения данных, таблица оценок загружается в режиме редактирования данных на дату только что сохраненного урока.&lt;br /&gt;
&lt;br /&gt;
Правее формы редактирования урока расположено окно с полосами прокрутки, в котором можно просмотреть темы уже проведенных уроков.&lt;br /&gt;
Они выводятся в видет таблицы из трех столбцов, в которых указываются соответственно дата, тема урока и домашнее задание.&lt;br /&gt;
&lt;br /&gt;
В зависимости от заполненности полей ввода возможны разные варианты обработки введенных данных.&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
 |id темы&lt;br /&gt;
 |id события&lt;br /&gt;
 |создание события&lt;br /&gt;
 |создание темы&lt;br /&gt;
 |как обрабатывается&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |ничего не создается&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |ничего не создается. Форма подгружает выбранную тему для редактирования&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы с указанными пользователем данными без события&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |создается новое событие с указанными пользователем данными без темы&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |создается новое событие с указанными пользователем данными и привязкой к выбранной теме&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы и новая темы с указанными пользователем данными связанные друг с другом&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |ничего не создается и не редактируется&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |Выбранная тема привязывается к указанному событию&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы с указанными пользователем данными и привязывается к указанному событию&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |существующая&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |редактируется указанная тема&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |существующая&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |создается новое событие с указанными пользователем данными, к которому привязывается указанная тема. Тему можно отредактировать&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |существующая&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |редактируется указанная тема, событие не редактируется&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ведомость итоговых оценок ===&lt;br /&gt;
На данной странице можно выставить итоговые оценки учащимся и завершить обучение потока. Страница принимает обязательный параметр id - id идущего  или завершенного потока.&lt;br /&gt;
&lt;br /&gt;
Вверху страныцы отображается форма, где отображены ученики, которые обучаются на данном потоке. Напротив каждого можно выбрать итоговую оценку, выставляемую учащемуся. Итоговые оценки берутся из шкалы дисциплины приписанной к данному потоку. Под ведомостью стоит галочка подтвержения оценок, без нее оценки не сохранятся. Делее стоит галочка завершения обучения если необходимо завершить поток, При завершении потока все подписки на дисциплину переводятся в один из конечных статусов. Если поток уже завершен, то галочка не показывается, вместо нее предупреждение. После завершения потока оценки также можно выставить, но они уже будут идти как переэкзаменовка. &lt;br /&gt;
&lt;br /&gt;
После того как мы выставили оценки и нажали на кнопку сохранить формируется приказ о выставленни итоговых оценок. На основе этого приказа сохраняются оценки, после чего на новой странице показывается шаблон ведомости в том виде, в котом она будет распечатана. &lt;br /&gt;
После первого сохранения оценок эта ведомость также становится доступна для печати. &lt;br /&gt;
&lt;br /&gt;
Перейти на эту страницу можно со страницы Журнала группы.&lt;br /&gt;
&lt;br /&gt;
== Отчеты ==&lt;br /&gt;
=== Отчеты о фактической нагрузке ===&lt;br /&gt;
&lt;br /&gt;
Позволяют просмотреть статистику о нагрузке учителей за определенный период. [[ Разработка:im/reports#Отчеты о фактической нагрузке | Подробнее ]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра отчета по любой персоне необходимо право im/journal view:salfactors.&lt;br /&gt;
&lt;br /&gt;
Для просмотра своего отчета необходимо право im/journal view:salfactors/own.&lt;br /&gt;
&lt;br /&gt;
Для просмотра истории по отчетам (данные сроком более 2 месяцев) необходимо право view:salfactors_history.&lt;br /&gt;
&lt;br /&gt;
=== Отчеты по замененным занятиям ===&lt;br /&gt;
&lt;br /&gt;
Отчет отображает информацию по замененным занятиям с указанием суммарного количество часов и зарплатных часов и с возможностью выбора нескольких учебных периодов.&lt;br /&gt;
&lt;br /&gt;
Интерфейс заказа отчета выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-1.png||400px|center|]]&lt;br /&gt;
&lt;br /&gt;
Интерфейс собранного отчета выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-2.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
Отчет представляет собой информацию по замененным занятиям, также имеется возможно перехода в режим отображения отчета по преподавателям.&lt;br /&gt;
Отчет по преподавателям выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-4.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
Отчет можно фильтровать по типам замен: &lt;br /&gt;
*По замене другим временем&lt;br /&gt;
*По замене другим преподавателем&lt;br /&gt;
&lt;br /&gt;
=== Сводная ведомость текущих оценок и пропущенных уроков по параллели ===&lt;br /&gt;
&lt;br /&gt;
Отчет отображает информацию о процессе обучения студентов. Включает в себя следующую информацию:&lt;br /&gt;
* Всего уроков по расписанию за период - количество занятий ученика по раписанию по всем его предметам&lt;br /&gt;
* Пропущенных уроков за период (кол-во) - отмеченные в журнале символом «Н»&lt;br /&gt;
* Текущие оценки - текущие оценки ученика по предмету (оценку идут подряд 451332)&lt;br /&gt;
* Средний балл учащегося по предмету за период - средний балл студента за предмет (если оценки 4532, средняя -3,25)&lt;br /&gt;
* Средний балл по предмету в параллели за период - средний бал всех оценок всех учеников за предмет (если у одного ученика оценки 45, у второго 53, средняя (4+5+5+3)/4 = 4,25)&lt;br /&gt;
* Качество знаний по предмету в параллели за период - отношений учеников, у которых в текущих оценках только 4 и 5 к общему числу учеников, изучающих предмет (если ученик не изучал предмет, он будет закрашен серым цветом и не будет учитываться в подсчете)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 02011.png||400px|center|]]&lt;br /&gt;
&lt;br /&gt;
== Приказы ==&lt;br /&gt;
=== Приказ о закрытии зарплатного периода ===&lt;br /&gt;
&lt;br /&gt;
==== Структура приказа о закрытии зарплатного периода ====&lt;br /&gt;
Данные приказа:&lt;br /&gt;
* reportid - id сформированного [[ Разработка:im/reports#Отчеты о фактической нагрузке | отчета по фактической нагркзке ]]&lt;br /&gt;
&lt;br /&gt;
==== Формирование приказа о переводе ====&lt;br /&gt;
При формировании приказа также формируется отчет по фактической нагрузке с тем же указанным промежутком и в тоже указанное время исполнение, что и в приказе. &lt;br /&gt;
&lt;br /&gt;
==== Подписание приказа о переводе ====&lt;br /&gt;
Подписание приказа происходит сразу же после его формирование.&lt;br /&gt;
&lt;br /&gt;
=== Исполнение приказа о переводе ===&lt;br /&gt;
По крону. Возможно позже будет реализовано вручную.&lt;br /&gt;
&lt;br /&gt;
Генерирует приказ по фактической нагрузке. После этого фиксирует все дни подразделения и его дочерних подразделений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
* itog_grade_was_set - генерируется во время выставления итоговой оценки не зависимо от того, происходит первичное выставление оценки или повторное через ведомость пересдачи&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Уведомления ==&lt;br /&gt;
&lt;br /&gt;
==== Уведомление учащегося об оценке ====&lt;br /&gt;
&lt;br /&gt;
Отправка уведомлений после выставления оценки в электронном деканате осуществляется в случае, если включена настройка в подразделении.&lt;br /&gt;
&lt;br /&gt;
Для отправки уведомлений об оценке полученной впервые по дисциплине, необходимо установить настройку send_grade_notification в значение 1. В качестве темы письма будет использоваться текст из настройки grade_notification_subject, в качестве основного текста письма будет использована настройка grade_notification_text.&lt;br /&gt;
&lt;br /&gt;
Для отправки уведомления об оценке полученной через ведомость пересдачи, необходимо установить настройку send_reoffset_notification в значение 1. В качестве темы письма будет использоваться текст из настройки reoffset_notification_subject, в качестве основного текста письма будет использована настройка reoffset_notification_text.&lt;br /&gt;
&lt;br /&gt;
В теме и тексте письма можно использовать следующие подстановки:&lt;br /&gt;
* [PERSONFULLNAME] - ФИО учащегося&lt;br /&gt;
* [DISCIPLINE] - Наименование дисциплины&lt;br /&gt;
* [GRADE] - полученная оценка&lt;br /&gt;
&lt;br /&gt;
=Права=&lt;br /&gt;
&lt;br /&gt;
* '''datamanage''' - глобальное право (администратор)&lt;br /&gt;
* '''view_journal''' - право на просмотр журнала учебного процесса (учитель курса или завуч)&lt;br /&gt;
* '''view_all_journals''' - право на просмотр всех журналов (может просматривать общую информацию и личные данные)&lt;br /&gt;
* '''view_all_journals_department''' - право на просмотр всех журналов подразделения (может просматривать общую информацию и личные данные)&lt;br /&gt;
* '''can_complete_lesson''' - право отметить проведение урока (учитель урока или завуч)&lt;br /&gt;
* '''create_schevent''' - право на создание события (завуч и учитель на потоке, если есть переменная в конфиге)&lt;br /&gt;
* '''control_journal''' - право на проверку журнала (завуч)&lt;br /&gt;
* '''give_grade''' - право на выставление оценки (учитель на потоке или завуч)&lt;br /&gt;
* '''give_itog_grades''' - право выставить итоговые оценки (поток завершён и пользователь - учитель на потоке)&lt;br /&gt;
* '''view_events''' - право просматривать свое расписание (учитель)&lt;br /&gt;
* '''give_attendance''' - право на отметку посещаемости (учитель урока или завуч)&lt;br /&gt;
* '''give_theme_event''' - право указать тему для события (только событие в статусе &amp;quot;запланирован&amp;quot; или &amp;quot;отложено на неопределенный срок&amp;quot;, а пользователь - завуч или учитель потока)&lt;br /&gt;
* '''edit_plans''' - право редактировать КТ (КТ не &amp;quot;зафиксирована&amp;quot; и ((КТ завершена или событие состоялось), а пользователь - завуч) или пользователь может выставлять оценки)&lt;br /&gt;
* '''replace_schevent''' - право формирование замены события (учитель на потоке или завуч)&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
В этом разделе описаны функции для работы со страницами &amp;quot;журнал группы&amp;quot; и &amp;quot;список журналов&amp;quot;. Здесь содержится только краткое описание функций и их параметров. Если вас интересует их внутренняя логика, то обратитесь к разделу [[Разработка:im/journal#Подробное описание работы функций|Подробное описание]]. Аргументы всех функций перечислены именно в том порядке, в котором их следует передавать.&lt;br /&gt;
=== Журнал группы ===&lt;br /&gt;
В этом разделе собраны все функции, которые относятся к странице &amp;quot;журнал группы&amp;quot;&lt;br /&gt;
==== Класс dof_im_journal_tablegrades ====&lt;br /&gt;
Класс отрисовки школьного журнала&lt;br /&gt;
===== print_texttable() =====&lt;br /&gt;
Вывести страницу журнала - просмотр оценок, или редактирование&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $editid  - id редактируемого учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $eventid - id учебного события, которое будет редактировано (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* null&lt;br /&gt;
===== check_permissions() =====&lt;br /&gt;
Проверяет разрешения на редактирование оценок для текущего пользователя&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true/false - есть или нет разрешения на редактирование оценок&lt;br /&gt;
==== Класс dof_im_journal_templans_table ====&lt;br /&gt;
Класс для отрисовки таблицы тематического планирования в классном журнале&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
 &lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== print_table() =====&lt;br /&gt;
Выводит таблицу тематического планирования на экран&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
*  true если операция вывода прошла успешно, или false если при выводе возникли ошибки&lt;br /&gt;
==== Класс dof_im_journal_edittopic ====&lt;br /&gt;
Класс для создания или редактирования одной темы на странице планирования уроков&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $planid - id элемента учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
* $eventid - id учебного события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== get_topic() =====&lt;br /&gt;
Возвращает объект с полями, необходимыми для заполнения формы&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object - объект с полями для вставки в форму, или false в случае ошибки&lt;br /&gt;
===== create_topic() =====&lt;br /&gt;
Создает новый элемент тематического планирования&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $checkpoint - контрольная точка из таблицы [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $event - заранее заготовленный объект для таблицы [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи из таблицы schevents или false в случае ошибки&lt;br /&gt;
===== save_topic() =====&lt;br /&gt;
Обновляет существующий или создает новый элемент тематического планирования&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $checkpoint (object) - объект для обновления или создания записи в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $event (object) - объект для обновления или создания записи в таблице [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true, если все записи успешно обновлены&lt;br /&gt;
* (int), id новой записи, если она была добавлена&lt;br /&gt;
* false в случае ошибки&lt;br /&gt;
===== print_table() =====&lt;br /&gt;
Формирует таблицу тематического планирования в правой части страницы журнала&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
*  true если операция вывода прошла успешно, или false если при выводе возникли ошибки&lt;br /&gt;
===== get_anchor_id() =====&lt;br /&gt;
Возвращает метку времени, которая будет создана для нового урока, чтобы осуществить корректное перенаправление на страницу журнала&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $time - (int) время создания нового события: метка времени в формате unixtime&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - метка времени для перенаправления&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_rawdata ====&lt;br /&gt;
Класс для подготовки сырых исходных данных для формирования школьного журнала и ему подобных документов&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
Конструктор - определяет с каким учебным потоком будет вестись работа&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_process_gradesform ====&lt;br /&gt;
Класс для проверки и обработки оценок из формы&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
Конструктор класса. Осуществляет все проверки и записывает данные во внутреннее поле.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $gradedata (array) - массив $_POST из формы&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== process_form() =====&lt;br /&gt;
Обработать все данные, пришедшие из формы: установить посещаемость, выставить оценки и сформировать приказы&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* false в случае неудачи. В случае успеха производит редирект на страницу журнала&lt;br /&gt;
==== Класс dof_im_journal_presence ====&lt;br /&gt;
Класс для обработки информации о посещаемости &lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== presence_students() =====&lt;br /&gt;
Формирует массив присутствия учеников&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* массив вида [id_ученика]=&amp;gt;статус_присутствия&lt;br /&gt;
===== absence_students() =====&lt;br /&gt;
Формирует массив отсутствующих студентов&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $away - массив id отсутствующих учеников&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* массив вида [id_ученика]=&amp;gt;статус_присутствия&lt;br /&gt;
==== Дополнительные функции ====&lt;br /&gt;
===== dof_im_journal_format_date() =====&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date (int) - метка времення для преобразования.&lt;br /&gt;
* $format (string) - формат выводимой даты. По умолчанию 'dmy'.&lt;br /&gt;
* $url (string) - Указывается, если необходимо получить дату как ссылку. По умолчанию NULL&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) строка с отформатированной датой&lt;br /&gt;
===== dof_im_journal_date_edit() =====&lt;br /&gt;
Возвращает отформатироанную дату и значок редактирования как ссылку&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date (int) - метка времени&lt;br /&gt;
* $format (string) - формат выводимой даты. По умолчанию 'dmy'&lt;br /&gt;
* $durl (string) - путь ссылки для даты, если не указана - дата выводится как просто строка. По умолчанию null.&lt;br /&gt;
* $eurl (string) - путь ссылки для значка, если не указана значок не показывается По умолчанию null.&lt;br /&gt;
* $imgsubdate (bool) - вывести значок под датой или рядом по умолчанию true (выводит значок под датой)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - строка с отформатированной датой&lt;br /&gt;
=== Список журналов ===&lt;br /&gt;
==== Класс dof_im_journal_listjournals ====&lt;br /&gt;
Этот класс содержит функции для работы со страницей списка журналов&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
===== set_data() =====&lt;br /&gt;
Заполняет начальной информацией внутренние поля объекта&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid (int) - id подразделения (таблица [[Разработка:storages/departments|departments]]). По умолчанию 0.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если все нормально или false в случае ошибки&lt;br /&gt;
===== get_data() =====&lt;br /&gt;
Возвращает собранные данные&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив структурных подразделений&lt;br /&gt;
===== get_journals() =====&lt;br /&gt;
Получить все журнлы занесенных подразделений&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если все нормально или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
=== Журнал занятий ===&lt;br /&gt;
==== Класс dof_im_journal_show_events ====&lt;br /&gt;
Этот класс содержит функции для работы с журналом занятий&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $depid - идентификатор подразделения&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
===== set_data =====&lt;br /&gt;
Заполняет параметры класса начальной информацией&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date - массив, состоящий из даты начала и даты окончания:&lt;br /&gt;
** [date_from] - дата начала&lt;br /&gt;
** [date_to] - дата окончания&lt;br /&gt;
* $teacherid - идентификатор преподавателя&lt;br /&gt;
* $studentid - идентификатор студента&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true если операция прошла успешно&lt;br /&gt;
&lt;br /&gt;
===== get_string_event =====&lt;br /&gt;
Получение строки для вывода одного занятия. &lt;br /&gt;
При проверке статуса события, выполняется проверка статуса на момент проведения самого события&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event - объект события&lt;br /&gt;
* $show_all - вывод подробной таблицы&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив для строчки события&lt;br /&gt;
&lt;br /&gt;
===== get_table_events =====&lt;br /&gt;
Возвращает события одного дня&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $display - ражим отображения(по времени, по учителям, по ученикам)&lt;br /&gt;
** [time] - по времени&lt;br /&gt;
** [students] - по ученикам&lt;br /&gt;
** [teachers] - по учителям&lt;br /&gt;
* $show_all - вывод подробной таблицы&lt;br /&gt;
* $implied - вывод мнимых событий&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_table_unmarked_events =====&lt;br /&gt;
Возвращает события одного дня&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $display - ражим отображения(по времени, по учителям, по ученикам)&lt;br /&gt;
** [time] - по времени&lt;br /&gt;
** [students] - по ученикам&lt;br /&gt;
** [teachers] - по учителям&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_string_appointment =====&lt;br /&gt;
Получение строки для вывода одного предмето-класса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $cstream - объект учебного процесса (предмето-класса)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив для строчки события&lt;br /&gt;
&lt;br /&gt;
===== get_table_teaching_load =====&lt;br /&gt;
Возвращает учебную нагрузку учителя&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
''Возвращаемые значения:'' array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_data_for_export =====&lt;br /&gt;
Сбор данных для экспорта в csv&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
''Возвращаемые значения:'' &lt;br /&gt;
* array - данные для экспорта&lt;br /&gt;
&lt;br /&gt;
===== get_string_for_export =====&lt;br /&gt;
Создание массива данных об учениках&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event - объект урока&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив с данными&lt;br /&gt;
&lt;br /&gt;
== Подробное описание работы функций ==&lt;br /&gt;
В этом разделе описывается подробная работа всех публичных и внутренних методов для классов журнала. Если вам требуется только краткая справка по API, то обратитесь к разделу [[Разработка:im/journal#API|API]].&lt;br /&gt;
=== Для журнала группы ===&lt;br /&gt;
==== Класс dof_im_journal_tablegrades ====&lt;br /&gt;
&lt;br /&gt;
===== Описание print_texttable() =====&lt;br /&gt;
[[#print_texttable()|Описание API]].&lt;br /&gt;
&lt;br /&gt;
Итоговая функция, выводящая всю собранную информацию на экран. &lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# собирает всю информацию при помощи функции [[Разработка:im/journal#Описание get_all_form()|get_all_form()]]&lt;br /&gt;
# обращается к плагину templater для представления информации в html-формате&lt;br /&gt;
# функцией print выводит результат работы templater'а на экран.&lt;br /&gt;
===== Описание check_permissions() =====&lt;br /&gt;
[[#check_permissions()|Описание API]].&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем учебный поток. Если поток не найден - возвращаем false.&lt;br /&gt;
# проверяем статус учебного потока. Если он не равен значению &amp;quot;go&amp;quot;, то возвращаем false.&lt;br /&gt;
# проверяем, имеет ли текущий пользователь права редактирования. Если нет, то возвращаем false.&lt;br /&gt;
# если все проверки пройдены успешно, то возвращаем true.&lt;br /&gt;
===== Описание get_all_form() =====&lt;br /&gt;
Возвращает объект формы для вставки в templater. Таблица в шаблоне формируется по столбцам, т. е. сначала выводится контрольная точка в тем. планировании, а затем оценки всех учеников за это событие (как при заполнении обычного школьного журнала).&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $editid (int) - id редактируемого учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $eventid (int) - id редактируемого учебного события в таблице [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) объект нужной структуры для построения шаблона&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# собираем в объект все стандартные надписи для таблицы&lt;br /&gt;
# собираем все запланированные активные контрольные точки учебного потока&lt;br /&gt;
# создадим массивы для названий месяцев и дат&lt;br /&gt;
# собираем в массив информацию по ученикам. Если параметр $editid не равен нулю, то в столбце оценок для редактируемой даты вместо оценки выводим форму.&lt;br /&gt;
# собираем в результурующий массив названия месяцев и дат &lt;br /&gt;
# если нужно распечатать форму - устанавливаем стандартные html-теги начала и конца формы&lt;br /&gt;
# возвращаем результат&lt;br /&gt;
&lt;br /&gt;
===== Описание get_cell_form() =====&lt;br /&gt;
Возвращает редактируемую ячейку таблицы журнала.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons.&lt;br /&gt;
* $cpassedid (int) - id учебной программы&lt;br /&gt;
* $oldgrade (int) - старая оценка (если есть). По умолчанию null.&lt;br /&gt;
* $gradeid (int) - id оценки в таблице cpgrades . По умолчанию 0&lt;br /&gt;
* $eventid (int) - id учебного события в таблице [[Разработка:storages/schevents|schevents]].&lt;br /&gt;
* $scale (string) - шкала всех возможных оценок через запятую. По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - строка с html-кодом формы редактирования оценки.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
Вся форма редактирования оценки представляет собой маленькую таблицу. С левой стороны находится форма выбора оценки, а справа галочка для отметки отсутствующего ученика (верхняя ячейка) и пояснение к ней (нижняя ячейка).&lt;br /&gt;
# получаем все допустимые варианты оценок для данного задания из параметра scale.&lt;br /&gt;
# из этих вариантов оценки составляем html-элемент формы типа SELECT.&lt;br /&gt;
# если за задание уже есть ранее выставленная, старая оценка, то делаем ее оценкой по умолчанию&lt;br /&gt;
# узнаем статус присутствия ученика на занятии, и в зависимсости от этого проставляем галочку над буквой &amp;quot;н&amp;quot;. Форма с возможностью отмечания отсутствующих учеников отображается только для контрольных точек для которых есть события.&lt;br /&gt;
# возвращаем результат одной строкой.&lt;br /&gt;
===== Описание get_cell_string() =====&lt;br /&gt;
Получить текстовое содержимое ячейки оценки.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons&lt;br /&gt;
* $plan (object) - объект содержащий данные об элементе тематического планирования (таблица [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $gradedata (object) - данные об оценке По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) html-код оценки, либо специальный знак пробела, чтобы в таблице было видно пустую ячейку&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
# узнаем данные о посещаемости: получаем id события, если оно есть&lt;br /&gt;
#* если событие есть, узнаем, был ли ученик на занятии&lt;br /&gt;
# находим оценку&lt;br /&gt;
#* если ученик был на занятии и получил оценку - выводим оценку&lt;br /&gt;
#* если ученик был на занятии и не получил оценку - выводим символ пробела&lt;br /&gt;
#* если ученик отсутствовал на занятии и нет оценки, то выводим букву &amp;quot;н&amp;quot;&lt;br /&gt;
#* если ученик отсутствовал на занятии и получил оценку - выводим оценку, и букву &amp;quot;н&amp;quot; рядом с ней&lt;br /&gt;
&lt;br /&gt;
===== Описание get_one_cell() =====&lt;br /&gt;
Возвращает данные в одной клетке журнала. Определяет какой тип ячейки выводить: для редактирования или текстовую.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons&lt;br /&gt;
* $plan (object) - объект содержащий контрольную точку с событием  из тем. планирования (таблица [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $gradedata (object) - объект содержащий данные об оценке (таблица cpgrades)&lt;br /&gt;
* $cpassedid (int) - id подписки (таблица cpassed)&lt;br /&gt;
* $editid (int) - id редактируемого в текущий момент элемента из тем. планирования&lt;br /&gt;
* $eventid (int) - id редактируемого в текущий момент события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
* $scale (string) = По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) строка с html-кодом формы редактирования оценки, либо сама оценка, либо статус &amp;quot;отсутствовал&amp;quot;&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# сравниваем, совпадают ли id выводимой и редактируемой в данной момент контрольной точки&lt;br /&gt;
#* если id совпадают - то выводим форму редактирования оценки&lt;br /&gt;
#** если за это задание оценка уже была ранее выставлена, то выводим форму с установленной ранее оценкой&lt;br /&gt;
#** если за задание еще нет оценки - то выводим форму без предустановленных значений&lt;br /&gt;
#* если id не совпадают то выводим оценку текстом (либо статус &amp;quot;отсутствовал&amp;quot;, либо пустую клетку, в зависимости от того был ли ученик на уроке, и получил ли он оценку)&lt;br /&gt;
===== Описание get_line_for_student() =====&lt;br /&gt;
Возвращает строку таблицы журнала для одного ученика.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $i (int) - порядковый номер ученика в группе&lt;br /&gt;
* $student (object) - объект с данными об ученике из таблицы persons&lt;br /&gt;
* $cpasseds (array) - массив объектов, содержащий все подписки учеников этого потока&lt;br /&gt;
* $plans (array) -  массив объектов, содержащий все контрольные точки текущего курса (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $editid (int) - id редактируемой в данный момент контрольной точки&lt;br /&gt;
* $eventid (int) - id редактируемого в данный момент события (или 0, если события нет) Таблица [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - информация об ученике: его ФИО, и оценки по всем контрольным точкам, а также сведения о посещаемости&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект для итоговых данных&lt;br /&gt;
# записываем в соответствующие поля итогового объекта порядковый номер ученика, и его ФИО&lt;br /&gt;
# перебираем все переданные подписки ищем ту, которая относится к переданному ученику&lt;br /&gt;
# записываем в итоговый объект id его подписки&lt;br /&gt;
# создаем массив для оценок и собираем оценки ученика:&lt;br /&gt;
#* перебираем все контрольные переданные точки ($plans)&lt;br /&gt;
#* для каждой контрольной точки создаем объект оценки&lt;br /&gt;
#* получаем значение оценки за просматриваемую контрольную точку&lt;br /&gt;
#* при помощи функции [[Разработка:im/journal#Описание get_one_cell()|get_one_cell()]] получаем оформленный html-код оценки&lt;br /&gt;
#* записываем полученный объект в массив оценок&lt;br /&gt;
# добавляем массив оценок в итоговый объект&lt;br /&gt;
# возвращаем итоговый объект&lt;br /&gt;
===== Описание get_lines_for_students() =====&lt;br /&gt;
Возвращает массив строк с ФИО и оценками для всех учеников&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans (array) - массив всех контрольных точек учебного потока из таблицы plans&lt;br /&gt;
* $editid (int) - id редактируемой в данный момент контрольной точки (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $eventid (int) - id редактируемого в данный момент события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) информация о всех учениках учебного потока или false, если ни одного ученика нет&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все подписки учебного потока, чтобы потом установить связи с оценками&lt;br /&gt;
# получаем учеников учебного потока&lt;br /&gt;
# присваиваем каждому ученику порядковый номер,&lt;br /&gt;
# получаем информацию по каждому ученику функцией [[#Описание get_line_for_student()|get_line_for_student()]] и заносим объект с информацией о нем в массив&lt;br /&gt;
# возвращаем получившийся массив &lt;br /&gt;
===== Описание create_datesstring() =====&lt;br /&gt;
Создает верхнюю строку журнала с названиями месяцев и списком дат в пригодном для обработки плагином templater виде.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans - список всех контрольных точек учебного потока из таблицы [[Разработка:storages/plans|plans]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект, содержащий массив с данными для шаблонизатора&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
Даты в электронном журнале должны будут проставляться как и в обычном классном журнале: верхняя строка - месяцы обучения, нижняя строка - даты проведенных или запланированных уроков, а также четвертные или годовые оценки.&lt;br /&gt;
Для того чтобы организовать такой внешний вид для электронного журнала мы должны воспользоваться параметром colspan для html-таблицы журнала, и расположить тем самым месяцы точно над датами проведенных уроков. Для этой задачи в этой функции мы создаем объект следующей структуры:&lt;br /&gt;
* ''(возвращаемый объект)''&lt;br /&gt;
** ''monthtitle'' - массив объектов, каждый из которых имеет свойства ''mtitle'' - название месяца, и ''mcolspan'' - количество ячеек с датами проведенных уроков в этом месяце&lt;br /&gt;
** ''monthdate'' - строка с датой проведенного урока, либо название контрольной точки.&lt;br /&gt;
&lt;br /&gt;
# получаем строку форматированных дат уроков при помощи функции [[#Описание generate_all_dates()|generate_all_dates()]]&lt;br /&gt;
# перебираем все события и собираем массивы дат и названий месяцев&lt;br /&gt;
#* если просматриваемая дата не находится в том же месяце, что и предыдущая, то дополняем массив месяцев&lt;br /&gt;
# прибавляем счетчик дат в месяце&lt;br /&gt;
# записываем новую дату в итоговый массив&lt;br /&gt;
# возвращаем итоговый массив&lt;br /&gt;
===== Описание generate_all_dates() =====&lt;br /&gt;
Вызывается из [[#Описание create_datesstring()|create_datesstring()]]. Получить отформатированные даты для журнала&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans - массив всех контрольных точек учебного потока (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - отформатированные даты для вывода в журнал&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получим событие из таблицы schevents, которое относится к данной теме тематического планирования&lt;br /&gt;
# если событие есть - то покажем дату&lt;br /&gt;
# если события нет - только название контрольной точки&lt;br /&gt;
&lt;br /&gt;
===== Описание generate_single_date() =====&lt;br /&gt;
Вызывается из [[#Описание generate_all_dates|generate_all_dates]] Создает один объект даты для журнала.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plan (object) - объект из таблицы [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $date (string) - метка времени для события или контрольной точки&lt;br /&gt;
* $event (object) - Объект из таблицы [[Разработка:storages/schevents|schevents]]. По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) дата в нужном для templater'a формате&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# устанавливаем путь (html-якорь) к теме в планирования на странице&lt;br /&gt;
# Определяем, id события которое будет редактировано. Если события нет, то передаем 0.&lt;br /&gt;
# записываем якорь с ссылкой в объект&lt;br /&gt;
# возвращаем объект&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_templans_table ====&lt;br /&gt;
===== Описание get_topics() =====&lt;br /&gt;
Возвращает массив объектов c необходимыми свойствами для вставки в таблицу schevents&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив тем входящих в планирование&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все контрольные точки учебного потока&lt;br /&gt;
# формируем объект с нужными полями для каждой контрольной точки&lt;br /&gt;
# возвращаем получившийся массив объектов&lt;br /&gt;
===== Описание get_empty_topic() =====&lt;br /&gt;
Возвращает &amp;quot;пустой&amp;quot; объект отчета об уроке &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект для вставки в таблицу [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* создаем объект с необходимым списком пустых полей и возвращаем его&lt;br /&gt;
===== Описание table_data() =====&lt;br /&gt;
Возвращает массив строк данных отформатированных для вывода с помощью moodle-функции print_table()&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив с данными для распечатки таблицы, либо false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли для переданного потока элементы тематического планирования.&lt;br /&gt;
#* если их нет - то возвращаем false&lt;br /&gt;
# формируем массив строк таблицы&lt;br /&gt;
# проставляем html-якоря для каждой контрольной точки на странице оценок&lt;br /&gt;
# добавляем ссылки на редактирования элементов учебного плана&lt;br /&gt;
# возвращаем получившийся массив&lt;br /&gt;
==== Класс dof_im_journal_edittopic ====&lt;br /&gt;
===== Описание get_topic() =====&lt;br /&gt;
[[#get_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* Проверяем, указан ли id контрольной точки. &lt;br /&gt;
** Если не указан - возврящаем пустую тему.&lt;br /&gt;
** Если указан - пробуем извлечь контрольную точку по такому id&lt;br /&gt;
*** Если контрольную точку извлечь не удалось - то возвращаем false&lt;br /&gt;
*** Если удалось - то возвращаем заполненный отчет об уроке&lt;br /&gt;
===== Описание save_topic() =====&lt;br /&gt;
[[#save_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем есть ли у нас данные в переменной $event для обновления или создания события. Если нет - то возвращаем false.&lt;br /&gt;
# определяем тип действия, которое надо совершить&lt;br /&gt;
#* если указан planid для события - то создаем новое событие для существующей контрольной точки&lt;br /&gt;
#* если нет id для контрольной точки - создаем новое событие и новую контрольную точку&lt;br /&gt;
#* в остальных случаях - обновляем контрольную точку и событие: вычисляем новую относительную дату, и обновляем записи в таблицах [[Разработка:storages/schevents|schevents]] и [[Разработка:storages/plans|plans]]&lt;br /&gt;
===== Описание create_topic() =====&lt;br /&gt;
[[#create_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем новый элемент тематического планирования в таблице plans (если это не удалось - то возвращаем false)&lt;br /&gt;
# добавляем в переданное событие id контрольной точки&lt;br /&gt;
# создаем событие из переданного объекта $event (если событие не создано - удаляем ранее созданный элемент тематического планирования)&lt;br /&gt;
# возвращаем id события&lt;br /&gt;
===== Описание create_checkpoint() =====&lt;br /&gt;
Создает и сохраняет запись в таблице plans&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $point (object) - данные для сохранения в таблицу [[Разработка:storages/plans|plans]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи или false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли у нас все необходимые для создания записи&lt;br /&gt;
# получаем id учебного потока&lt;br /&gt;
# получаем дату начала обучения&lt;br /&gt;
# создаем заготовку для объекта контрольной точки&lt;br /&gt;
# вычисляем относительную дату контрольной точки&lt;br /&gt;
# заносим данные в базу&lt;br /&gt;
===== Описание create_event() =====&lt;br /&gt;
Создает объект события и сохраняет его в schevents&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event (object) - данные для сохранения&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи в таблице событий или false.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли у нас все необходимые для создания записи&lt;br /&gt;
# получаем id учебного потока&lt;br /&gt;
# получаем id преподавателя в таблице persons&lt;br /&gt;
# создаем объект нужного формата и заносим туда все данные&lt;br /&gt;
# записываем данные в базу&lt;br /&gt;
==== Класс dof_im_journal_rawdata ====&lt;br /&gt;
''Поля:''&lt;br /&gt;
* dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* csid - id учебного потока в таблице сstreams&lt;br /&gt;
===== Описание get_checkpoints() =====&lt;br /&gt;
Получить все контрольные точки одного учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив объектов из таблицы plans или false &lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем id учебного потока из таблицы cstreams&lt;br /&gt;
# выбираем из таблицы plans все записи, у которых поле cstreamid равно id учебного потока, и тип связи &amp;quot;cstreams&amp;quot;&lt;br /&gt;
# сортируем их в хронологическом порядке&lt;br /&gt;
# возвращаем получившийся массив&lt;br /&gt;
&lt;br /&gt;
===== Описание get_students() =====&lt;br /&gt;
Получить всех учеников указанного учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив записей из таблицы persons или false&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем список пройденных дисциплин&lt;br /&gt;
# перебираем все подписки и запоминаем id ученика для каждой из них&lt;br /&gt;
# извлекаем из таблицы persons учеников, чьи id были извлечены из подписок&lt;br /&gt;
&lt;br /&gt;
===== Описание get_teacherid() =====&lt;br /&gt;
Получить id преподавателя учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id преподавателя или false в случае неудачи&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* id преподавателя всегда берется только из записи учебного потока из таблицы cstreams&lt;br /&gt;
==== Класс dof_im_journal_process_gradesform ====&lt;br /&gt;
''Поля:''&lt;br /&gt;
* gradedata - (object) все оценки и сопутствующая им информация&lt;br /&gt;
* mypost - (array) непроверенные данные пришедшие из массива $_POST. Используются только для составления повторного запроса на сохранение данных.&lt;br /&gt;
===== Описание __construct =====&lt;br /&gt;
[[#Класс dof_im_journal_rawdata|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект, в который мы будем складывать все проверенные данные, пришедшие из формы&lt;br /&gt;
# проверяем скалярные данные: все числовые идентификаторы, и отдельные строки, и после проверки записываем их в итоговый объект&lt;br /&gt;
# теперь, зная cstreamid из проверенных скалярных данных вызываем родительский конструктор&lt;br /&gt;
# проверяем массивы, пришедшие из формы: &lt;br /&gt;
#* данные об отсутствующих учениках&lt;br /&gt;
#* массив оценок &lt;br /&gt;
#* массив идентификаторов подписок (таблица cpassed)&lt;br /&gt;
#* узнаем id оценок для изменения их статуса&lt;br /&gt;
# записываем все проверенные данные в итоговый массив&lt;br /&gt;
# определяем тип действия, которое надо совершить: &lt;br /&gt;
#* сохранить данные&lt;br /&gt;
#* сохранить данные и продолжить редактирование&lt;br /&gt;
#* восстановить исходные значения&lt;br /&gt;
# записываем исходный массив (непроверенный) в поле объекта, если потом понадобится еще раз отправить данные после подтверждения&lt;br /&gt;
===== Описание process_form() =====&lt;br /&gt;
[[#process_form()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# в самом начале проверяем тип действия, которое надо совершить. Если этим действием является &amp;quot;отменить изменения&amp;quot;, то не переходим к сохранению оценок и сразуже выполняем перенаправление на страницу журнала. В остальных случаях идем дальше:&lt;br /&gt;
# проверяем, установлено ли у кого-нибудь из учеников одновременно &amp;quot;н&amp;quot; и оценка. Если это так - то перенаправим пользователя на страницу с сообщением об этом, и попросим его подтвердить такой выбор.&lt;br /&gt;
#* если пользователь согласен с изменениями, которые он сделал, то все выставленые им оценки и сведения о посещаемости сохраняются&lt;br /&gt;
#* если же нет - то происходит отмена всех изменений&lt;br /&gt;
# в случае, когда никаких предупреждений нет - сначала формируем приказ для оценок&lt;br /&gt;
# затем приказ о посещаемости&lt;br /&gt;
# если все действия произведены успешно - производим редирект. Если же возникли ошибки - сообщаем об этом&lt;br /&gt;
&lt;br /&gt;
===== Описание generate_order_grades() =====&lt;br /&gt;
Сформировать приказ об изменении состояния учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true если приказ успешно сформирован, и false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем id подразделения в таблице departments&lt;br /&gt;
# определяем тип действия, которое нужно совершить с оценкой&lt;br /&gt;
# обращаемся к функциям выставления, либо удаления оценки&lt;br /&gt;
===== Описание order_set_grade() =====&lt;br /&gt;
Формирует приказ - установить оценку. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid (int) - id подразделения в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true в случае успеха и false в случае неудачи&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# подключаем методы работы с приказом&lt;br /&gt;
# создаем объект для записи&lt;br /&gt;
# сохраняем автора приказа, подразделение, к которому он относится, дату создания приказа&lt;br /&gt;
# добавляем данные, которые определяют назначение приказа&lt;br /&gt;
# сохраняем приказ в БД, в таблицу orders&lt;br /&gt;
# подписываем приказ&lt;br /&gt;
# исполняем приказ&lt;br /&gt;
Методы order_delete_grade и order_update_grade работают по такому же принципу.&lt;br /&gt;
===== Описание get_grades_fororder() =====&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $type - тип действия, которое необходимо будет произвести над оценкой. Возможные значения: ''set_grade'' и ''delete_grade''.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект, содержащий список оценок и все идентификаторы для формирования приказа.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект для итоговых данных&lt;br /&gt;
# записываем в него дату, id учителя (в таблице persons) и id контрольной точки (в таблице plans&lt;br /&gt;
# перебираем все оценки из внутреннего массива с проверенными данными&lt;br /&gt;
# определяем тип действия, которое над ней нужно совершить&lt;br /&gt;
# в зависимости от типа действия (установление или удаление оценки) записываем в объект оценки нужные идентификаторы&lt;br /&gt;
# упаковываем оценки в итоговый массив и возвращаем его&lt;br /&gt;
=== Для списка журналов ===&lt;br /&gt;
==== Класс dof_im_journal_listjournals ====&lt;br /&gt;
Этот класс служит для сбора и вывода информации по всем структурным подразделениям. Информация выводится древовидно: самый верхний уровень - подразделение, затем учебные программы, затем учебные периоды, элементы учебной программы, и в самом конце - журналы учебного потока.&lt;br /&gt;
''Поля:''&lt;br /&gt;
* dof - - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $departments массив структуры&lt;br /&gt;
    array(&lt;br /&gt;
    [departmentid] =&amp;gt; obj  -&amp;gt; departmentname = 'department_name'&lt;br /&gt;
                      obj  -&amp;gt; programms = array(&lt;br /&gt;
      [programmid]   =&amp;gt; obj1 -&amp;gt; programmname = 'programm_name'&lt;br /&gt;
                        obj1 -&amp;gt; ages = array(&lt;br /&gt;
        [agenum]       =&amp;gt; obj2 -&amp;gt; agename = 'age_name'&lt;br /&gt;
                          obj2 -&amp;gt; items = array(&lt;br /&gt;
          [itemid]       =&amp;gt; obj3 -&amp;gt; itemname = 'item_name'&lt;br /&gt;
                            obj3 -&amp;gt; cstreams = array(&lt;br /&gt;
            [cstreamid]    =&amp;gt; obj4 -&amp;gt; cstreamname = 'cstream_name'&lt;br /&gt;
                                    )''// конец массива cstreams''&lt;br /&gt;
                                  )''// конец массива items''&lt;br /&gt;
                                )''// конец массива ages''&lt;br /&gt;
                              )''// конец массива programms''&lt;br /&gt;
         )''// конец общего массива''&lt;br /&gt;
    содержит данные для вставку в темплатер после добавления еще одного уровня:&lt;br /&gt;
    $fortemplater-&amp;gt;departments = $this-&amp;gt;departments;&lt;br /&gt;
В общем виде сбор данных выглядит так: &lt;br /&gt;
# сначала собирается информация по структурному подразделению (одному или нескольким), и информация по ним записывается в итоговый объект&lt;br /&gt;
# затем получаются все программы учебного подразделения, информация по ним записывается в итоговый массив&lt;br /&gt;
# извлекается и записывается в итоговый объект список учебных периодов &lt;br /&gt;
# для каждого учебного периода получаются элементы учебной программы, которые изучаются в нем&lt;br /&gt;
# для каждого элемента учебной программы получаются учебные потоки&lt;br /&gt;
# для каждого учебного потока получается его журнал&lt;br /&gt;
===== Описание set_data() =====&lt;br /&gt;
[[#set_data()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* получаем id структурного подразделения из таблицы departments.&lt;br /&gt;
** если оно есть - то получаем информацию только по нему&lt;br /&gt;
** если получили 0 вместо id подразделения - то выводим информацию по всем подразделениям&lt;br /&gt;
&lt;br /&gt;
===== Описание get_journals_department() =====&lt;br /&gt;
Возвращает журналы одного подразделения&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid - id подразделения в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - набор журналов &lt;br /&gt;
* (bool) - false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все программы, за которые отвечает подразделение&lt;br /&gt;
# для каждой программы получаем все ее журналы&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3182</id>
		<title>Разработка:im/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3182"/>
				<updated>2018-03-02T07:12:45Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Подразделения ==&lt;br /&gt;
Интерфейс позволяет производить действия с подразделениями системы. Подразделения - отдельные элементы Деканата, которые позволяют разграничить работу с контингентом, установить собственные настройки плагинов и права пользователей. Под подразделениями можно понимать такие элементы, как Институты и их Филиалы, Факультеты и Отделы.&lt;br /&gt;
&lt;br /&gt;
=== Список подразделений ===&lt;br /&gt;
Подразделения выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения.&lt;br /&gt;
В зависимости от уровня прав, которыми располагает пользователь, становятся доступны функции создания, удаления и редактирования.&lt;br /&gt;
Интерфейс позволяет увидеть только подразделения текущего местонахождения пользователя( само подразделение и его прямые потомки ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Форма сохранения подразделения ===&lt;br /&gt;
&lt;br /&gt;
Форма сохранения подразделения приспособлена под включение на любую страницу системы и работает с системой потока сообщений Деканата. &lt;br /&gt;
&lt;br /&gt;
'''Назначение полей:'''&lt;br /&gt;
* ''Название'' - Название подразделения. Обязательное поле.&lt;br /&gt;
* ''Код подразделения'' - Обязательное поле. Уникальное поле. Автоматически генерируется для новых подразделений, если не указано вручную(транслитерация первых 10 символов названия и  добавление случайного номера).&lt;br /&gt;
* ''Руководитель'' - Необязательное поле. Руководитель структурного подразделения. По-умолчанию не указан. Выбирается из списка существующих персон и несет исключительно информационную цель. Пользователь не получает никаких прав, став Руководителем.&lt;br /&gt;
* ''Вышестоящий отдел'' - Обязательное поле. Какому подразделению подчиняется данное подразделение. По умолчанию стоит подразделение текущего местоположения пользователя. Выбирается из списка существующих подразделений. &lt;br /&gt;
* ''Часовой пояс'' - Обязательное поле. Временная зона подразделения. Необходимо для правильного расчета времени при составлении расписания и др. действий в системе. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера. &lt;br /&gt;
&lt;br /&gt;
=== Карточка отдела ===&lt;br /&gt;
&lt;br /&gt;
Выводит всю информацию о структурном подразделении. Также выводит список всех дочерних подразделения данного подразделения в древовидной структуре.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Методы интерфейса подразделений&lt;br /&gt;
&lt;br /&gt;
===== get_listing() =====&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $limitfrom - с какой записи начинать вывод&lt;br /&gt;
* $limitnum - сколько записей выводить на одной странице&lt;br /&gt;
* $conds - Обьект, содержащий данные с условиями выборки, в формате ''поле_БД-&amp;gt;значение'' по умолчанию пустой массив&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив записей из базы, или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
=====showlist($list, $addvars, $options = [])=====&lt;br /&gt;
Возвращает HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (array) $list - Массив подразделений из справочника [[Разработка:storages/departments|departments]].&lt;br /&gt;
* (array) $addvars - Массив GET-параметров для передачи по ссылкам.&lt;br /&gt;
* (array) $options - Массив дополнительных параметров отображения&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) -  HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
===== show_id() =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $id - id записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-код или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_html_link($id, $withcode = false) =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$id - ID записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
* (bool)$withcode - Требуется код подразделения в названии ссылки&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-строка со ссылкой на подразделение или пустая строка в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_departments_select_options($parentdep = 0, $options = []) =====&lt;br /&gt;
Возвращает список доступных подразделений для отображения в селекте. &lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$parentdep - Подразделение, от которого начинается сбор массива&lt;br /&gt;
* (array)$options - Массив опций сбора данных&lt;br /&gt;
             ['delimiter'] - Разделитель для уровней иерархии. По - умолчанию '-' &lt;br /&gt;
             ['statuses'] -  Массив статусов в виде ['status1', 'status2']. По-умолчанию - actual метастатус&lt;br /&gt;
             ['access_callback'] - Функция дополнительной проверки прав доступа к подразделению&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Массив для добавления в select список&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
Список отлавливаемых событий&lt;br /&gt;
&lt;br /&gt;
=== Получение ссылки на объект ===&lt;br /&gt;
* 'plugintype' =&amp;gt; 'im'&lt;br /&gt;
* 'plugincode' =&amp;gt; 'obj'&lt;br /&gt;
* 'eventcode'  =&amp;gt; 'get_object_url'&lt;br /&gt;
&lt;br /&gt;
Возвращается ссылка на объект&lt;br /&gt;
&lt;br /&gt;
=== Добавление подразделения ===&lt;br /&gt;
* 'plugintype' =&amp;gt; 'storage'&lt;br /&gt;
* 'plugincode' =&amp;gt; 'departments'&lt;br /&gt;
* 'eventcode'  =&amp;gt; 'insert'&lt;br /&gt;
&lt;br /&gt;
Сбрасывается кеш списка подразделений&lt;br /&gt;
&lt;br /&gt;
=== Добавление подразделения ===&lt;br /&gt;
* 'plugintype' =&amp;gt; 'storage'&lt;br /&gt;
* 'plugincode' =&amp;gt; 'departments'&lt;br /&gt;
* 'eventcode'  =&amp;gt; 'update'&lt;br /&gt;
&lt;br /&gt;
Сбрасывается кеш списка подразделений&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3181</id>
		<title>Разработка:im/departments</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/departments&amp;diff=3181"/>
				<updated>2018-03-02T07:11:43Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = departments&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Подразделения ==&lt;br /&gt;
Интерфейс позволяет производить действия с подразделениями системы. Подразделения - отдельные элементы Деканата, которые позволяют разграничить работу с контингентом, установить собственные настройки плагинов и права пользователей. Под подразделениями можно понимать такие элементы, как Институты и их Филиалы, Факультеты и Отделы.&lt;br /&gt;
&lt;br /&gt;
=== Список подразделений ===&lt;br /&gt;
Подразделения выводятся списком, каждая строчка в котором отображает информацию о структурном подразделении. В левом верхнем углу экрана содержится ссылка на создание подразделения.&lt;br /&gt;
В зависимости от уровня прав, которыми располагает пользователь, становятся доступны функции создания, удаления и редактирования.&lt;br /&gt;
Интерфейс позволяет увидеть только подразделения текущего местонахождения пользователя( само подразделение и его прямые потомки ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Форма сохранения подразделения ===&lt;br /&gt;
&lt;br /&gt;
Форма сохранения подразделения приспособлена под включение на любую страницу системы и работает с системой потока сообщений Деканата. &lt;br /&gt;
&lt;br /&gt;
'''Назначение полей:'''&lt;br /&gt;
* ''Название'' - Название подразделения. Обязательное поле.&lt;br /&gt;
* ''Код подразделения'' - Обязательное поле. Уникальное поле. Автоматически генерируется для новых подразделений, если не указано вручную(транслитерация первых 10 символов названия и  добавление случайного номера).&lt;br /&gt;
* ''Руководитель'' - Необязательное поле. Руководитель структурного подразделения. По-умолчанию не указан. Выбирается из списка существующих персон и несет исключительно информационную цель. Пользователь не получает никаких прав, став Руководителем.&lt;br /&gt;
* ''Вышестоящий отдел'' - Обязательное поле. Какому подразделению подчиняется данное подразделение. По умолчанию стоит подразделение текущего местоположения пользователя. Выбирается из списка существующих подразделений. &lt;br /&gt;
* ''Часовой пояс'' - Обязательное поле. Временная зона подразделения. Необходимо для правильного расчета времени при составлении расписания и др. действий в системе. Выбирается по шкале универсального координированного времени, UTC. По умолчанию время сервера. &lt;br /&gt;
&lt;br /&gt;
=== Карточка отдела ===&lt;br /&gt;
&lt;br /&gt;
Выводит всю информацию о структурном подразделении. Также выводит список всех дочерних подразделения данного подразделения в древовидной структуре.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Методы интерфейса подразделений&lt;br /&gt;
&lt;br /&gt;
===== get_listing() =====&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $limitfrom - с какой записи начинать вывод&lt;br /&gt;
* $limitnum - сколько записей выводить на одной странице&lt;br /&gt;
* $conds - Обьект, содержащий данные с условиями выборки, в формате ''поле_БД-&amp;gt;значение'' по умолчанию пустой массив&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив записей из базы, или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
=====showlist($list, $addvars, $options = [])=====&lt;br /&gt;
Возвращает HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (array) $list - Массив подразделений из справочника [[Разработка:storages/departments|departments]].&lt;br /&gt;
* (array) $addvars - Массив GET-параметров для передачи по ссылкам.&lt;br /&gt;
* (array) $options - Массив дополнительных параметров отображения&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) -  HTML-код таблицы подразделений&lt;br /&gt;
&lt;br /&gt;
===== show_id() =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $id - id записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-код или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_html_link($id, $withcode = false) =====&lt;br /&gt;
Возвращает HTML-код отображения информации об одном подразделении&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$id - ID записи в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
* (bool)$withcode - Требуется код подразделения в названии ссылки&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - HTML-строка со ссылкой на подразделение или пустая строка в случае ошибки&lt;br /&gt;
&lt;br /&gt;
===== get_departments_select_options($parentdep = 0, $options = []) =====&lt;br /&gt;
Возвращает список доступных подразделений для отображения в селекте. &lt;br /&gt;
Метод является рекурсивным и кеширует список подразделений.&lt;br /&gt;
Кеш сбрасывается при любом CrUD действии для актуализации данных.&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* (int)$parentdep - Подразделение, от которого начинается сбор массива&lt;br /&gt;
* (array)$options - Массив опций сбора данных&lt;br /&gt;
             ['delimiter'] - Разделитель для уровней иерархии. По - умолчанию '-' &lt;br /&gt;
             ['statuses'] -  Массив статусов в виде ['status1', 'status2']. По-умолчанию - actual метастатус&lt;br /&gt;
             ['access_callback'] - Функция дополнительной проверки прав доступа к подразделению&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - Массив для добавления в select список&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
Список отлавливаемых событий&lt;br /&gt;
&lt;br /&gt;
=== Получение ссылки на объект ===&lt;br /&gt;
'plugintype' =&amp;gt; 'im',&lt;br /&gt;
'plugincode' =&amp;gt; 'obj'&lt;br /&gt;
'eventcode'  =&amp;gt; 'get_object_url'&lt;br /&gt;
&lt;br /&gt;
* Возвращается ссылка на объект&lt;br /&gt;
&lt;br /&gt;
=== Добавление подразделения ===&lt;br /&gt;
'plugintype' =&amp;gt; 'storage',&lt;br /&gt;
'plugincode' =&amp;gt; 'departments'&lt;br /&gt;
'eventcode'  =&amp;gt; 'insert'&lt;br /&gt;
&lt;br /&gt;
* Сбрасывается кеш списка подразделений&lt;br /&gt;
&lt;br /&gt;
=== Добавление подразделения ===&lt;br /&gt;
'plugintype' =&amp;gt; 'storage',&lt;br /&gt;
'plugincode' =&amp;gt; 'departments'&lt;br /&gt;
'eventcode'  =&amp;gt; 'update'&lt;br /&gt;
&lt;br /&gt;
* Сбрасывается кеш списка подразделений&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/admin&amp;diff=3180</id>
		<title>Разработка:im/admin</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/admin&amp;diff=3180"/>
				<updated>2018-03-02T06:57:45Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: Новая страница: «{{Infobox_Plugin | name = admin | type = im }} = Администрирование = Плагин отображает панель управления и суще...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = admin&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
= Администрирование =&lt;br /&gt;
Плагин отображает панель управления и существующие интерфейсы в электронном деканате.&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3179</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3179"/>
				<updated>2018-02-05T09:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Интерфейс управления шаблоном раписания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов  ====&lt;br /&gt;
Пересечение шаблонов может быть по следующим параметрам:&lt;br /&gt;
* По учителям&lt;br /&gt;
* Ученикам&lt;br /&gt;
* По кабинету&lt;br /&gt;
[[Изображение:Selection 065.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс управления шаблоном раписания ===&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс создания/редактирования шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 066.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс просмотра шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 067.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3178</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3178"/>
				<updated>2018-02-05T09:26:10Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Интерфейс управления шаблоном раписания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов  ====&lt;br /&gt;
Пересечение шаблонов может быть по следующим параметрам:&lt;br /&gt;
* По учителям&lt;br /&gt;
* Ученикам&lt;br /&gt;
* По кабинету&lt;br /&gt;
[[Изображение:Selection 065.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс управления шаблоном раписания ===&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс создания/редактирования шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 66.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс просмотра шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 67.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3177</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3177"/>
				<updated>2018-02-05T09:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Интерфейс управления шаблоном раписания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов  ====&lt;br /&gt;
Пересечение шаблонов может быть по следующим параметрам:&lt;br /&gt;
* По учителям&lt;br /&gt;
* Ученикам&lt;br /&gt;
* По кабинету&lt;br /&gt;
[[Изображение:Selection 065.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс управления шаблоном раписания ===&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс создания/редактирования шаблона расписания: ====&lt;br /&gt;
[[Файл:Selection 66.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс просмотра шаблона расписания: ====&lt;br /&gt;
[[Файл:Selection 67.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3176</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3176"/>
				<updated>2018-02-05T09:25:42Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов  ====&lt;br /&gt;
Пересечение шаблонов может быть по следующим параметрам:&lt;br /&gt;
* По учителям&lt;br /&gt;
* Ученикам&lt;br /&gt;
* По кабинету&lt;br /&gt;
[[Изображение:Selection 065.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс управления шаблоном раписания ===&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс создания/редактирования шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 66.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Интерфейс просмотра шаблона расписания: ====&lt;br /&gt;
[[Изображение:Selection 67.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_067.png&amp;diff=3175</id>
		<title>Файл:Selection 067.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_067.png&amp;diff=3175"/>
				<updated>2018-02-05T09:25:30Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_066.png&amp;diff=3174</id>
		<title>Файл:Selection 066.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_066.png&amp;diff=3174"/>
				<updated>2018-02-05T09:24:07Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3173</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3173"/>
				<updated>2018-02-05T09:21:53Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Пересечение шаблонов (по всем подразделениям) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов  ====&lt;br /&gt;
Пересечение шаблонов может быть по следующим параметрам:&lt;br /&gt;
* По учителям&lt;br /&gt;
* Ученикам&lt;br /&gt;
* По кабинету&lt;br /&gt;
[[Изображение:Selection 065.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_065.png&amp;diff=3172</id>
		<title>Файл:Selection 065.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_065.png&amp;diff=3172"/>
				<updated>2018-02-05T09:21:47Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3171</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3171"/>
				<updated>2018-02-05T09:19:23Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;br /&gt;
&lt;br /&gt;
=== Права плагина ===&lt;br /&gt;
Список прав:&lt;br /&gt;
&lt;br /&gt;
==== create_schedule ====&lt;br /&gt;
Право на создание расписания&lt;br /&gt;
''Роли по умолчанию:''&lt;br /&gt;
* Управляющий (manager)&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3170</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3170"/>
				<updated>2018-02-05T09:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;br /&gt;
&lt;br /&gt;
=== Конфиги ===&lt;br /&gt;
Список конфигов со значениями по умолчанию:&lt;br /&gt;
&lt;br /&gt;
==== enabled ====&lt;br /&gt;
''Флаг включения плагина''&lt;br /&gt;
* type = checkbox&lt;br /&gt;
* code = enabled&lt;br /&gt;
* value = 1&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3169</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3169"/>
				<updated>2018-02-05T09:13:50Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''Обязательные параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''Дополнительные параметры (mixedvar):''&lt;br /&gt;
* urlparams - в виде массива&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3168</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3168"/>
				<updated>2018-02-05T09:12:39Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''параметры (mixedvar):''&lt;br /&gt;
* storage == schtemplates&lt;br /&gt;
* action == view&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3167</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3167"/>
				<updated>2018-02-05T09:12:26Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
=== Перехватываемые события ===&lt;br /&gt;
Список перехватываемых событий:&lt;br /&gt;
&lt;br /&gt;
==== im/obj/get_object_url ====&lt;br /&gt;
&lt;br /&gt;
''параметры (mixedvar):''&lt;br /&gt;
* storage = schtemplates&lt;br /&gt;
* action = view&lt;br /&gt;
&lt;br /&gt;
''возвращаемые значения:''&lt;br /&gt;
* Возвращает ссылку на просмотр шаблона&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3166</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3166"/>
				<updated>2018-02-05T09:07:24Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Отчет о нагрузке шаблонов ===&lt;br /&gt;
Отчет включает себя два подотчета, один из которых отображает нагруженность учебных процессов, второй - пересечение шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== Нагруженность учебных процессов ====&lt;br /&gt;
[[Изображение:Selection 063.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== Пересечение шаблонов (по всем подразделениям) ====&lt;br /&gt;
[[Изображение:Selection 064.png‎||350px|center|]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_064.png&amp;diff=3165</id>
		<title>Файл:Selection 064.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_064.png&amp;diff=3165"/>
				<updated>2018-02-05T09:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_063.png&amp;diff=3164</id>
		<title>Файл:Selection 063.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_063.png&amp;diff=3164"/>
				<updated>2018-02-05T09:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3163</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3163"/>
				<updated>2018-02-05T09:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Раписание учебных занятий ==&lt;br /&gt;
Плагин предназначен для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс расписания учебных занятий ===&lt;br /&gt;
&lt;br /&gt;
Основной интерфейс раписания усебных занятий выглядит следующим образом:&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
Фильтр позволяет выбрать учебный период и увидеть список всех шаблонов, созданных в этом учебном периоде.&lt;br /&gt;
Доступны следующие способы отображения шаблонов.&lt;br /&gt;
&lt;br /&gt;
==== По времени ====&lt;br /&gt;
[[Изображение:Selection 059.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По учащимся ====&lt;br /&gt;
[[Изображение:Selection 060.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По преподавателям ====&lt;br /&gt;
[[Изображение:Selection 061.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
==== По номеру кабинета ====&lt;br /&gt;
[[Изображение:Selection 062.png‎||350px|center|]]&lt;br /&gt;
&lt;br /&gt;
*Панель управления достижениями&lt;br /&gt;
*Плагины портфолио&lt;br /&gt;
*Панель модерации достижений пользователей&lt;br /&gt;
*Мое портфолио&lt;br /&gt;
[[Изображение:Selection 058.png‎||350px|center|]]&lt;br /&gt;
=== Панель управления достижениями ===&lt;br /&gt;
Через данный интерфейс производится администрирование шаблонов достижений. &lt;br /&gt;
Имеется возможность создавать разделы при помощи кнопки “добавить раздел”, выстраивая нужную иерархию. Среди настроек раздела доступны:&lt;br /&gt;
*Имя раздела&lt;br /&gt;
*Родительский раздел&lt;br /&gt;
*Доступность в рейтинге&lt;br /&gt;
Последняя настройка отвечает за отображение достижений в рейтинге, добавленных по шаблонам достижений, хранящимся в редактируемом разделе.&lt;br /&gt;
Добавленные разделы отображаются в виде таблицы, в первом столбце которой доступны операции по редактированию, удалению и блокировке раздела.&lt;br /&gt;
Перед самой таблицей имеется кнопка, включающая режим сортировки разделов. В режиме сортировки путем перетаскивания можно поменять порядок отображения разделов.&lt;br /&gt;
[[Изображение:Selection 012.png||900px|center|]]&lt;br /&gt;
Находясь в разделе имеется возможность добавлять шаблоны достижений при помощи кнопки “Добавить шаблон достижения”.&lt;br /&gt;
Первым шагом добавления шаблона является настройка его основных характеристик таких как:&lt;br /&gt;
*Название шаблона&lt;br /&gt;
*Тип шаблона&lt;br /&gt;
*Раздел&lt;br /&gt;
*Баллы&lt;br /&gt;
Если включена подсистема модерации, то указанные баллы учитываются в рейтинге только после подтверждения достижения модератором.&lt;br /&gt;
После добавления шаблона достижения его необходимо активировать, кликнув по иконке с галочкой в таблице с шаблонами в первом столбце.&lt;br /&gt;
===== Тип шаблона “Результаты заданий” =====&lt;br /&gt;
Позволяет указать курс и задание, из которого автоматически будут создаваться достижения из ответов учащихся.&lt;br /&gt;
Имеется режим включающий назначение баллов пропорционально оценке. Количество баллов, указанных в достижении будет уменьшаться пропорционально набранному проценту оценки за задание.&lt;br /&gt;
Опционально, имеется возможность включить автоматическую отправку подтвержденных достижений в индекс антиплагиата.&lt;br /&gt;
===== Тип шаблона “Критерий” =====&lt;br /&gt;
Позволяет создать настраиваемый шаблон, предоставляющий пользователям возможность создавать достижения с ручным заполнением критериев.&lt;br /&gt;
В шаблон можно добавлять неограниченное количество поле следующих типов:&lt;br /&gt;
*текст - пользователю будет необходимо ввести текст при создании достижения&lt;br /&gt;
*дата - пользователю будет необходимо указать дату при создании достижения&lt;br /&gt;
*файл - пользователю будет необходимо прикрепить файл при создании достижения&lt;br /&gt;
*список - пользователю будет необходимо выбрать пункт из выпадающего списка при создании достижения&lt;br /&gt;
Все типы полей имеют возможность указания названия поля, выбора опции необходимости подтверждения поля модератором, коэффициента, на который будут умножены баллы достижения при заполнении поля. Выпадающий список имеет коэффициенты для каждого из пунктов.&lt;br /&gt;
[[Изображение:Selection 115.png||900px|center|]]&lt;br /&gt;
=== Плагины портфолио ===&lt;br /&gt;
Интерфейс встречает пользователя ссылками на подсистемы портфолио.&lt;br /&gt;
===== Фильтрация пользователей =====&lt;br /&gt;
Подсистема фильтрации по умолчанию отключена и ее можно включить в настройках подразделения, в котором расположено редактируемое портфолио. Название требуемой настройки: im - achievements - display_filter.&lt;br /&gt;
Интерфейс позволяет настраивать поля, по которым будет возможно отфильтровать пользователей на странице просмотра рейтинга и на странице модерации. &lt;br /&gt;
Среди полей будут отображаться дополнительные поля профилей типа “Выбор из списка” и “Переключатель”, а также поля достижений “Раздел” и “Дата создания достижения”.&lt;br /&gt;
Кроме того, в новой версии теперь доступна возможность фильтрации пользователей по ФИО.&lt;br /&gt;
[[Изображение:Selection 014.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
===== Блок информации о пользователе =====&lt;br /&gt;
На странице портфолио может быть отображена информация о пользователе из его профиля СДО. Настройка отображаемых полей производится в этом интерфейсе путем отмечания галочками нужных пунктов.&lt;br /&gt;
[[Изображение:Selection 016.png||700px|center|]]&lt;br /&gt;
=== Панель управления достижениями портфолио ===&lt;br /&gt;
Подсистема позволяет просматривать количество подтвержденных и неподтвержденных достижений пользователей СДО с возможностью сортировки по ФИО, дате создания достижения и по разделу достижений.&lt;br /&gt;
Если у пользователя отсутствует право модерации достижений, то колонка с неподтвержденными достижениями автоматически скрывается и пользователь видит только количество подтрвежденных достижений.&lt;br /&gt;
&lt;br /&gt;
За доступ к модерации и к отображению колонки неподтвержденных достижений отвечает право im - achievements - moderate.&lt;br /&gt;
[[Изображение:Selection 172.png||900px|center|Панель управления пользователями портфолио]]&lt;br /&gt;
&lt;br /&gt;
Также система позволяет фильтровать достижения для точечного поиска пользователей.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 173.png||900px|center|Панель управления пользователями портфолио]]&lt;br /&gt;
&lt;br /&gt;
=== Мое портфолио ===&lt;br /&gt;
Данный интерфейс предназначен для наполнения пользовательского портфолио достижениями и просмотра достижений пользователя.&lt;br /&gt;
По умолчанию интерфейс отображает достижения пользователя, который в данный момент авторизован в системе, но он же может отобразить достижения другого пользователя, если передан параметр с идентификатором персоны деканата “personid”. Подобные ссылки на портфолио других пользователей доступны в рейтинге.&lt;br /&gt;
В интерфейсе будет отображена информация о пользователе, настроенная ранее в инструменте “Блок информации о пользователе”.&lt;br /&gt;
Чуть ниже - информация о рейтинге (количество баллов, место в рейтинге), сгруппированная по разделам достижений и ссылки на рейтинг.&lt;br /&gt;
Далее - форма добавления достижений и просмотр добавленных достижений с возможностью их фильтрации по разделу/шаблону, баллам и статусу.&lt;br /&gt;
Добавленные достижения, при наличии соответствующих прав, можно комментировать. Для комментирования необходимо в колонке &amp;quot;действия&amp;quot; рядом с достижением кликнуть по иконке &amp;quot;комментарии&amp;quot;. На открывшейся странице будет доступна стандартная форма комментирования электронного деканата с возможностью добавления новых комментариев, редактирования и удаления своих собственных комментариев, просмотра чужих комментариев.&lt;br /&gt;
[[Изображение:Selection 018.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Рейтинг ===&lt;br /&gt;
Страница рейтинга по умолчанию отображает рейтинг по разделу достижений, указанный в настройках подразделения, в котором расположено редактируемое портфолио. Требуемая настройка: storage - achievementcats - default_achievementcat. Если раздел, указанный в настройке не доступен, будет предложен выбор раздела.&lt;br /&gt;
В начале страницы отображается форма фильтрации пользователей, участвующих в рейтинге, по полям, настроенным в описанном выше инструменте “Фильтрация пользователей”.&lt;br /&gt;
Ниже отображается таблица пользователей с указанием места в рейтинге и набранных баллов.&lt;br /&gt;
При наличии права im-achievements-rating_export под фильтром также отображается кнопка, позволяющая экспортировать рейтинг портфолио в файл и скачать его.&lt;br /&gt;
&lt;br /&gt;
Также система позволяет студенту выбор в участии в общем рейтинге. Если студент подтверждает участие, то он будет учитываться при формировании общего рейтинга, в ином случае он будет отсутствовать в общем рейтинге.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 174.png||900px|center|Личный кабинет пользователя портфолио]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_062.png&amp;diff=3162</id>
		<title>Файл:Selection 062.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_062.png&amp;diff=3162"/>
				<updated>2018-02-05T09:01:54Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_061.png&amp;diff=3161</id>
		<title>Файл:Selection 061.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_061.png&amp;diff=3161"/>
				<updated>2018-02-05T09:00:57Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_060.png&amp;diff=3160</id>
		<title>Файл:Selection 060.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_060.png&amp;diff=3160"/>
				<updated>2018-02-05T08:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_059.png&amp;diff=3159</id>
		<title>Файл:Selection 059.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_059.png&amp;diff=3159"/>
				<updated>2018-02-05T08:58:55Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_058.png&amp;diff=3158</id>
		<title>Файл:Selection 058.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_058.png&amp;diff=3158"/>
				<updated>2018-02-05T08:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3157</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3157"/>
				<updated>2018-02-05T08:52:49Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
'''Расписание.'''&lt;br /&gt;
&lt;br /&gt;
Плагин предназначин для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
&lt;br /&gt;
== Портфолио достижений ==&lt;br /&gt;
Плагин предназначен для управления разделами, шаблонами достижений, их отображением и модерированием. При помощи этого же плагина осуществляется доступ к наполнению портфолио и доступ к рейтингу.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс достижений ===&lt;br /&gt;
Портфолио достижений встречает пользователей списком ссылок на доступные в соответствии с их правами инструменты. В этом списке могут быть представлены ссылки на:&lt;br /&gt;
*Панель управления достижениями&lt;br /&gt;
*Плагины портфолио&lt;br /&gt;
*Панель модерации достижений пользователей&lt;br /&gt;
*Мое портфолио&lt;br /&gt;
[[Изображение:Selection_011.png‎||350px|center|]]&lt;br /&gt;
=== Панель управления достижениями ===&lt;br /&gt;
Через данный интерфейс производится администрирование шаблонов достижений. &lt;br /&gt;
Имеется возможность создавать разделы при помощи кнопки “добавить раздел”, выстраивая нужную иерархию. Среди настроек раздела доступны:&lt;br /&gt;
*Имя раздела&lt;br /&gt;
*Родительский раздел&lt;br /&gt;
*Доступность в рейтинге&lt;br /&gt;
Последняя настройка отвечает за отображение достижений в рейтинге, добавленных по шаблонам достижений, хранящимся в редактируемом разделе.&lt;br /&gt;
Добавленные разделы отображаются в виде таблицы, в первом столбце которой доступны операции по редактированию, удалению и блокировке раздела.&lt;br /&gt;
Перед самой таблицей имеется кнопка, включающая режим сортировки разделов. В режиме сортировки путем перетаскивания можно поменять порядок отображения разделов.&lt;br /&gt;
[[Изображение:Selection 012.png||900px|center|]]&lt;br /&gt;
Находясь в разделе имеется возможность добавлять шаблоны достижений при помощи кнопки “Добавить шаблон достижения”.&lt;br /&gt;
Первым шагом добавления шаблона является настройка его основных характеристик таких как:&lt;br /&gt;
*Название шаблона&lt;br /&gt;
*Тип шаблона&lt;br /&gt;
*Раздел&lt;br /&gt;
*Баллы&lt;br /&gt;
Если включена подсистема модерации, то указанные баллы учитываются в рейтинге только после подтверждения достижения модератором.&lt;br /&gt;
После добавления шаблона достижения его необходимо активировать, кликнув по иконке с галочкой в таблице с шаблонами в первом столбце.&lt;br /&gt;
===== Тип шаблона “Результаты заданий” =====&lt;br /&gt;
Позволяет указать курс и задание, из которого автоматически будут создаваться достижения из ответов учащихся.&lt;br /&gt;
Имеется режим включающий назначение баллов пропорционально оценке. Количество баллов, указанных в достижении будет уменьшаться пропорционально набранному проценту оценки за задание.&lt;br /&gt;
Опционально, имеется возможность включить автоматическую отправку подтвержденных достижений в индекс антиплагиата.&lt;br /&gt;
===== Тип шаблона “Критерий” =====&lt;br /&gt;
Позволяет создать настраиваемый шаблон, предоставляющий пользователям возможность создавать достижения с ручным заполнением критериев.&lt;br /&gt;
В шаблон можно добавлять неограниченное количество поле следующих типов:&lt;br /&gt;
*текст - пользователю будет необходимо ввести текст при создании достижения&lt;br /&gt;
*дата - пользователю будет необходимо указать дату при создании достижения&lt;br /&gt;
*файл - пользователю будет необходимо прикрепить файл при создании достижения&lt;br /&gt;
*список - пользователю будет необходимо выбрать пункт из выпадающего списка при создании достижения&lt;br /&gt;
Все типы полей имеют возможность указания названия поля, выбора опции необходимости подтверждения поля модератором, коэффициента, на который будут умножены баллы достижения при заполнении поля. Выпадающий список имеет коэффициенты для каждого из пунктов.&lt;br /&gt;
[[Изображение:Selection 115.png||900px|center|]]&lt;br /&gt;
=== Плагины портфолио ===&lt;br /&gt;
Интерфейс встречает пользователя ссылками на подсистемы портфолио.&lt;br /&gt;
===== Фильтрация пользователей =====&lt;br /&gt;
Подсистема фильтрации по умолчанию отключена и ее можно включить в настройках подразделения, в котором расположено редактируемое портфолио. Название требуемой настройки: im - achievements - display_filter.&lt;br /&gt;
Интерфейс позволяет настраивать поля, по которым будет возможно отфильтровать пользователей на странице просмотра рейтинга и на странице модерации. &lt;br /&gt;
Среди полей будут отображаться дополнительные поля профилей типа “Выбор из списка” и “Переключатель”, а также поля достижений “Раздел” и “Дата создания достижения”.&lt;br /&gt;
Кроме того, в новой версии теперь доступна возможность фильтрации пользователей по ФИО.&lt;br /&gt;
[[Изображение:Selection 014.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
===== Блок информации о пользователе =====&lt;br /&gt;
На странице портфолио может быть отображена информация о пользователе из его профиля СДО. Настройка отображаемых полей производится в этом интерфейсе путем отмечания галочками нужных пунктов.&lt;br /&gt;
[[Изображение:Selection 016.png||700px|center|]]&lt;br /&gt;
=== Панель управления достижениями портфолио ===&lt;br /&gt;
Подсистема позволяет просматривать количество подтвержденных и неподтвержденных достижений пользователей СДО с возможностью сортировки по ФИО, дате создания достижения и по разделу достижений.&lt;br /&gt;
Если у пользователя отсутствует право модерации достижений, то колонка с неподтвержденными достижениями автоматически скрывается и пользователь видит только количество подтрвежденных достижений.&lt;br /&gt;
&lt;br /&gt;
За доступ к модерации и к отображению колонки неподтвержденных достижений отвечает право im - achievements - moderate.&lt;br /&gt;
[[Изображение:Selection 172.png||900px|center|Панель управления пользователями портфолио]]&lt;br /&gt;
&lt;br /&gt;
Также система позволяет фильтровать достижения для точечного поиска пользователей.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 173.png||900px|center|Панель управления пользователями портфолио]]&lt;br /&gt;
&lt;br /&gt;
=== Мое портфолио ===&lt;br /&gt;
Данный интерфейс предназначен для наполнения пользовательского портфолио достижениями и просмотра достижений пользователя.&lt;br /&gt;
По умолчанию интерфейс отображает достижения пользователя, который в данный момент авторизован в системе, но он же может отобразить достижения другого пользователя, если передан параметр с идентификатором персоны деканата “personid”. Подобные ссылки на портфолио других пользователей доступны в рейтинге.&lt;br /&gt;
В интерфейсе будет отображена информация о пользователе, настроенная ранее в инструменте “Блок информации о пользователе”.&lt;br /&gt;
Чуть ниже - информация о рейтинге (количество баллов, место в рейтинге), сгруппированная по разделам достижений и ссылки на рейтинг.&lt;br /&gt;
Далее - форма добавления достижений и просмотр добавленных достижений с возможностью их фильтрации по разделу/шаблону, баллам и статусу.&lt;br /&gt;
Добавленные достижения, при наличии соответствующих прав, можно комментировать. Для комментирования необходимо в колонке &amp;quot;действия&amp;quot; рядом с достижением кликнуть по иконке &amp;quot;комментарии&amp;quot;. На открывшейся странице будет доступна стандартная форма комментирования электронного деканата с возможностью добавления новых комментариев, редактирования и удаления своих собственных комментариев, просмотра чужих комментариев.&lt;br /&gt;
[[Изображение:Selection 018.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
=== Рейтинг ===&lt;br /&gt;
Страница рейтинга по умолчанию отображает рейтинг по разделу достижений, указанный в настройках подразделения, в котором расположено редактируемое портфолио. Требуемая настройка: storage - achievementcats - default_achievementcat. Если раздел, указанный в настройке не доступен, будет предложен выбор раздела.&lt;br /&gt;
В начале страницы отображается форма фильтрации пользователей, участвующих в рейтинге, по полям, настроенным в описанном выше инструменте “Фильтрация пользователей”.&lt;br /&gt;
Ниже отображается таблица пользователей с указанием места в рейтинге и набранных баллов.&lt;br /&gt;
При наличии права im-achievements-rating_export под фильтром также отображается кнопка, позволяющая экспортировать рейтинг портфолио в файл и скачать его.&lt;br /&gt;
&lt;br /&gt;
Также система позволяет студенту выбор в участии в общем рейтинге. Если студент подтверждает участие, то он будет учитываться при формировании общего рейтинга, в ином случае он будет отсутствовать в общем рейтинге.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 174.png||900px|center|Личный кабинет пользователя портфолио]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3156</id>
		<title>Разработка:im/schedule</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/schedule&amp;diff=3156"/>
				<updated>2018-02-05T08:18:44Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = schedule&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
'''Расписание.'''&lt;br /&gt;
&lt;br /&gt;
Плагин предназначин для ввода и отображения информации по расписанию учебных занятий.&lt;br /&gt;
Плагин должен реализовывать следующие экраны интерфейса пользователя, возможность просмотра, отображения инструментов управления и использования которых определяется правами доступа пользователя:&lt;br /&gt;
&lt;br /&gt;
* Экран просмотра общего шаблона расписания по структурному подразделению (структурное подразделение задается через id в ссылке) и учебному периоду. Расписание организовано по дням учебной недели/учебного цикла плюс вкладка &amp;quot;управление&amp;quot;. Внутри каждой вкладки доступны подвкладки с вариантами учебной недели (общая, четная, нечетная) и вкладка &amp;quot;операции&amp;quot;. Внутри подвкладок с вариантом недели - список шаблонов уроков, заданных на этот день и ссылка для добавления нового урока на этот день. Уроки отсортированы по времени начала. Отображаются колонки &amp;quot;время начала, продолжительность, дисциплина (берется из учебного потока), преподаватель (берутся из учебного потока), академические группы (берутся из привязки к учебному потоку), кабинет. Напротив каждой ссылки &amp;quot;удалить&amp;quot; и &amp;quot;редактировать&amp;quot;.&lt;br /&gt;
[[Изображение:Экран_просмотра_общего_шаблона_расписания.png|thumb|500px|center|Шаблон экрана &amp;quot;Просмотр общего шаблона расписания по структурному подразделению&amp;quot;]]&lt;br /&gt;
* Экран импорта/экспорта шаблона учебного расписания по структурному подразделению и учебному периоду в формат CSV. [[Изображение:Экран_импорта_экспорта_шаблона_рассписания.png|thumb|500px|center|Шаблон экрана &amp;quot;Импорт/экспорт шаблона учебного расписания по структурному подразделению и учебному периоду в формат CSV&amp;quot;]]&lt;br /&gt;
* Экран редактирования записи в шаблоне расписания. Позволяет изменить день, вариант недели, время, продолжительность урока, тип события, место проведения (текстовое поле), статус, учебный поток (выпадающее меню - при смене учебного потока автоматически сменится преподаватель, группа и дисциплина, поскольку они задаются именно учебным потоком). Виджеты &amp;quot;занятость преподавателя на день&amp;quot;, &amp;quot;занятость группы/ученика на день&amp;quot;, &amp;quot;недельная нагрузка учебного потока&amp;quot; [[Изображение:Экран_редактирования_записи_в_шаблоне_рассписания.png|thumb|500px|center|Шаблон экрана &amp;quot;Редактирование записи в шаблоне расписания&amp;quot;]]&lt;br /&gt;
* Экран просмотра шаблона расписания по учебному потоку (во всех подразделениях). Аналогичен части экрана просмотра общего шаблона расписания на вариант дня недели, но отображаются только события, относящиеся к выбранному учебному потоку (id передается через ссылку), за всю учебную неделю в одну колонку, разделенную номерами/названиями дней недели. Строчка каждого события так же содержит вариант учебной недели, к которой оно относится. [[Изображение:Экран_просмотра_шаблона_рассписания_по_учебному_потоку.png|thumb|500px|center|Шаблон экрана &amp;quot;Просмотр шаблона расписания по учебному потоку&amp;quot;]]&lt;br /&gt;
* Экран просмотра шаблона расписания по преподавателю и учебному периоду (во всех подразделениях). Аналогичен части экрана просмотра общего шаблона расписания на вариант дня недели, но отображаются только события, относящиеся к данному преподавателю (id передается через ссылку). [[Изображение:Экран_просмотра_шаблона_рассписания_по_преподавателю_и_учебному_периоду.png|thumb|500px|center|Шаблон экрана &amp;quot;Просмотр шаблона расписания по преподавателю и учебному периоду&amp;quot;]]&lt;br /&gt;
* Экран просмотра шаблона расписания по ученику и учебному периоду (во всех подразделения). Аналогичен экрану просмотра шаблона расписания по преподавателю. [[Изображение:Экран_просмотра_шаблона_расписания_по_ученику_и_учебному_периоду.png |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр шаблона расписания по ученику и учебному периоду&amp;quot;]]&lt;br /&gt;
* Экран создания расписания на неделю. Размещается во вкладке &amp;quot;управление&amp;quot; экрана просмотра общего шаблона расписания. Позволяет выбрать начальную дату и вариант (кроме &amp;quot;нулевого&amp;quot;), начиная с которой будут созданы события по шаблону недели. [[Изображение:Экран_создания_расписания_на_неделю.png|thumb|500px|center|Шаблон экрана &amp;quot;Создание расписания на неделю&amp;quot;]]&lt;br /&gt;
* Экран создания расписания на день. Размещается во вкладке &amp;quot;опции&amp;quot; экрана просмотра общего шаблона расписания. Позволяет выбрать дату и вариант (кроме &amp;quot;нулевого&amp;quot;), на которую будут созданы события по шаблону дня. [[Изображение:Экран_создания_расписания_на_день.png|thumb|500px|center|Шаблон экрана &amp;quot;Создание расписания на день&amp;quot;]]&lt;br /&gt;
* Экран &amp;quot;реестр учебных дней&amp;quot;. Отображает список созданных учебных дней в рамках подразделения и учебного периода. Рядом с каждым учебным днем отображаются параметры, с которыми он был создан.[[Изображение:Экран_Реестр_учебных_дней.png |thumb|500px|center|Шаблон экрана &amp;quot;Реестр учебных дней&amp;quot;]]&lt;br /&gt;
* Экран &amp;quot;экспорт учебных событий&amp;quot;. Позволяет получить в виде файла CSV все учебные события по структурному подразделению за учебный день, диапазон дней, или учебный период. [[Изображение:Экран_Экспорт_учебных_событий.png|thumb|500px|center|Шаблон экрана &amp;quot;Экспорт учебных событий&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день без группировки, отсортированных по времени. [[Изображение:Экран_просмотра_учебных_событий_без_группировки.png |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день без группировки, отсортированных по времени&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день по подразделению, сгруппированных по преподавателю. [[Изображение:Экран_просмотра_учебных_событий_по_преподавателю.png |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день по подразделению, сгруппированных по преподавателю&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день по подразделению, сгруппированных по академическим группам (для учебных потоков, привязанных к академическим группам). [[Изображение:Экран_просмотра_учебных_событий_по_академическим_группам.png |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день по подразделению, сгруппированных по академическим группам&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день по подразделению, сгруппированных по ученикам. Возможность отфильтровать события, привязанные к учебным потокам, привязанным к академическим группам. [[Изображение:Экран_просмортра_учебных_событий_по_ученикам.png |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день по подразделению, сгруппированных по ученикам&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день для ученика (по id ученика, доступен ученику, законному представителю и тем, у кого есть доступ), не зависимо от подразделений. [[Изображение:Экран_просмотра_учебных_событий_для_ученика.png  |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день для ученика&amp;quot;]]&lt;br /&gt;
* Экран просмотра учебных событий на учебный день для преподавателя (по id преподавателя, виден самому преподавателю и у кого есть доступ, изначально доступ есть у админов и руководителей структурного подразделения, которому принадлежит событие). События разделены по трем спискам: сегодняшние события, события, проведение которых не отмечено вовремя, отложенные события, точное время восполнения которых еще не назначено. С экрана есть ссылки на &amp;quot;Экран просмотра учебных событий на календарную дату по подразделению, сгруппированных по преподавателю&amp;quot; и &amp;quot;экран просмотра расписания по преподавателю&amp;quot;. Напротив наступающих и неотмеченных событий есть ссылка. [[Изображение:Экран_просмотра_учебных_событий_для_преподавателя.png  |thumb|500px|center|Шаблон экрана &amp;quot;Просмотр учебных событий на учебный день для преподавателя&amp;quot;]]&lt;br /&gt;
* Экран отметки о проведении события. Позволяет установить статус занятия. Преподаватель может сменить статус &amp;quot;запланировано&amp;quot; на &amp;quot;состоялось&amp;quot; или &amp;quot;отложено&amp;quot;. Если разрешено политиками отдела (пока не реализовано), может изменить статус &amp;quot;отложено&amp;quot; на статус &amp;quot;заменено&amp;quot;, указав новую дату события (других параметров при этом поменять не может. Администратор может изменить статус &amp;quot;запланировано&amp;quot; и &amp;quot;отложено&amp;quot; на &amp;quot;состоялось&amp;quot; и &amp;quot;отложено&amp;quot;. [[Изображение:Экран_отметки_о_проведении_события.png|thumb|500px|center|Шаблон экрана &amp;quot;Отметки о проведении события&amp;quot;]]&lt;br /&gt;
* Виджеты: генерируются с помощью специальных функций, вставляя на страницу, с которой были вызваны, дополнительную информацию:&lt;br /&gt;
** Занятость преподавателя на день в шаблоне расписания с указанным вариантом (во всех структурных подразделениях): нагрузка в академических и список занятий с указанием кода группы и дисциплины. [[Изображение:Виджет_Занятость_преподавателя.png|thumb|500px|center|Шаблон виджета &amp;quot;Занятость преподавателя на день&amp;quot;]]&lt;br /&gt;
** Занятость группы/ученика на день в шаблоне расписания с указанным вариантом (во всех учебных программах, во всех структурных подразделениях): нагрузка в академических часах и список занятий с указанием дисциплины. [[Изображение:Виджет_Занатость_группы,_ученика.png|thumb|500px|center|Шаблон виджета &amp;quot;Занятость группы/ученика на день&amp;quot;]]&lt;br /&gt;
** Недельная нагрузка учебного потока (предмето-класса при указанном вариенте учебной недели) в шаблоне расписания: количество академических часов и список занятий в рамках данного учебного потока, приписанных к данной учебной недели. [[Изображение:Виджет_Недельная_нагрузка_учебного_потока.png |thumb|300px|center|Шаблон виджета &amp;quot;Недельная нагрузка учебного потока&amp;quot;]]&lt;br /&gt;
** Календарь учебных дней по структурному подразделению. Отображает календарь, в котором созданные учебные дни подсвечиваются в виде ссылок на &amp;quot;экран просмотра учебных событий на учебный день без группировки&amp;quot; либо другой экран, ссылка на который была передана (к переданной ссылке добавляется id дня из реестра дней). [[Изображение:Виджет_Календарь_учебных_дней.png |thumb|500px|center|Шаблон виджета &amp;quot;Календарь учебных дней&amp;quot;]]&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/journal&amp;diff=3154</id>
		<title>Разработка:im/journal</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/journal&amp;diff=3154"/>
				<updated>2017-12-29T12:59:12Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: /* Отчеты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = journal&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
= Классный журнал =&lt;br /&gt;
В журнале можно выставлять оценки и вводить отчет о проведенном уроке.&lt;br /&gt;
== Список занятий ==&lt;br /&gt;
Включает в себя три страницы: информацию о текущем дне, список занятий в целом и поиск занятий по конкретной персоне.&lt;br /&gt;
Каждая страница содержит соответствующую ей навигацию.&lt;br /&gt;
====Список занятий за текущий день====&lt;br /&gt;
При заходе с главной страницы при нажатии на ссылку &amp;quot;Журнал&amp;quot; пользователь попадает именно на эту страницу, с нее начинается работа со списком занятий. &lt;br /&gt;
&lt;br /&gt;
В начале страницы отображается секция навигации, с помощью которой пользователь может перейти на просмотр списка занятий в целом, поиск занятий по персоне или просмотреть отчет по фактической нагрузке.&lt;br /&gt;
&lt;br /&gt;
Далее отображаются все уроки пользователя за сегодняшний день. Если уроков нет секция остается пустой.&lt;br /&gt;
&lt;br /&gt;
После этого отображается секция нагрузки пользователя. В ней пользователь может просмотреть всю информацию о своих табельных нагрузках: подразделение, к которому относится табель, табельный номер, ставка в часах фактическая и указанная и табеле, а также список всех активных учебных процессов, которые преподает пользователь. Каждая табельная нагрузка выводится в отдельной таблице.&lt;br /&gt;
====Список занятий в целом====&lt;br /&gt;
В начале страницы отображается секция навигации, с помощью которой пользователь может вернутся обратно на страницу списка занятий за день, а также перейти на страницу поиска занятий по персоне.&lt;br /&gt;
&lt;br /&gt;
После навигации пользователь видит два календарика, где он может выбрать как один определенный день, так и целый период, за который он хочет просмотреть список занятий. &lt;br /&gt;
&lt;br /&gt;
Далее отображается список занятий за указанный день или период.&lt;br /&gt;
&lt;br /&gt;
====Поиск занятий по персоне====&lt;br /&gt;
&lt;br /&gt;
На этой странице пользователь видит текстовое поле для ввода фамилии (а может даже имени и отчества) персоны и кнопку &amp;quot;Найти&amp;quot;. Если по запросу были найдены персоны, он выведет их в виде списка. Кликнув на искомую персону пользователя перекинет на страницу просмотра списка занятий в целом, но уже по конкретной персоне.&lt;br /&gt;
&lt;br /&gt;
== Журнал группы ==&lt;br /&gt;
Страница принимает обязательный параметр id учебного процесса.&lt;br /&gt;
&lt;br /&gt;
Под панелью навигации выводится надпись &amp;quot;Журнал группы&amp;quot;.&lt;br /&gt;
Ниже таблица с информацией о потоке - программа, предмет, группа, преподаватель. Справа от этой таблицы размещена  ссылка &amp;quot;Новый урок&amp;quot;. Нажатие на нее позволяет создать новый отчет об уроке. Над этой ссылкой будут выводиться сообщения об ошибках сохранения данных из таблицы оценок.&lt;br /&gt;
&lt;br /&gt;
Ниже отображаются две таблицы - таблица оценок и, справа от нее, таблица уроков. Обе таблицы сделаны максимально похожими на соответствующие таблицы в бумажном &amp;quot;Классном журнале&amp;quot;. Таблицы связаны друг с другом, содержат в себе темы с directmap=1&lt;br /&gt;
&lt;br /&gt;
Таблица уроков содержит в себе темы и события связанные с указанным учебным процессом, кроме удаленных. Если же тема не связана с событием или событие не связано с темой они также отображаются в таблице, но без соответствующей информации.&lt;br /&gt;
&lt;br /&gt;
Таблица оценок события и темы отображаются также как и в таблице уроков, кроме замененных событий и событий без тем. Дата в таблице оценок отображаются только в том случае, если для созданной темы создано событие, если у темы события нет, отображается полностью его название. &lt;br /&gt;
&lt;br /&gt;
При нажатии на дату в таблице оценок, происходит перемещение к соответствующей строке отчета об уроке. При нажатии на иконку редактирования отображается форма заполнения оценок и посещаемости.&lt;br /&gt;
&lt;br /&gt;
=== Таблица оценок. ===&lt;br /&gt;
&lt;br /&gt;
Если таблица уроков пуста, то в таблице оценок нет ни одной колонки с датой.&lt;br /&gt;
&lt;br /&gt;
Если журнал заполнен, то в верхней строке отображаются названия месяцев, ниже номера дней месяцев, на которые приходились занятия. Каждое число месяца - ссылка, при нажатии на которую происходит переход на соответствующую этому дню строку таблицы уроков.&lt;br /&gt;
&lt;br /&gt;
Сразу под числом расположен значок редактирования. Он также выполнен в виде ссылки. При нажатии на него страница перезагружается в режиме формы ввода оценок и выставления присутствия учеников на уроке, который проходил в тот день, по значку под числом которого щелкнули.&lt;br /&gt;
&lt;br /&gt;
В колонке этого дня, напротив фамилии каждого ученика появляются три поля. Поле выбора из списка - для проставления оценки, поле переключатель - для отметки присутствия на уроке и поле переключатель - для отметки обучения учащегося на уроке. &lt;br /&gt;
&lt;br /&gt;
В выборе оценок из списка, отображаются те оценки, что прописаны в шкале оценок указанной темы. Если в теме шкала отсутствует, то шкала берется из связанного с темой предмета, если же и там шкалы нет, то задается стандартная от 1 до 5.&lt;br /&gt;
&lt;br /&gt;
Далее отображается галочка &amp;quot;н&amp;quot;, при нажатии на которую учащийся помечается как отсутствующий на уроке. Если же мы хотим указать учащегося как присутствующего галочку просто не ставим. Если кому-то была выставлена и оценка и отметка об отсутствии на уроке, на против его фамилии можно будет увидеть оценку с буквой &amp;quot;н&amp;quot;. Однако перед сохранением будет выведено предупреждение о том, что выставлена оценка отсутствующему ученику. Под уведомлением будут две кнопки - &amp;quot;Продолжить&amp;quot; и &amp;quot;Отменить&amp;quot;. При нажатии на &amp;quot;Продолжить&amp;quot; сценарий сохранения будет выполнен. Нажатие на другую кнопку вызовет отмену процедуры сохранения и возврат к форме с несохраненными изменениями.&lt;br /&gt;
&lt;br /&gt;
Замыкает тройку галочка &amp;quot;н/о&amp;quot;, которая показывает обучался ли учащийся на этом уроке или нет. В отличие от галочки &amp;quot;н&amp;quot;, которая помечает присутствие или отсутствие учащегося на уроке, галочка &amp;quot;н/о&amp;quot; или &amp;quot;не обучался&amp;quot;, что ученик в данный момент времени вообще не обучался на данном уроке по какой-либо причине(начал обучатся не со всеми, закончил обучатся раньше, взял академический отпуск, находится на лечении в санатории или больнице и т.д). Появляется эта галочка только в том случае, если присутствие или отсутствие у учащегося не проставлено.&lt;br /&gt;
&lt;br /&gt;
При переключении в режим формы под таблицей появляется надпись &amp;quot;Внимание! До нажатия кнопки &amp;quot;сохранить&amp;quot; оценки не сохраняются...&amp;quot;, под которой также появится галочка о подтверждения проведения урока и три кнопки - &amp;quot;Сохранить&amp;quot;, &amp;quot;Сохранить и продолжить&amp;quot;, &amp;quot;Восстановить&amp;quot;. &lt;br /&gt;
Нажатие на первую кнопку сохраняет изменения, сделанные в форме и перезагружает страницу в режим просмотра. Вторая - сохраняет сделанные изменения, но страница остается в режиме формы - можно продолжать ввод. Третья кнопка отменяет сделанные изменения. Все введенные,  но несохраненные данные удаляются из формы. Форма перегружается с отображением последних сохраненных изменений.&lt;br /&gt;
&lt;br /&gt;
Если ученику была выставлена оценка, а затем отменена - в форме было выбрано пустое поле, то ранее выбранная оценка будет удалена. Если оценка была изменена, то оценка будет обновлена. Каждое из этих действий, а также выставление статуса присутствия на уроке, будет выполнено через издание приказа.&lt;br /&gt;
Если редактируется контрольная точка без события, то в форме показываеются только поля выставления оценки. Поле присутствия на уроке не показывается и статус присутствия не сохраняется.&lt;br /&gt;
Контрольная точка без события выводится в таблице оценок без даты. Вместо даты выводится название КТ.&lt;br /&gt;
Если пользователь нажал галочку отметки проведения урока, то вместе с приказом о посещаемости событие помечается как состоявшееся.&lt;br /&gt;
&lt;br /&gt;
Что происходит в процессе сохранения.&lt;br /&gt;
После того как нажата одна из кнопок, сохраняющая внесенные изменения происходит&lt;br /&gt;
&lt;br /&gt;
* формирование приказа регистрации присутствия учеников на уроке. В него сохраняются данные о всех учениках потока, их статусы присутствия, id события, статус присутствия на котором выставляется. Также вместе с приказом идет отметка о проведении урока. &lt;br /&gt;
* применение приказа и сохранение статусов учеников в соответствующих таблицах.&lt;br /&gt;
&lt;br /&gt;
Если были выставлены оценки. То в дополнение к вышеописанным действиям происходят следующие действия:&lt;br /&gt;
* формирование приказа регистрации выставления оценок только тем ученикам, которые их получили на уроке. В приказе сохраняются: точное время выставления оценки, id КТ, за которую выставлена оценка, id преподавателя (из /storage/persons), который выставил оценку, ученики, которые получили оценку, и соответствующие им оценки, статус оценки, id подписки ученика на поток.&lt;br /&gt;
* применение приказа и сохранение оценок в соответствующих таблицах.&lt;br /&gt;
&lt;br /&gt;
Примечание: Если у учащегося была проставлена галочка &amp;quot;н/о&amp;quot;, то данные по этому ученику в приказ не сохраняются &lt;br /&gt;
&lt;br /&gt;
После создания отчета об уроке, происходит возврат на главную страницу журнала и таблица оценок загружается в режиме формы того дня, отчет для которого был создан. Если этот день выходит за границы видимости окна, то происходит перемещение таблицы оценок таким образом, чтобы нужная колонка оказалась видимой. После редактирования отчета об уроке таблица оценок загружается в режиме просмотра. Если день, для которого происходило редактирование отчета выходит за границы видимости, то происходит перемещение таблицы оценок таким образом, чтобы нужная колонка оказалась видимой.&lt;br /&gt;
&lt;br /&gt;
=== Таблица уроков. ===&lt;br /&gt;
Представляет собой таблицу из семи столбцов.&lt;br /&gt;
# Порядковый номер урока.&lt;br /&gt;
# Дата проведения урока в формате дд.мм.гг&lt;br /&gt;
# Тема урока. Если отображается событие без темы, данная ячейка пустая.&lt;br /&gt;
# Домашнее задание. Если отображается событие без темы или пользователь ничего не вводил в поле домашнего задания, данная ячейка пустая.&lt;br /&gt;
# Время на домашнее задание. Аналогично со столбцом &amp;quot;Домашнее задание&amp;quot;&lt;br /&gt;
# Примечание. Аналогично со столбцом &amp;quot;Домашнее задание&amp;quot;. На данный момент не используется, ввиду сокращения размеров таблицы &lt;br /&gt;
# Статус урока. Если отображается тема без события, данная ячейка пустая. Если событие зафиксировано как состоявшееся, ниже пишется персона проводившая событие.&lt;br /&gt;
&lt;br /&gt;
Уроки в таблице сортируются по датам, сверху вниз по возрастанию, как и положено в бумажном журнале.&lt;br /&gt;
Под датой располагается значок редактирования информации об уроке, выполненный в виде ссылки. При щелчке по нему открывается новая страница с формой редактирования урока. Все поля формы заполнены соответствующей информацией. Ее можно изменить, а изменения сохранить.&lt;br /&gt;
Эта же страница открывается при щелчке по ссылке &amp;quot;Новый урок&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Страница редактирования урока. ===&lt;br /&gt;
Вверху страницы, под строкой навигации, выводится надпись &amp;quot;Журнал группы&amp;quot;.&lt;br /&gt;
Ниже выводится форма ввода информации об уроке. &lt;br /&gt;
&lt;br /&gt;
Первой отображается секция создания события. Здесь можно выбрать создавать событие или нет (если создается тема без события), если да, то можно выбрать форму проведения урока (очно/дистанционно) и дату проведения. Если событие редактируется, то эти поля изменить нельзя. Если у пользователя нет прав для создания события, то данная секция не отображается.&lt;br /&gt;
&lt;br /&gt;
Следом идет секция для создания темы урока. Сначала мы выбираем как мы создаем тему:&lt;br /&gt;
* Не создавать новую тему - если событие создается без темы&lt;br /&gt;
* Выбрать тему из планирования - если к событию мы привязываем существующую уже созданную тему.&lt;br /&gt;
* Создать собственную тему - создает новую тему на планирование по учебному процессу&lt;br /&gt;
В третьем варианте, при создании новой темы пользователь может либо выбрать родительские темы, откуда он будет наследовать название своей темы (поле &amp;quot;Что пройдено на уроке&amp;quot;, необязательно к заполнению, но пользователь может ввести что-то свое), либо заполнить поле Что пройдено на уроке&amp;quot;. Далее пользователь заполняет все оставшееся поля по мере необходимости.&lt;br /&gt;
&lt;br /&gt;
В самом низу расположены две кнопки - &amp;quot;Сохранить&amp;quot; и &amp;quot;Отмена&amp;quot;. При нажатии на вторую происходит возврат на главную страницу журнала без сохранения внесенных изменений. После нажатия на кнопку &amp;quot;Сохранить&amp;quot; происходит сохранение введенных данных в соответствующих таблицах. О результатах операции сохранения информирует надпись, выводимая под кнопками. Еще ниже появляется ссылка &amp;quot;назад&amp;quot; для возврата на главную страницу журнала. В случае возврата после сохранения данных, таблица оценок загружается в режиме редактирования данных на дату только что сохраненного урока.&lt;br /&gt;
&lt;br /&gt;
Правее формы редактирования урока расположено окно с полосами прокрутки, в котором можно просмотреть темы уже проведенных уроков.&lt;br /&gt;
Они выводятся в видет таблицы из трех столбцов, в которых указываются соответственно дата, тема урока и домашнее задание.&lt;br /&gt;
&lt;br /&gt;
В зависимости от заполненности полей ввода возможны разные варианты обработки введенных данных.&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
 |id темы&lt;br /&gt;
 |id события&lt;br /&gt;
 |создание события&lt;br /&gt;
 |создание темы&lt;br /&gt;
 |как обрабатывается&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |ничего не создается&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |ничего не создается. Форма подгружает выбранную тему для редактирования&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы с указанными пользователем данными без события&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |создается новое событие с указанными пользователем данными без темы&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |создается новое событие с указанными пользователем данными и привязкой к выбранной теме&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |0&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы и новая темы с указанными пользователем данными связанные друг с другом&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Не создавать новую тему&lt;br /&gt;
 |ничего не создается и не редактируется&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Выбрать тему из планирования&lt;br /&gt;
 |Выбранная тема привязывается к указанному событию&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |0&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |выбрано: Создать собственную тему&lt;br /&gt;
 |создается новая темы с указанными пользователем данными и привязывается к указанному событию&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |существующая&lt;br /&gt;
 |не выбрано&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |редактируется указанная тема&lt;br /&gt;
 |-&lt;br /&gt;
 |0&lt;br /&gt;
 |существующая&lt;br /&gt;
 |выбрано&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |создается новое событие с указанными пользователем данными, к которому привязывается указанная тема. Тему можно отредактировать&lt;br /&gt;
 |-&lt;br /&gt;
 |существующая&lt;br /&gt;
 |существующая&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |нет выбора&lt;br /&gt;
 |редактируется указанная тема, событие не редактируется&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ведомость итоговых оценок ===&lt;br /&gt;
На данной странице можно выставить итоговые оценки учащимся и завершить обучение потока. Страница принимает обязательный параметр id - id идущего  или завершенного потока.&lt;br /&gt;
&lt;br /&gt;
Вверху страныцы отображается форма, где отображены ученики, которые обучаются на данном потоке. Напротив каждого можно выбрать итоговую оценку, выставляемую учащемуся. Итоговые оценки берутся из шкалы дисциплины приписанной к данному потоку. Под ведомостью стоит галочка подтвержения оценок, без нее оценки не сохранятся. Делее стоит галочка завершения обучения если необходимо завершить поток, При завершении потока все подписки на дисциплину переводятся в один из конечных статусов. Если поток уже завершен, то галочка не показывается, вместо нее предупреждение. После завершения потока оценки также можно выставить, но они уже будут идти как переэкзаменовка. &lt;br /&gt;
&lt;br /&gt;
После того как мы выставили оценки и нажали на кнопку сохранить формируется приказ о выставленни итоговых оценок. На основе этого приказа сохраняются оценки, после чего на новой странице показывается шаблон ведомости в том виде, в котом она будет распечатана. &lt;br /&gt;
После первого сохранения оценок эта ведомость также становится доступна для печати. &lt;br /&gt;
&lt;br /&gt;
Перейти на эту страницу можно со страницы Журнала группы.&lt;br /&gt;
&lt;br /&gt;
== Отчеты ==&lt;br /&gt;
=== Отчеты о фактической нагрузке ===&lt;br /&gt;
&lt;br /&gt;
Позволяют просмотреть статистику о нагрузке учителей за определенный период. [[ Разработка:im/reports#Отчеты о фактической нагрузке | Подробнее ]]&lt;br /&gt;
&lt;br /&gt;
Для просмотра отчета по любой персоне необходимо право im/journal view:salfactors.&lt;br /&gt;
&lt;br /&gt;
Для просмотра своего отчета необходимо право im/journal view:salfactors/own.&lt;br /&gt;
&lt;br /&gt;
Для просмотра истории по отчетам (данные сроком более 2 месяцев) необходимо право view:salfactors_history.&lt;br /&gt;
&lt;br /&gt;
=== Отчеты по замененным занятиям ===&lt;br /&gt;
&lt;br /&gt;
Отчет отображает информацию по замененным занятиям с указанием суммарного количество часов и зарплатных часов и с возможностью выбора нескольких учебных периодов.&lt;br /&gt;
&lt;br /&gt;
Интерфейс заказа отчета выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-1.png||400px|center|]]&lt;br /&gt;
&lt;br /&gt;
Интерфейс собранного отчета выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-2.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
Отчет представляет собой информацию по замененным занятиям, также имеется возможно перехода в режим отображения отчета по преподавателям.&lt;br /&gt;
Отчет по преподавателям выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:replaced_events-4.png||900px|center|]]&lt;br /&gt;
&lt;br /&gt;
Отчет можно фильтровать по типам замен: &lt;br /&gt;
*По замене другим временем&lt;br /&gt;
*По замене другим преподавателем&lt;br /&gt;
&lt;br /&gt;
=== Сводная ведомость текущих оценок и пропущенных уроков по параллели ===&lt;br /&gt;
&lt;br /&gt;
Отчет отображает информацию о процессе обучения студентов. Включает в себя следующую информацию:&lt;br /&gt;
* Всего уроков по расписанию за период - количество занятий ученика по раписанию по всем его предметам&lt;br /&gt;
* Пропущенных уроков за период (кол-во) - отмеченные в журнале символом «Н»&lt;br /&gt;
* Текущие оценки - текущие оценки ученика по предмету (оценку идут подряд 451332)&lt;br /&gt;
* Средний балл учащегося по предмету за период - средний балл студента за предмет (если оценки 4532, средняя -3,25)&lt;br /&gt;
* Средний балл по предмету в параллели за период - средний бал всех оценок всех учеников за предмет (если у одного ученика оценки 45, у второго 53, средняя (4+5+5+3)/4 = 4,25)&lt;br /&gt;
* Качество знаний по предмету в параллели за период - отношений учеников, у которых в текущих оценках только 4 и 5 к общему числу учеников, изучающих предмет (если ученик не изучал предмет, он будет закрашен серым цветом и не будет учитываться в подсчете)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 02011.png||400px|center|]]&lt;br /&gt;
&lt;br /&gt;
== Приказы ==&lt;br /&gt;
=== Приказ о закрытии зарплатного периода ===&lt;br /&gt;
&lt;br /&gt;
==== Структура приказа о закрытии зарплатного периода ====&lt;br /&gt;
Данные приказа:&lt;br /&gt;
* reportid - id сформированного [[ Разработка:im/reports#Отчеты о фактической нагрузке | отчета по фактической нагркзке ]]&lt;br /&gt;
&lt;br /&gt;
==== Формирование приказа о переводе ====&lt;br /&gt;
При формировании приказа также формируется отчет по фактической нагрузке с тем же указанным промежутком и в тоже указанное время исполнение, что и в приказе. &lt;br /&gt;
&lt;br /&gt;
==== Подписание приказа о переводе ====&lt;br /&gt;
Подписание приказа происходит сразу же после его формирование.&lt;br /&gt;
&lt;br /&gt;
=== Исполнение приказа о переводе ===&lt;br /&gt;
По крону. Возможно позже будет реализовано вручную.&lt;br /&gt;
&lt;br /&gt;
Генерирует приказ по фактической нагрузке. После этого фиксирует все дни подразделения и его дочерних подразделений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== События ==&lt;br /&gt;
* itog_grade_was_set - генерируется во время выставления итоговой оценки не зависимо от того, происходит первичное выставление оценки или повторное через ведомость пересдачи&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Уведомления ==&lt;br /&gt;
&lt;br /&gt;
==== Уведомление учащегося об оценке ====&lt;br /&gt;
&lt;br /&gt;
Отправка уведомлений после выставления оценки в электронном деканате осуществляется в случае, если включена настройка в подразделении.&lt;br /&gt;
&lt;br /&gt;
Для отправки уведомлений об оценке полученной впервые по дисциплине, необходимо установить настройку send_grade_notification в значение 1. В качестве темы письма будет использоваться текст из настройки grade_notification_subject, в качестве основного текста письма будет использована настройка grade_notification_text.&lt;br /&gt;
&lt;br /&gt;
Для отправки уведомления об оценке полученной через ведомость пересдачи, необходимо установить настройку send_reoffset_notification в значение 1. В качестве темы письма будет использоваться текст из настройки reoffset_notification_subject, в качестве основного текста письма будет использована настройка reoffset_notification_text.&lt;br /&gt;
&lt;br /&gt;
В теме и тексте письма можно использовать следующие подстановки:&lt;br /&gt;
* [PERSONFULLNAME] - ФИО учащегося&lt;br /&gt;
* [DISCIPLINE] - Наименование дисциплины&lt;br /&gt;
* [GRADE] - полученная оценка&lt;br /&gt;
&lt;br /&gt;
=Права=&lt;br /&gt;
&lt;br /&gt;
* '''datamanage''' - глобальное право (администратор)&lt;br /&gt;
* '''view_journal''' - право на просмотр журнала учебного процесса (учитель курса или завуч)&lt;br /&gt;
* '''view_all_journals''' - право на просмотр всех журналов (может просматривать общую информацию и личные данные)&lt;br /&gt;
* '''view_all_journals_department''' - право на просмотр всех журналов подразделения (может просматривать общую информацию и личные данные)&lt;br /&gt;
* '''can_complete_lesson''' - право отметить проведение урока (учитель урока или завуч)&lt;br /&gt;
* '''create_schevent''' - право на создание события (завуч и учитель на потоке, если есть переменная в конфиге)&lt;br /&gt;
* '''control_journal''' - право на проверку журнала (завуч)&lt;br /&gt;
* '''give_grade''' - право на выставление оценки (учитель на потоке или завуч)&lt;br /&gt;
* '''give_itog_grades''' - право выставить итоговые оценки (поток завершён и пользователь - учитель на потоке)&lt;br /&gt;
* '''view_events''' - право просматривать свое расписание (учитель)&lt;br /&gt;
* '''give_attendance''' - право на отметку посещаемости (учитель урока или завуч)&lt;br /&gt;
* '''give_theme_event''' - право указать тему для события (только событие в статусе &amp;quot;запланирован&amp;quot; или &amp;quot;отложено на неопределенный срок&amp;quot;, а пользователь - завуч или учитель потока)&lt;br /&gt;
* '''edit_plans''' - право редактировать КТ (КТ не &amp;quot;зафиксирована&amp;quot; и ((КТ завершена или событие состоялось), а пользователь - завуч) или пользователь может выставлять оценки)&lt;br /&gt;
* '''replace_schevent''' - право формирование замены события (учитель на потоке или завуч)&lt;br /&gt;
&lt;br /&gt;
= API =&lt;br /&gt;
В этом разделе описаны функции для работы со страницами &amp;quot;журнал группы&amp;quot; и &amp;quot;список журналов&amp;quot;. Здесь содержится только краткое описание функций и их параметров. Если вас интересует их внутренняя логика, то обратитесь к разделу [[Разработка:im/journal#Подробное описание работы функций|Подробное описание]]. Аргументы всех функций перечислены именно в том порядке, в котором их следует передавать.&lt;br /&gt;
=== Журнал группы ===&lt;br /&gt;
В этом разделе собраны все функции, которые относятся к странице &amp;quot;журнал группы&amp;quot;&lt;br /&gt;
==== Класс dof_im_journal_tablegrades ====&lt;br /&gt;
Класс отрисовки школьного журнала&lt;br /&gt;
===== print_texttable() =====&lt;br /&gt;
Вывести страницу журнала - просмотр оценок, или редактирование&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $editid  - id редактируемого учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $eventid - id учебного события, которое будет редактировано (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* null&lt;br /&gt;
===== check_permissions() =====&lt;br /&gt;
Проверяет разрешения на редактирование оценок для текущего пользователя&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true/false - есть или нет разрешения на редактирование оценок&lt;br /&gt;
==== Класс dof_im_journal_templans_table ====&lt;br /&gt;
Класс для отрисовки таблицы тематического планирования в классном журнале&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
 &lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== print_table() =====&lt;br /&gt;
Выводит таблицу тематического планирования на экран&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
*  true если операция вывода прошла успешно, или false если при выводе возникли ошибки&lt;br /&gt;
==== Класс dof_im_journal_edittopic ====&lt;br /&gt;
Класс для создания или редактирования одной темы на странице планирования уроков&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $planid - id элемента учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
* $eventid - id учебного события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== get_topic() =====&lt;br /&gt;
Возвращает объект с полями, необходимыми для заполнения формы&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* object - объект с полями для вставки в форму, или false в случае ошибки&lt;br /&gt;
===== create_topic() =====&lt;br /&gt;
Создает новый элемент тематического планирования&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $checkpoint - контрольная точка из таблицы [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $event - заранее заготовленный объект для таблицы [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи из таблицы schevents или false в случае ошибки&lt;br /&gt;
===== save_topic() =====&lt;br /&gt;
Обновляет существующий или создает новый элемент тематического планирования&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $checkpoint (object) - объект для обновления или создания записи в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $event (object) - объект для обновления или создания записи в таблице [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true, если все записи успешно обновлены&lt;br /&gt;
* (int), id новой записи, если она была добавлена&lt;br /&gt;
* false в случае ошибки&lt;br /&gt;
===== print_table() =====&lt;br /&gt;
Формирует таблицу тематического планирования в правой части страницы журнала&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
*  true если операция вывода прошла успешно, или false если при выводе возникли ошибки&lt;br /&gt;
===== get_anchor_id() =====&lt;br /&gt;
Возвращает метку времени, которая будет создана для нового урока, чтобы осуществить корректное перенаправление на страницу журнала&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $time - (int) время создания нового события: метка времени в формате unixtime&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - метка времени для перенаправления&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_rawdata ====&lt;br /&gt;
Класс для подготовки сырых исходных данных для формирования школьного журнала и ему подобных документов&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
Конструктор - определяет с каким учебным потоком будет вестись работа&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_process_gradesform ====&lt;br /&gt;
Класс для проверки и обработки оценок из формы&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
Конструктор класса. Осуществляет все проверки и записывает данные во внутреннее поле.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $gradedata (array) - массив $_POST из формы&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== process_form() =====&lt;br /&gt;
Обработать все данные, пришедшие из формы: установить посещаемость, выставить оценки и сформировать приказы&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* false в случае неудачи. В случае успеха производит редирект на страницу журнала&lt;br /&gt;
==== Класс dof_im_journal_presence ====&lt;br /&gt;
Класс для обработки информации о посещаемости &lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $csid - id учебного потока&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
===== presence_students() =====&lt;br /&gt;
Формирует массив присутствия учеников&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* массив вида [id_ученика]=&amp;gt;статус_присутствия&lt;br /&gt;
===== absence_students() =====&lt;br /&gt;
Формирует массив отсутствующих студентов&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $away - массив id отсутствующих учеников&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* массив вида [id_ученика]=&amp;gt;статус_присутствия&lt;br /&gt;
==== Дополнительные функции ====&lt;br /&gt;
===== dof_im_journal_format_date() =====&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date (int) - метка времення для преобразования.&lt;br /&gt;
* $format (string) - формат выводимой даты. По умолчанию 'dmy'.&lt;br /&gt;
* $url (string) - Указывается, если необходимо получить дату как ссылку. По умолчанию NULL&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) строка с отформатированной датой&lt;br /&gt;
===== dof_im_journal_date_edit() =====&lt;br /&gt;
Возвращает отформатироанную дату и значок редактирования как ссылку&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date (int) - метка времени&lt;br /&gt;
* $format (string) - формат выводимой даты. По умолчанию 'dmy'&lt;br /&gt;
* $durl (string) - путь ссылки для даты, если не указана - дата выводится как просто строка. По умолчанию null.&lt;br /&gt;
* $eurl (string) - путь ссылки для значка, если не указана значок не показывается По умолчанию null.&lt;br /&gt;
* $imgsubdate (bool) - вывести значок под датой или рядом по умолчанию true (выводит значок под датой)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - строка с отформатированной датой&lt;br /&gt;
=== Список журналов ===&lt;br /&gt;
==== Класс dof_im_journal_listjournals ====&lt;br /&gt;
Этот класс содержит функции для работы со страницей списка журналов&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
===== set_data() =====&lt;br /&gt;
Заполняет начальной информацией внутренние поля объекта&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid (int) - id подразделения (таблица [[Разработка:storages/departments|departments]]). По умолчанию 0.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если все нормально или false в случае ошибки&lt;br /&gt;
===== get_data() =====&lt;br /&gt;
Возвращает собранные данные&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив структурных подразделений&lt;br /&gt;
===== get_journals() =====&lt;br /&gt;
Получить все журнлы занесенных подразделений&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true если все нормально или false в случае ошибки&lt;br /&gt;
&lt;br /&gt;
=== Журнал занятий ===&lt;br /&gt;
==== Класс dof_im_journal_show_events ====&lt;br /&gt;
Этот класс содержит функции для работы с журналом занятий&lt;br /&gt;
===== __construct() =====&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $depid - идентификатор подразделения&lt;br /&gt;
''Возвращаемые значения:'' нет&lt;br /&gt;
&lt;br /&gt;
===== set_data =====&lt;br /&gt;
Заполняет параметры класса начальной информацией&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $date - массив, состоящий из даты начала и даты окончания:&lt;br /&gt;
** [date_from] - дата начала&lt;br /&gt;
** [date_to] - дата окончания&lt;br /&gt;
* $teacherid - идентификатор преподавателя&lt;br /&gt;
* $studentid - идентификатор студента&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true если операция прошла успешно&lt;br /&gt;
&lt;br /&gt;
===== get_string_event =====&lt;br /&gt;
Получение строки для вывода одного занятия. &lt;br /&gt;
При проверке статуса события, выполняется проверка статуса на момент проведения самого события&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event - объект события&lt;br /&gt;
* $show_all - вывод подробной таблицы&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив для строчки события&lt;br /&gt;
&lt;br /&gt;
===== get_table_events =====&lt;br /&gt;
Возвращает события одного дня&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $display - ражим отображения(по времени, по учителям, по ученикам)&lt;br /&gt;
** [time] - по времени&lt;br /&gt;
** [students] - по ученикам&lt;br /&gt;
** [teachers] - по учителям&lt;br /&gt;
* $show_all - вывод подробной таблицы&lt;br /&gt;
* $implied - вывод мнимых событий&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_table_unmarked_events =====&lt;br /&gt;
Возвращает события одного дня&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $display - ражим отображения(по времени, по учителям, по ученикам)&lt;br /&gt;
** [time] - по времени&lt;br /&gt;
** [students] - по ученикам&lt;br /&gt;
** [teachers] - по учителям&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_string_appointment =====&lt;br /&gt;
Получение строки для вывода одного предмето-класса&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $cstream - объект учебного процесса (предмето-класса)&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив для строчки события&lt;br /&gt;
&lt;br /&gt;
===== get_table_teaching_load =====&lt;br /&gt;
Возвращает учебную нагрузку учителя&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
''Возвращаемые значения:'' array - набор журналов или bool - false&lt;br /&gt;
&lt;br /&gt;
===== get_data_for_export =====&lt;br /&gt;
Сбор данных для экспорта в csv&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
''Возвращаемые значения:'' &lt;br /&gt;
* array - данные для экспорта&lt;br /&gt;
&lt;br /&gt;
===== get_string_for_export =====&lt;br /&gt;
Создание массива данных об учениках&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event - объект урока&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* array - массив с данными&lt;br /&gt;
&lt;br /&gt;
== Подробное описание работы функций ==&lt;br /&gt;
В этом разделе описывается подробная работа всех публичных и внутренних методов для классов журнала. Если вам требуется только краткая справка по API, то обратитесь к разделу [[Разработка:im/journal#API|API]].&lt;br /&gt;
=== Для журнала группы ===&lt;br /&gt;
==== Класс dof_im_journal_tablegrades ====&lt;br /&gt;
&lt;br /&gt;
===== Описание print_texttable() =====&lt;br /&gt;
[[#print_texttable()|Описание API]].&lt;br /&gt;
&lt;br /&gt;
Итоговая функция, выводящая всю собранную информацию на экран. &lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# собирает всю информацию при помощи функции [[Разработка:im/journal#Описание get_all_form()|get_all_form()]]&lt;br /&gt;
# обращается к плагину templater для представления информации в html-формате&lt;br /&gt;
# функцией print выводит результат работы templater'а на экран.&lt;br /&gt;
===== Описание check_permissions() =====&lt;br /&gt;
[[#check_permissions()|Описание API]].&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем учебный поток. Если поток не найден - возвращаем false.&lt;br /&gt;
# проверяем статус учебного потока. Если он не равен значению &amp;quot;go&amp;quot;, то возвращаем false.&lt;br /&gt;
# проверяем, имеет ли текущий пользователь права редактирования. Если нет, то возвращаем false.&lt;br /&gt;
# если все проверки пройдены успешно, то возвращаем true.&lt;br /&gt;
===== Описание get_all_form() =====&lt;br /&gt;
Возвращает объект формы для вставки в templater. Таблица в шаблоне формируется по столбцам, т. е. сначала выводится контрольная точка в тем. планировании, а затем оценки всех учеников за это событие (как при заполнении обычного школьного журнала).&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $editid (int) - id редактируемого учебного плана в таблице [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $eventid (int) - id редактируемого учебного события в таблице [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) объект нужной структуры для построения шаблона&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# собираем в объект все стандартные надписи для таблицы&lt;br /&gt;
# собираем все запланированные активные контрольные точки учебного потока&lt;br /&gt;
# создадим массивы для названий месяцев и дат&lt;br /&gt;
# собираем в массив информацию по ученикам. Если параметр $editid не равен нулю, то в столбце оценок для редактируемой даты вместо оценки выводим форму.&lt;br /&gt;
# собираем в результурующий массив названия месяцев и дат &lt;br /&gt;
# если нужно распечатать форму - устанавливаем стандартные html-теги начала и конца формы&lt;br /&gt;
# возвращаем результат&lt;br /&gt;
&lt;br /&gt;
===== Описание get_cell_form() =====&lt;br /&gt;
Возвращает редактируемую ячейку таблицы журнала.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons.&lt;br /&gt;
* $cpassedid (int) - id учебной программы&lt;br /&gt;
* $oldgrade (int) - старая оценка (если есть). По умолчанию null.&lt;br /&gt;
* $gradeid (int) - id оценки в таблице cpgrades . По умолчанию 0&lt;br /&gt;
* $eventid (int) - id учебного события в таблице [[Разработка:storages/schevents|schevents]].&lt;br /&gt;
* $scale (string) - шкала всех возможных оценок через запятую. По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) - строка с html-кодом формы редактирования оценки.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
Вся форма редактирования оценки представляет собой маленькую таблицу. С левой стороны находится форма выбора оценки, а справа галочка для отметки отсутствующего ученика (верхняя ячейка) и пояснение к ней (нижняя ячейка).&lt;br /&gt;
# получаем все допустимые варианты оценок для данного задания из параметра scale.&lt;br /&gt;
# из этих вариантов оценки составляем html-элемент формы типа SELECT.&lt;br /&gt;
# если за задание уже есть ранее выставленная, старая оценка, то делаем ее оценкой по умолчанию&lt;br /&gt;
# узнаем статус присутствия ученика на занятии, и в зависимсости от этого проставляем галочку над буквой &amp;quot;н&amp;quot;. Форма с возможностью отмечания отсутствующих учеников отображается только для контрольных точек для которых есть события.&lt;br /&gt;
# возвращаем результат одной строкой.&lt;br /&gt;
===== Описание get_cell_string() =====&lt;br /&gt;
Получить текстовое содержимое ячейки оценки.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons&lt;br /&gt;
* $plan (object) - объект содержащий данные об элементе тематического планирования (таблица [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $gradedata (object) - данные об оценке По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) html-код оценки, либо специальный знак пробела, чтобы в таблице было видно пустую ячейку&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
# узнаем данные о посещаемости: получаем id события, если оно есть&lt;br /&gt;
#* если событие есть, узнаем, был ли ученик на занятии&lt;br /&gt;
# находим оценку&lt;br /&gt;
#* если ученик был на занятии и получил оценку - выводим оценку&lt;br /&gt;
#* если ученик был на занятии и не получил оценку - выводим символ пробела&lt;br /&gt;
#* если ученик отсутствовал на занятии и нет оценки, то выводим букву &amp;quot;н&amp;quot;&lt;br /&gt;
#* если ученик отсутствовал на занятии и получил оценку - выводим оценку, и букву &amp;quot;н&amp;quot; рядом с ней&lt;br /&gt;
&lt;br /&gt;
===== Описание get_one_cell() =====&lt;br /&gt;
Возвращает данные в одной клетке журнала. Определяет какой тип ячейки выводить: для редактирования или текстовую.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $studentid (int) - id ученика в таблице persons&lt;br /&gt;
* $plan (object) - объект содержащий контрольную точку с событием  из тем. планирования (таблица [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $gradedata (object) - объект содержащий данные об оценке (таблица cpgrades)&lt;br /&gt;
* $cpassedid (int) - id подписки (таблица cpassed)&lt;br /&gt;
* $editid (int) - id редактируемого в текущий момент элемента из тем. планирования&lt;br /&gt;
* $eventid (int) - id редактируемого в текущий момент события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
* $scale (string) = По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) строка с html-кодом формы редактирования оценки, либо сама оценка, либо статус &amp;quot;отсутствовал&amp;quot;&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# сравниваем, совпадают ли id выводимой и редактируемой в данной момент контрольной точки&lt;br /&gt;
#* если id совпадают - то выводим форму редактирования оценки&lt;br /&gt;
#** если за это задание оценка уже была ранее выставлена, то выводим форму с установленной ранее оценкой&lt;br /&gt;
#** если за задание еще нет оценки - то выводим форму без предустановленных значений&lt;br /&gt;
#* если id не совпадают то выводим оценку текстом (либо статус &amp;quot;отсутствовал&amp;quot;, либо пустую клетку, в зависимости от того был ли ученик на уроке, и получил ли он оценку)&lt;br /&gt;
===== Описание get_line_for_student() =====&lt;br /&gt;
Возвращает строку таблицы журнала для одного ученика.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $i (int) - порядковый номер ученика в группе&lt;br /&gt;
* $student (object) - объект с данными об ученике из таблицы persons&lt;br /&gt;
* $cpasseds (array) - массив объектов, содержащий все подписки учеников этого потока&lt;br /&gt;
* $plans (array) -  массив объектов, содержащий все контрольные точки текущего курса (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $editid (int) - id редактируемой в данный момент контрольной точки&lt;br /&gt;
* $eventid (int) - id редактируемого в данный момент события (или 0, если события нет) Таблица [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - информация об ученике: его ФИО, и оценки по всем контрольным точкам, а также сведения о посещаемости&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект для итоговых данных&lt;br /&gt;
# записываем в соответствующие поля итогового объекта порядковый номер ученика, и его ФИО&lt;br /&gt;
# перебираем все переданные подписки ищем ту, которая относится к переданному ученику&lt;br /&gt;
# записываем в итоговый объект id его подписки&lt;br /&gt;
# создаем массив для оценок и собираем оценки ученика:&lt;br /&gt;
#* перебираем все контрольные переданные точки ($plans)&lt;br /&gt;
#* для каждой контрольной точки создаем объект оценки&lt;br /&gt;
#* получаем значение оценки за просматриваемую контрольную точку&lt;br /&gt;
#* при помощи функции [[Разработка:im/journal#Описание get_one_cell()|get_one_cell()]] получаем оформленный html-код оценки&lt;br /&gt;
#* записываем полученный объект в массив оценок&lt;br /&gt;
# добавляем массив оценок в итоговый объект&lt;br /&gt;
# возвращаем итоговый объект&lt;br /&gt;
===== Описание get_lines_for_students() =====&lt;br /&gt;
Возвращает массив строк с ФИО и оценками для всех учеников&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans (array) - массив всех контрольных точек учебного потока из таблицы plans&lt;br /&gt;
* $editid (int) - id редактируемой в данный момент контрольной точки (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
* $eventid (int) - id редактируемого в данный момент события (таблица [[Разработка:storages/schevents|schevents]])&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) информация о всех учениках учебного потока или false, если ни одного ученика нет&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все подписки учебного потока, чтобы потом установить связи с оценками&lt;br /&gt;
# получаем учеников учебного потока&lt;br /&gt;
# присваиваем каждому ученику порядковый номер,&lt;br /&gt;
# получаем информацию по каждому ученику функцией [[#Описание get_line_for_student()|get_line_for_student()]] и заносим объект с информацией о нем в массив&lt;br /&gt;
# возвращаем получившийся массив &lt;br /&gt;
===== Описание create_datesstring() =====&lt;br /&gt;
Создает верхнюю строку журнала с названиями месяцев и списком дат в пригодном для обработки плагином templater виде.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans - список всех контрольных точек учебного потока из таблицы [[Разработка:storages/plans|plans]].&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект, содержащий массив с данными для шаблонизатора&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
&lt;br /&gt;
Даты в электронном журнале должны будут проставляться как и в обычном классном журнале: верхняя строка - месяцы обучения, нижняя строка - даты проведенных или запланированных уроков, а также четвертные или годовые оценки.&lt;br /&gt;
Для того чтобы организовать такой внешний вид для электронного журнала мы должны воспользоваться параметром colspan для html-таблицы журнала, и расположить тем самым месяцы точно над датами проведенных уроков. Для этой задачи в этой функции мы создаем объект следующей структуры:&lt;br /&gt;
* ''(возвращаемый объект)''&lt;br /&gt;
** ''monthtitle'' - массив объектов, каждый из которых имеет свойства ''mtitle'' - название месяца, и ''mcolspan'' - количество ячеек с датами проведенных уроков в этом месяце&lt;br /&gt;
** ''monthdate'' - строка с датой проведенного урока, либо название контрольной точки.&lt;br /&gt;
&lt;br /&gt;
# получаем строку форматированных дат уроков при помощи функции [[#Описание generate_all_dates()|generate_all_dates()]]&lt;br /&gt;
# перебираем все события и собираем массивы дат и названий месяцев&lt;br /&gt;
#* если просматриваемая дата не находится в том же месяце, что и предыдущая, то дополняем массив месяцев&lt;br /&gt;
# прибавляем счетчик дат в месяце&lt;br /&gt;
# записываем новую дату в итоговый массив&lt;br /&gt;
# возвращаем итоговый массив&lt;br /&gt;
===== Описание generate_all_dates() =====&lt;br /&gt;
Вызывается из [[#Описание create_datesstring()|create_datesstring()]]. Получить отформатированные даты для журнала&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plans - массив всех контрольных точек учебного потока (из таблицы [[Разработка:storages/plans|plans]])&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - отформатированные даты для вывода в журнал&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получим событие из таблицы schevents, которое относится к данной теме тематического планирования&lt;br /&gt;
# если событие есть - то покажем дату&lt;br /&gt;
# если события нет - только название контрольной точки&lt;br /&gt;
&lt;br /&gt;
===== Описание generate_single_date() =====&lt;br /&gt;
Вызывается из [[#Описание generate_all_dates|generate_all_dates]] Создает один объект даты для журнала.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $plan (object) - объект из таблицы [[Разработка:storages/plans|plans]]&lt;br /&gt;
* $date (string) - метка времени для события или контрольной точки&lt;br /&gt;
* $event (object) - Объект из таблицы [[Разработка:storages/schevents|schevents]]. По умолчанию null.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) дата в нужном для templater'a формате&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# устанавливаем путь (html-якорь) к теме в планирования на странице&lt;br /&gt;
# Определяем, id события которое будет редактировано. Если события нет, то передаем 0.&lt;br /&gt;
# записываем якорь с ссылкой в объект&lt;br /&gt;
# возвращаем объект&lt;br /&gt;
&lt;br /&gt;
==== Класс dof_im_journal_templans_table ====&lt;br /&gt;
===== Описание get_topics() =====&lt;br /&gt;
Возвращает массив объектов c необходимыми свойствами для вставки в таблицу schevents&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив тем входящих в планирование&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все контрольные точки учебного потока&lt;br /&gt;
# формируем объект с нужными полями для каждой контрольной точки&lt;br /&gt;
# возвращаем получившийся массив объектов&lt;br /&gt;
===== Описание get_empty_topic() =====&lt;br /&gt;
Возвращает &amp;quot;пустой&amp;quot; объект отчета об уроке &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект для вставки в таблицу [[Разработка:storages/schevents|schevents]]&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* создаем объект с необходимым списком пустых полей и возвращаем его&lt;br /&gt;
===== Описание table_data() =====&lt;br /&gt;
Возвращает массив строк данных отформатированных для вывода с помощью moodle-функции print_table()&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив с данными для распечатки таблицы, либо false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли для переданного потока элементы тематического планирования.&lt;br /&gt;
#* если их нет - то возвращаем false&lt;br /&gt;
# формируем массив строк таблицы&lt;br /&gt;
# проставляем html-якоря для каждой контрольной точки на странице оценок&lt;br /&gt;
# добавляем ссылки на редактирования элементов учебного плана&lt;br /&gt;
# возвращаем получившийся массив&lt;br /&gt;
==== Класс dof_im_journal_edittopic ====&lt;br /&gt;
===== Описание get_topic() =====&lt;br /&gt;
[[#get_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* Проверяем, указан ли id контрольной точки. &lt;br /&gt;
** Если не указан - возврящаем пустую тему.&lt;br /&gt;
** Если указан - пробуем извлечь контрольную точку по такому id&lt;br /&gt;
*** Если контрольную точку извлечь не удалось - то возвращаем false&lt;br /&gt;
*** Если удалось - то возвращаем заполненный отчет об уроке&lt;br /&gt;
===== Описание save_topic() =====&lt;br /&gt;
[[#save_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем есть ли у нас данные в переменной $event для обновления или создания события. Если нет - то возвращаем false.&lt;br /&gt;
# определяем тип действия, которое надо совершить&lt;br /&gt;
#* если указан planid для события - то создаем новое событие для существующей контрольной точки&lt;br /&gt;
#* если нет id для контрольной точки - создаем новое событие и новую контрольную точку&lt;br /&gt;
#* в остальных случаях - обновляем контрольную точку и событие: вычисляем новую относительную дату, и обновляем записи в таблицах [[Разработка:storages/schevents|schevents]] и [[Разработка:storages/plans|plans]]&lt;br /&gt;
===== Описание create_topic() =====&lt;br /&gt;
[[#create_topic()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем новый элемент тематического планирования в таблице plans (если это не удалось - то возвращаем false)&lt;br /&gt;
# добавляем в переданное событие id контрольной точки&lt;br /&gt;
# создаем событие из переданного объекта $event (если событие не создано - удаляем ранее созданный элемент тематического планирования)&lt;br /&gt;
# возвращаем id события&lt;br /&gt;
===== Описание create_checkpoint() =====&lt;br /&gt;
Создает и сохраняет запись в таблице plans&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $point (object) - данные для сохранения в таблицу [[Разработка:storages/plans|plans]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи или false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли у нас все необходимые для создания записи&lt;br /&gt;
# получаем id учебного потока&lt;br /&gt;
# получаем дату начала обучения&lt;br /&gt;
# создаем заготовку для объекта контрольной точки&lt;br /&gt;
# вычисляем относительную дату контрольной точки&lt;br /&gt;
# заносим данные в базу&lt;br /&gt;
===== Описание create_event() =====&lt;br /&gt;
Создает объект события и сохраняет его в schevents&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $event (object) - данные для сохранения&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id новой записи в таблице событий или false.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# проверяем, есть ли у нас все необходимые для создания записи&lt;br /&gt;
# получаем id учебного потока&lt;br /&gt;
# получаем id преподавателя в таблице persons&lt;br /&gt;
# создаем объект нужного формата и заносим туда все данные&lt;br /&gt;
# записываем данные в базу&lt;br /&gt;
==== Класс dof_im_journal_rawdata ====&lt;br /&gt;
''Поля:''&lt;br /&gt;
* dof - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* csid - id учебного потока в таблице сstreams&lt;br /&gt;
===== Описание get_checkpoints() =====&lt;br /&gt;
Получить все контрольные точки одного учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - массив объектов из таблицы plans или false &lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем id учебного потока из таблицы cstreams&lt;br /&gt;
# выбираем из таблицы plans все записи, у которых поле cstreamid равно id учебного потока, и тип связи &amp;quot;cstreams&amp;quot;&lt;br /&gt;
# сортируем их в хронологическом порядке&lt;br /&gt;
# возвращаем получившийся массив&lt;br /&gt;
&lt;br /&gt;
===== Описание get_students() =====&lt;br /&gt;
Получить всех учеников указанного учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) массив записей из таблицы persons или false&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем список пройденных дисциплин&lt;br /&gt;
# перебираем все подписки и запоминаем id ученика для каждой из них&lt;br /&gt;
# извлекаем из таблицы persons учеников, чьи id были извлечены из подписок&lt;br /&gt;
&lt;br /&gt;
===== Описание get_teacherid() =====&lt;br /&gt;
Получить id преподавателя учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (int) - id преподавателя или false в случае неудачи&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* id преподавателя всегда берется только из записи учебного потока из таблицы cstreams&lt;br /&gt;
==== Класс dof_im_journal_process_gradesform ====&lt;br /&gt;
''Поля:''&lt;br /&gt;
* gradedata - (object) все оценки и сопутствующая им информация&lt;br /&gt;
* mypost - (array) непроверенные данные пришедшие из массива $_POST. Используются только для составления повторного запроса на сохранение данных.&lt;br /&gt;
===== Описание __construct =====&lt;br /&gt;
[[#Класс dof_im_journal_rawdata|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект, в который мы будем складывать все проверенные данные, пришедшие из формы&lt;br /&gt;
# проверяем скалярные данные: все числовые идентификаторы, и отдельные строки, и после проверки записываем их в итоговый объект&lt;br /&gt;
# теперь, зная cstreamid из проверенных скалярных данных вызываем родительский конструктор&lt;br /&gt;
# проверяем массивы, пришедшие из формы: &lt;br /&gt;
#* данные об отсутствующих учениках&lt;br /&gt;
#* массив оценок &lt;br /&gt;
#* массив идентификаторов подписок (таблица cpassed)&lt;br /&gt;
#* узнаем id оценок для изменения их статуса&lt;br /&gt;
# записываем все проверенные данные в итоговый массив&lt;br /&gt;
# определяем тип действия, которое надо совершить: &lt;br /&gt;
#* сохранить данные&lt;br /&gt;
#* сохранить данные и продолжить редактирование&lt;br /&gt;
#* восстановить исходные значения&lt;br /&gt;
# записываем исходный массив (непроверенный) в поле объекта, если потом понадобится еще раз отправить данные после подтверждения&lt;br /&gt;
===== Описание process_form() =====&lt;br /&gt;
[[#process_form()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# в самом начале проверяем тип действия, которое надо совершить. Если этим действием является &amp;quot;отменить изменения&amp;quot;, то не переходим к сохранению оценок и сразуже выполняем перенаправление на страницу журнала. В остальных случаях идем дальше:&lt;br /&gt;
# проверяем, установлено ли у кого-нибудь из учеников одновременно &amp;quot;н&amp;quot; и оценка. Если это так - то перенаправим пользователя на страницу с сообщением об этом, и попросим его подтвердить такой выбор.&lt;br /&gt;
#* если пользователь согласен с изменениями, которые он сделал, то все выставленые им оценки и сведения о посещаемости сохраняются&lt;br /&gt;
#* если же нет - то происходит отмена всех изменений&lt;br /&gt;
# в случае, когда никаких предупреждений нет - сначала формируем приказ для оценок&lt;br /&gt;
# затем приказ о посещаемости&lt;br /&gt;
# если все действия произведены успешно - производим редирект. Если же возникли ошибки - сообщаем об этом&lt;br /&gt;
&lt;br /&gt;
===== Описание generate_order_grades() =====&lt;br /&gt;
Сформировать приказ об изменении состояния учебного потока&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' нет&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* true если приказ успешно сформирован, и false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем id подразделения в таблице departments&lt;br /&gt;
# определяем тип действия, которое нужно совершить с оценкой&lt;br /&gt;
# обращаемся к функциям выставления, либо удаления оценки&lt;br /&gt;
===== Описание order_set_grade() =====&lt;br /&gt;
Формирует приказ - установить оценку. &lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid (int) - id подразделения в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (bool) true в случае успеха и false в случае неудачи&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# подключаем методы работы с приказом&lt;br /&gt;
# создаем объект для записи&lt;br /&gt;
# сохраняем автора приказа, подразделение, к которому он относится, дату создания приказа&lt;br /&gt;
# добавляем данные, которые определяют назначение приказа&lt;br /&gt;
# сохраняем приказ в БД, в таблицу orders&lt;br /&gt;
# подписываем приказ&lt;br /&gt;
# исполняем приказ&lt;br /&gt;
Методы order_delete_grade и order_update_grade работают по такому же принципу.&lt;br /&gt;
===== Описание get_grades_fororder() =====&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $type - тип действия, которое необходимо будет произвести над оценкой. Возможные значения: ''set_grade'' и ''delete_grade''.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (object) - объект, содержащий список оценок и все идентификаторы для формирования приказа.&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# создаем объект для итоговых данных&lt;br /&gt;
# записываем в него дату, id учителя (в таблице persons) и id контрольной точки (в таблице plans&lt;br /&gt;
# перебираем все оценки из внутреннего массива с проверенными данными&lt;br /&gt;
# определяем тип действия, которое над ней нужно совершить&lt;br /&gt;
# в зависимости от типа действия (установление или удаление оценки) записываем в объект оценки нужные идентификаторы&lt;br /&gt;
# упаковываем оценки в итоговый массив и возвращаем его&lt;br /&gt;
=== Для списка журналов ===&lt;br /&gt;
==== Класс dof_im_journal_listjournals ====&lt;br /&gt;
Этот класс служит для сбора и вывода информации по всем структурным подразделениям. Информация выводится древовидно: самый верхний уровень - подразделение, затем учебные программы, затем учебные периоды, элементы учебной программы, и в самом конце - журналы учебного потока.&lt;br /&gt;
''Поля:''&lt;br /&gt;
* dof - - объект класса [[Разработка:lib/dof.php|dof_control]]&lt;br /&gt;
* $departments массив структуры&lt;br /&gt;
    array(&lt;br /&gt;
    [departmentid] =&amp;gt; obj  -&amp;gt; departmentname = 'department_name'&lt;br /&gt;
                      obj  -&amp;gt; programms = array(&lt;br /&gt;
      [programmid]   =&amp;gt; obj1 -&amp;gt; programmname = 'programm_name'&lt;br /&gt;
                        obj1 -&amp;gt; ages = array(&lt;br /&gt;
        [agenum]       =&amp;gt; obj2 -&amp;gt; agename = 'age_name'&lt;br /&gt;
                          obj2 -&amp;gt; items = array(&lt;br /&gt;
          [itemid]       =&amp;gt; obj3 -&amp;gt; itemname = 'item_name'&lt;br /&gt;
                            obj3 -&amp;gt; cstreams = array(&lt;br /&gt;
            [cstreamid]    =&amp;gt; obj4 -&amp;gt; cstreamname = 'cstream_name'&lt;br /&gt;
                                    )''// конец массива cstreams''&lt;br /&gt;
                                  )''// конец массива items''&lt;br /&gt;
                                )''// конец массива ages''&lt;br /&gt;
                              )''// конец массива programms''&lt;br /&gt;
         )''// конец общего массива''&lt;br /&gt;
    содержит данные для вставку в темплатер после добавления еще одного уровня:&lt;br /&gt;
    $fortemplater-&amp;gt;departments = $this-&amp;gt;departments;&lt;br /&gt;
В общем виде сбор данных выглядит так: &lt;br /&gt;
# сначала собирается информация по структурному подразделению (одному или нескольким), и информация по ним записывается в итоговый объект&lt;br /&gt;
# затем получаются все программы учебного подразделения, информация по ним записывается в итоговый массив&lt;br /&gt;
# извлекается и записывается в итоговый объект список учебных периодов &lt;br /&gt;
# для каждого учебного периода получаются элементы учебной программы, которые изучаются в нем&lt;br /&gt;
# для каждого элемента учебной программы получаются учебные потоки&lt;br /&gt;
# для каждого учебного потока получается его журнал&lt;br /&gt;
===== Описание set_data() =====&lt;br /&gt;
[[#set_data()|Описание API]]&lt;br /&gt;
&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* получаем id структурного подразделения из таблицы departments.&lt;br /&gt;
** если оно есть - то получаем информацию только по нему&lt;br /&gt;
** если получили 0 вместо id подразделения - то выводим информацию по всем подразделениям&lt;br /&gt;
&lt;br /&gt;
===== Описание get_journals_department() =====&lt;br /&gt;
Возвращает журналы одного подразделения&lt;br /&gt;
&lt;br /&gt;
''Аргументы:'' &lt;br /&gt;
* $departmentid - id подразделения в таблице [[Разработка:storages/departments|departments]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) - набор журналов &lt;br /&gt;
* (bool) - false в случае ошибки&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
# получаем все программы, за которые отвечает подразделение&lt;br /&gt;
# для каждой программы получаем все ее журналы&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_02011.png&amp;diff=3153</id>
		<title>Файл:Selection 02011.png</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Selection_02011.png&amp;diff=3153"/>
				<updated>2017-12-29T12:59:02Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	<entry>
		<id>http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/recordbook&amp;diff=3139</id>
		<title>Разработка:im/recordbook</title>
		<link rel="alternate" type="text/html" href="http://docs.deansoffice.ru/wiki/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0:im/recordbook&amp;diff=3139"/>
				<updated>2017-12-12T14:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;Agadzhanyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = recordbook&lt;br /&gt;
| type = im&lt;br /&gt;
}}&lt;br /&gt;
== Зачетная книжка ==&lt;br /&gt;
&lt;br /&gt;
Плагин предназначен для учеников и законных представителей и предназначен для отображения информации об обучении студента, скомпонованной в удобном для просмотра виде.&lt;br /&gt;
&lt;br /&gt;
=== Главный экран ===&lt;br /&gt;
Отображается список договор на обучение, которые пользователь может просматривать (информация о себе, информация об учениках, для которых пользователь выступает законным представителем). Под каждым контрактом выводится ссылка с названием учебной программы, ссылка на расписание уроков, и ссылка на зачетную книжку, где отображается информация о дисциплинах по текущей учебной программе. Информацию о том, ко какому ученику отображать информацию плагин берет из текущей переменной $USER, при помощи плагина [[Разработка:storages/persons|storage/persons]]. Название учебной программы выведен на экран информации об учебной программы. Ссылка &amp;quot;расписание уроков&amp;quot; ведет на страницу расписания текущей недели. Ссылка на зачетную книжку ведет на страницу со списком дисциплин по текущей учебной программе.&lt;br /&gt;
[[Изображение:Главный_экран_recordbook.png‎|thumb|500px|center|Шаблон экрана &amp;quot;Главный экран&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Экран &amp;quot;Расписание уроков&amp;quot; ===&lt;br /&gt;
В данном разделе отображается календарь где можно выбрать неделю, относительно которой нужно показать в таблице ниже уроки по учебным процессам в текущей учебной программе. Далее идет таблица с событиями по учебным процессам относящимся к этой учебной программе в рамках текущей календарной недели (по умолчанию отображаются уроки по текущей недели). Таблица оформлена в виде школьного дневника, расположенного в одну колонку: состоит из семи разделов, по одному на каждый день недели, где каждая строчка соответствует учебным событиям, расположенным в порядке их наступления. Строчка события содержит:&lt;br /&gt;
* Время &lt;br /&gt;
* Название урока&lt;br /&gt;
* Кабинет &lt;br /&gt;
* Тема&lt;br /&gt;
* Задание на следующий урок&lt;br /&gt;
* Время на д/з&lt;br /&gt;
* Форма занятия &lt;br /&gt;
* Оценка&lt;br /&gt;
[[Изображение:Selection 140.png|thumb|800px|center|Страница дневника учащегося]]&lt;br /&gt;
&lt;br /&gt;
=== Экран &amp;quot;Зачетная книжка&amp;quot; ===&lt;br /&gt;
На этом экране отображается сводная информация об ученике по всем дисциплинам в рамках текущей учебной программы. Содержит в следующий вкладки:&lt;br /&gt;
* Информация о персоне&lt;br /&gt;
* Список дисциплин&lt;br /&gt;
* Запланированные дисциплины&lt;br /&gt;
* Перезачтенные дисциплины&lt;br /&gt;
* Академическая разница&lt;br /&gt;
 [[Изображение:Сводная_информация_recordbook.png|thumb|500px|center|Шаблон экрана &amp;quot;Зачетная книжка&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Личный рейтинг студента по программе ===&lt;br /&gt;
Рейтинг собирается на основе кешированного рейтинга по учебным процессам.&lt;br /&gt;
Рейтинг схож с рейтингом по академической группе (можно почитать в im/agroups).&lt;br /&gt;
Если студент на текущей параллели изучал учебный процесс два раза, то в рейтинге учтется с тем, у которой средний балл выше.&lt;br /&gt;
&lt;br /&gt;
Пример рейтинга:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Selection 016 im recordbook.png|thumb|500px|center|Личный рейтинг студента по программе]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Вкладка &amp;quot;Информация о персоне&amp;quot; ====&lt;br /&gt;
Содержит в себе следующую информацию:&lt;br /&gt;
* Название - ''название учебной программы''&lt;br /&gt;
* Ответственное подразделение - ''подразделение, к которому относится учебная программа''&lt;br /&gt;
* Учащийся - ''ФИО учащегося''&lt;br /&gt;
[[Изображение:Selection_004.png|thumb |600px |center|Вкладка &amp;quot;Информация о персоне&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
==== Вкладка &amp;quot;Список дисциплин&amp;quot; ====&lt;br /&gt;
Эта вкладка содержит себе информацию по дисциплинам по всем параллелям в текущей учебной программе. Дисциплины делятся на две таблицы активные/завершенные.&lt;br /&gt;
Сожержит следующую информацию:&lt;br /&gt;
* Название параллели&lt;br /&gt;
* Две таблицы (Активные/Завершенные), которые содержат в себе название дисциплины, тип итогового контроля, итоговая оценка, часов по плану.&lt;br /&gt;
[[Изображение:Selection_005.png|thumb |600px |center|Вкладка &amp;quot;Список дисциплин&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Вкладка &amp;quot;Запланированные дисциплины&amp;quot; ====&lt;br /&gt;
Эта вкладка содержит себе информацию по запланированных дисциплинах.&lt;br /&gt;
Отображается в виде таблицы и содержит следующую информацию:&lt;br /&gt;
* Дисциплина&lt;br /&gt;
* Тип итогового контроля&lt;br /&gt;
* Часов по плану&lt;br /&gt;
[[Изображение:Selection_007.png|thumb |600px |center|Вкладка &amp;quot;Список дисциплин&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Вкладка &amp;quot;Перезачтённые дисциплины&amp;quot; ====&lt;br /&gt;
Эта вкладка содержит себе информацию по перезачтенными дисциплина в текущей учебной программе.&lt;br /&gt;
Отображается в виде таблицы со следующей информацией:&lt;br /&gt;
* Название дисциплины&lt;br /&gt;
* Итоговая оценка&lt;br /&gt;
* Часов по плану&lt;br /&gt;
[[Изображение:Selection_006.png|thumb |600px |center|Вкладка &amp;quot;Перезачтённые дисциплины&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
==== Вкладка &amp;quot;Академическая разница&amp;quot; (В планах) ====&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Здесь описаны функции для работы со списком учебных программ.&lt;br /&gt;
===== get_section() =====&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $name - название секции&lt;br /&gt;
* $id - ID текста в наборе&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (array) html-код содержимого секции секции&lt;br /&gt;
&lt;br /&gt;
===== private get_learning_data() =====&lt;br /&gt;
Возвращает html форму для отображение договоров и подписок клиента&lt;br /&gt;
Вызывается через метод get_section() с параметром $name = 'list_learning_data'&lt;br /&gt;
&lt;br /&gt;
''Параметры:''&lt;br /&gt;
* $options - id = id студента, template = название шаблона для отображения&lt;br /&gt;
&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* (string) html код формы&lt;/div&gt;</summary>
		<author><name>Agadzhanyan</name></author>	</entry>

	</feed>