<?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=Jek312</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=Jek312"/>
		<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/Jek312"/>
		<updated>2026-04-03T20:19:24Z</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:%D0%AF%D0%B4%D1%80%D0%BE&amp;diff=2604</id>
		<title>Разработка:Ядро</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:%D0%AF%D0%B4%D1%80%D0%BE&amp;diff=2604"/>
				<updated>2012-11-12T14:01:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jek312: /* Версии плагинов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ядро Free Dean's Office ==&lt;br /&gt;
Эта страница содержит документацию по ядру FDO&lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
[[:Категория:Плагины_core|Описание файлов ядра, их назначение и технические детали]]&lt;br /&gt;
&lt;br /&gt;
=== Версии и интерфейсы ===&lt;br /&gt;
Для корректной проверки зависимостей, в FDO обозначаются версии ядра, версии интерфейса ядра, версии интерфейса плагинов, версии плагинов.&lt;br /&gt;
&lt;br /&gt;
==== Версии ядра ====&lt;br /&gt;
[[Релизы| Выпущенные версии]]&lt;br /&gt;
Получить версию текущего ядра можно вызовами $DOF-&amp;gt;version() и $DOF_version_text().&lt;br /&gt;
&lt;br /&gt;
Первый метод возвращает версию в виде простого, положительного целого числа. В качестве числа используется дата релиза (год, месяц, день, доп. код 00). Чем больше число - тем более новая версия ядра. Используется для автоматического сравнения версий и в механизме обновлений. Например: 2011112100&lt;br /&gt;
&lt;br /&gt;
Второй метод возвращает текстовое обозначение версии, для удобства чтения человеком. Программно никак не обрабатывается. Например: 2.3.2&lt;br /&gt;
Чтение версий&lt;br /&gt;
* 2.x.x - первый разряд обозначает версию платформы. Существовал Электронный деканат версии 1.x.x, который имел совершенно другую архитектуру и функционал. Первый разряд версии меняется очень редко, при революционных изменениях в системе.&lt;br /&gt;
* 2.3.x - второй разряд обозначает существенные изменения в архитектуре или добавление значительного функционала. Например: версия 2.0.x была &amp;quot;голой&amp;quot; платформой для разработки модулей, версия 2.1.x позволяла хранить и управлять информацию об участниках учебного процесса, версия 2.2 содержала полноценную информационную модель учебного процесса (с группами, учебными программами, текущими и итоговыми оценками, журналами, зачетными книжками и дневниками и т.д.), версия 2.3 включала новые механизмы управления правами доступа и распределения объектов по подразделениями, в версии 2.4 платформа переведена с Moodle 1.9 на Moodle 2.2&lt;br /&gt;
* 2.3.1 - последний разряд обозначает выпуск релизов с добавленным пользовательским функционалом (обычно - несколько раз в год).&lt;br /&gt;
* Суффиксы версий, используемые в процессе выпуска&lt;br /&gt;
** 2.3.2dev5015 - версия для разработчиков с номером ревизии в SVN 5015, выпущенная в процессе работы над версией 2.3.2. Обычно, такая версия выпускается в конце итерации (раз в неделю), доступна только через SVN.&lt;br /&gt;
** 2.3.1beta1, 2.3.2beta2 - бета-версии для публичного тестирования&lt;br /&gt;
** 2.3.1rc1, 2.3.2rc2 - релиз-кандидаты, которые становятся релизом, если в них не найдено существенных недостатков.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Версии интерфейсов ядра и плагинов ====&lt;br /&gt;
В FDO применяются строковые обозначения версий интерфейсов ядра и плагинов, предназначенные для быстрого определения совместимости плагинов и ядра. Это позволяет автоматически определять потерю совместимости с минимумом ложных срабатываний. Например, если версия ядра изменилась, это еще не повод переписывать плагины, так как совместимость интерфейсов могла сохраниться.&lt;br /&gt;
&lt;br /&gt;
Версия интерфейса ядра получается методом $DOF-&amp;gt;compat() - выражает способность ядра обеспечивать потребности плагинов в API ядра. Например: aquarium_abc&lt;br /&gt;
Изменение версий:&lt;br /&gt;
* aquarium_a &lt;br /&gt;
* aquarium_ab - в интерфейс добавлены новые методы или изменены старые таким образом, что все плагины, которые были расчитаны на aquarium_a могут продолжать пользоваться существующим API (обеспечена односторонняя вертикальная совместимость).&lt;br /&gt;
* aquarium_abc - ядром могут пользоваться плагины, расчитанные на aquarium_abc, aquarium_ab, aquarium_a&lt;br /&gt;
* aquarium_ac  - значительные изменения в API ядра. Для плагинов aquarium_ab и aquarium_abc совместимость потеряна, но плагины aquarium_a по-прежнему могут пользоваться методами ядра, которые в них использовались&lt;br /&gt;
* aquarium_b - полная потеря совместимости со всеми предыдущими плагинами&lt;br /&gt;
&lt;br /&gt;
Ядро тоже пользуется методами плагинов и накладывает на них свои требования (которые могут отличаться от требований плагинов к ядру). Они строятся аналогично, но выражаются в требованиях ядра к плагинам. Как правило, речь идёт о методах, объявляемых в init.php. Получить список требований текущего ядра к интерфейсам плагинов можно получить методом $DOF-&amp;gt;plugin_compat($type).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Версии плагинов ====&lt;br /&gt;
Каждый плагин должен содержать методы, возвращающие информацию о его версии:&lt;br /&gt;
* $plugin-&amp;gt;version() - версия плагина, в виде простого целого числа, аналогично целочисленной версии ядра. Используется в механизме апгрейдов, поэтому важно, чтобы версии всегда только возрастали.&lt;br /&gt;
* $plugin-&amp;gt;compat_dof() возвращает версию интерфейса ядра и сравнивается с $DOF-&amp;gt;compat() для определения совместимости. Плагин считается совместимым, если начало строки $DOF-&amp;gt;compat() полностью повторяет $plugin-&amp;gt;compat_dof(). $DOF-&amp;gt;compat() может быть длиннее $plugin-&amp;gt;compat_dof(), но не наоборот.&lt;br /&gt;
* $plugin-&amp;gt;compat() - возвращает версию API, которую реализует сам плагин и сравнивается с $DOF-&amp;gt;plugin_compat($type). Плагин считается совместимым, если начало строки $DOF-&amp;gt;plugin_compat($type) полностью повторяет $plugin-&amp;gt;compat().  $plugin-&amp;gt;compat() может быть длиннее $DOF-&amp;gt;plugin_compat($type), но не наоборот.&lt;br /&gt;
* $plugin-&amp;gt;need_plugins() - возвращает массив со списком плагинов, необходимых для работы текущего плагина (зависимостей). Для каждого плагина можно указать версию, тогда совместимой будет считаться указанная версия или новее. Здесь, проверяется только наличие нужных версий на диске, чтобы взаимные и кольцевые зависимости (есть такой грех, хоть это и плохо) не блокировали процесс установки.&lt;br /&gt;
* $plugin-&amp;gt;is_setup_possible() - необязательный метод для проверки зависимостей на момент установки. Если он объявлен, установка будет выполнена только если он возвращает true. Используется для исключения кольцевых зависимостей: если наш плагин в процессе установки использует другие плагины и необходимо, чтобы они были установлены раньше него, is_setup_possible() должен возвращать false, пока всё необходимое не будет установлено. При автоматической массовой установки плагинов, система будет пропускать такой плагин и ставить его в конец очереди установки, пока не установятся все необходимые плагины.&lt;/div&gt;</summary>
		<author><name>Jek312</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:%D0%AF%D0%B4%D1%80%D0%BE&amp;diff=2603</id>
		<title>Разработка:Ядро</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:%D0%AF%D0%B4%D1%80%D0%BE&amp;diff=2603"/>
				<updated>2012-11-12T13:58:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jek312: /* Версии плагинов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ядро Free Dean's Office ==&lt;br /&gt;
Эта страница содержит документацию по ядру FDO&lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
[[:Категория:Плагины_core|Описание файлов ядра, их назначение и технические детали]]&lt;br /&gt;
&lt;br /&gt;
=== Версии и интерфейсы ===&lt;br /&gt;
Для корректной проверки зависимостей, в FDO обозначаются версии ядра, версии интерфейса ядра, версии интерфейса плагинов, версии плагинов.&lt;br /&gt;
&lt;br /&gt;
==== Версии ядра ====&lt;br /&gt;
[[Релизы| Выпущенные версии]]&lt;br /&gt;
Получить версию текущего ядра можно вызовами $DOF-&amp;gt;version() и $DOF_version_text().&lt;br /&gt;
&lt;br /&gt;
Первый метод возвращает версию в виде простого, положительного целого числа. В качестве числа используется дата релиза (год, месяц, день, доп. код 00). Чем больше число - тем более новая версия ядра. Используется для автоматического сравнения версий и в механизме обновлений. Например: 2011112100&lt;br /&gt;
&lt;br /&gt;
Второй метод возвращает текстовое обозначение версии, для удобства чтения человеком. Программно никак не обрабатывается. Например: 2.3.2&lt;br /&gt;
Чтение версий&lt;br /&gt;
* 2.x.x - первый разряд обозначает версию платформы. Существовал Электронный деканат версии 1.x.x, который имел совершенно другую архитектуру и функционал. Первый разряд версии меняется очень редко, при революционных изменениях в системе.&lt;br /&gt;
* 2.3.x - второй разряд обозначает существенные изменения в архитектуре или добавление значительного функционала. Например: версия 2.0.x была &amp;quot;голой&amp;quot; платформой для разработки модулей, версия 2.1.x позволяла хранить и управлять информацию об участниках учебного процесса, версия 2.2 содержала полноценную информационную модель учебного процесса (с группами, учебными программами, текущими и итоговыми оценками, журналами, зачетными книжками и дневниками и т.д.), версия 2.3 включала новые механизмы управления правами доступа и распределения объектов по подразделениями, в версии 2.4 платформа переведена с Moodle 1.9 на Moodle 2.2&lt;br /&gt;
* 2.3.1 - последний разряд обозначает выпуск релизов с добавленным пользовательским функционалом (обычно - несколько раз в год).&lt;br /&gt;
* Суффиксы версий, используемые в процессе выпуска&lt;br /&gt;
** 2.3.2dev5015 - версия для разработчиков с номером ревизии в SVN 5015, выпущенная в процессе работы над версией 2.3.2. Обычно, такая версия выпускается в конце итерации (раз в неделю), доступна только через SVN.&lt;br /&gt;
** 2.3.1beta1, 2.3.2beta2 - бета-версии для публичного тестирования&lt;br /&gt;
** 2.3.1rc1, 2.3.2rc2 - релиз-кандидаты, которые становятся релизом, если в них не найдено существенных недостатков.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Версии интерфейсов ядра и плагинов ====&lt;br /&gt;
В FDO применяются строковые обозначения версий интерфейсов ядра и плагинов, предназначенные для быстрого определения совместимости плагинов и ядра. Это позволяет автоматически определять потерю совместимости с минимумом ложных срабатываний. Например, если версия ядра изменилась, это еще не повод переписывать плагины, так как совместимость интерфейсов могла сохраниться.&lt;br /&gt;
&lt;br /&gt;
Версия интерфейса ядра получается методом $DOF-&amp;gt;compat() - выражает способность ядра обеспечивать потребности плагинов в API ядра. Например: aquarium_abc&lt;br /&gt;
Изменение версий:&lt;br /&gt;
* aquarium_a &lt;br /&gt;
* aquarium_ab - в интерфейс добавлены новые методы или изменены старые таким образом, что все плагины, которые были расчитаны на aquarium_a могут продолжать пользоваться существующим API (обеспечена односторонняя вертикальная совместимость).&lt;br /&gt;
* aquarium_abc - ядром могут пользоваться плагины, расчитанные на aquarium_abc, aquarium_ab, aquarium_a&lt;br /&gt;
* aquarium_ac  - значительные изменения в API ядра. Для плагинов aquarium_ab и aquarium_abc совместимость потеряна, но плагины aquarium_a по-прежнему могут пользоваться методами ядра, которые в них использовались&lt;br /&gt;
* aquarium_b - полная потеря совместимости со всеми предыдущими плагинами&lt;br /&gt;
&lt;br /&gt;
Ядро тоже пользуется методами плагинов и накладывает на них свои требования (которые могут отличаться от требований плагинов к ядру). Они строятся аналогично, но выражаются в требованиях ядра к плагинам. Как правило, речь идёт о методах, объявляемых в init.php. Получить список требований текущего ядра к интерфейсам плагинов можно получить методом $DOF-&amp;gt;plugin_compat($type).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Версии плагинов ====&lt;br /&gt;
Каждый плагин должен содержать методы, возвращающие информацию о его версии:&lt;br /&gt;
* $plugin-&amp;gt;version() - версия плагина, в виде простого целого числа, аналогично целочисленной версии ядра. Используется в механизме апгрейдов, поэтому важно, чтобы версии всегда только возрастали.&lt;br /&gt;
* $plugin-&amp;gt;compat_dof() возвращает версию интерфейса ядра и сравнивается с $DOF-&amp;gt;compat() для определения совместимости. Плагин считается совместимым, если начало строки $DOF-&amp;gt;compat() полностью повторяет $plugin-&amp;gt;compat_dof(). $DOF-&amp;gt;compat() может быть длиннее $plugin-&amp;gt;compat_dof(), но не наоборот.&lt;br /&gt;
* $plugin-&amp;gt;compat() - возвращает версию API, которую реализует сам плагин и сравнивается с $DOF-&amp;gt;plugin_compat($type). Плагин считается совместимым, если начало строки $DOF-&amp;gt;plugin_compat($type) полностью повторяет $plugin-&amp;gt;compat().  $plugin-&amp;gt;compat() может быть длиннее $DOF-&amp;gt;plugin_compat($type), но не наоборот.&lt;br /&gt;
* $plugin-&amp;gt;need_plugins() - возвращает массив со списком плагинов, необходимых для работы текущего плагина (зависимостей). Для каждого плагина можно указать версию, тогда совместимой будет считаться указанная версия или новее.&lt;br /&gt;
Здесь, проверяется только наличие нужных версий на диске, чтобы взаимные и кольцевые зависимости (есть такой грех, хоть это и плохо) не блокировали процесс установки.&lt;br /&gt;
* $plugin-&amp;gt;is_setup_possible() - необязательный метод для проверки зависимостей на момент установки. Если он объявлен, установка будет выполнена только если он возвращает true. Используется для исключения кольцевых зависимостей: если наш плагин в процессе установки использует другие плагины и необходимо, чтобы они были установлены раньше него, is_setup_possible() должен возвращать false, пока всё необходимое не будет установлено. При автоматической массовой установки плагинов, система будет пропускать такой плагин и ставить его в конец очереди установки, пока не установятся все необходимые плагины.&lt;/div&gt;</summary>
		<author><name>Jek312</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/pridepends&amp;diff=2246</id>
		<title>Разработка:storages/pridepends</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/pridepends&amp;diff=2246"/>
				<updated>2011-04-28T10:45:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jek312: /* check_pridepends( $psbcid, $targetpritemid ) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = pridepends&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''pridepends'' - содержит записи зависимостей дисциплин друг от друга с указанием характера зависимости (по коду типа зависимости запускается заранее созданный метод)&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
&lt;br /&gt;
* programmitemid - дисциплина в таблице [[Разработка:storages/programmitems | programmitems ]]. Здесь указывается дисциплина, для которой будет указываться зависимость. Т.е. эта дисциплина будет зависеть от того, что указано в следующих полях.&lt;br /&gt;
* type - тип зависимости, строковое поле. По содержащемуся здесь коду при проверке зависимости запускается соответствующий метод&lt;br /&gt;
* value - параметр зависимости, строковое поле. В частности поле может содержать id дисциплины, которая будет выступать зависимостью.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== '''get_cfg($key=null)''' ====&lt;br /&gt;
&lt;br /&gt;
Позволяет обращаться к конфигурационному файлу данного плагина.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* string[optional] $key=null Ключ в массиве, т.е. искомый параметр. Если параметр не передан, то возвращается весь массив.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Параметр или null (если конфигурационный файл не найден или если параметр не найден в файле или если он найден и его значение null, это стоит учитывать)&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* Для работы требуется переменная класса для хранения массива параметров из файла, т.е. обращение в файл производится только при первой попытке.&lt;br /&gt;
* Ищет конфигурационный файл (в соответствии с логикой работы dof - $this-&amp;gt;dof-&amp;gt;plugin_path($this-&amp;gt;type(),$this-&amp;gt;code(),'/cfg/cfg.php'))&lt;br /&gt;
* Возвращает значение по ключу (если ключ не указан, то возвращает весь массив параметров из файла). к примеру return @$mas['a'], т.е. если нет значения, то не генерируется ошибка, а возвращается null.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''check_pridepends( $psbcid, $targetpritemid )'''====&lt;br /&gt;
&lt;br /&gt;
Метод возвращает список невыполненных предусловий, которые должны быть выполнены для записи на переданную параметром дисциплину.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritemid id [[Разработка:storages/programmitems | дисциплины ]]&lt;br /&gt;
* int $psbcid id [[Разработка:storages/programmsbcs | подписки на программу ]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр невыполненного предусловия.&lt;br /&gt;
''Структура работы''&lt;br /&gt;
* взять список по $targetpritemid&lt;br /&gt;
* для каждой записи вызвать метод, код которого указан в поле type в таблице зависимостей&lt;br /&gt;
* этот метод смотрит пройдена ли дисц, если да, то вернет true, иначе false&lt;br /&gt;
&lt;br /&gt;
===='''get_list_by_id( $id )'''====&lt;br /&gt;
&lt;br /&gt;
Метод возвращает массив зависимостей для дисциплины (массив из id дисциплин)&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritemid id [[Разработка:storages/programmitems | дисциплины ]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр предусловия.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''requirepritem( $targetpritid, $psbcid, $dependpritid )'''====&lt;br /&gt;
&lt;br /&gt;
Функция предусловия. Базовая. Проверяет, получен ли студентом зачет по данной дисциплине&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritid id целевой [[Разработка:storages/programmitems | дисциплины ]] (для универсальности интерфейса)&lt;br /&gt;
* int $psbcid id [[Разработка:storages/programmsbcs | подписки на программу ]]&lt;br /&gt;
* int $dependitid id [[Разработка:storages/programmitems | дисциплины ]], необходимой для подписания на целевую дисциплину&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр предусловия.&lt;/div&gt;</summary>
		<author><name>Jek312</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/pridepends&amp;diff=2245</id>
		<title>Разработка:storages/pridepends</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/pridepends&amp;diff=2245"/>
				<updated>2011-04-28T10:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jek312: /* Таблица в базе данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox_Plugin&lt;br /&gt;
| name = pridepends&lt;br /&gt;
| type = storages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Таблица в базе данных===&lt;br /&gt;
''pridepends'' - содержит записи зависимостей дисциплин друг от друга с указанием характера зависимости (по коду типа зависимости запускается заранее созданный метод)&lt;br /&gt;
&lt;br /&gt;
====Подробный формат полей в таблице:====&lt;br /&gt;
&lt;br /&gt;
* programmitemid - дисциплина в таблице [[Разработка:storages/programmitems | programmitems ]]. Здесь указывается дисциплина, для которой будет указываться зависимость. Т.е. эта дисциплина будет зависеть от того, что указано в следующих полях.&lt;br /&gt;
* type - тип зависимости, строковое поле. По содержащемуся здесь коду при проверке зависимости запускается соответствующий метод&lt;br /&gt;
* value - параметр зависимости, строковое поле. В частности поле может содержать id дисциплины, которая будет выступать зависимостью.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные методы:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== '''get_cfg($key=null)''' ====&lt;br /&gt;
&lt;br /&gt;
Позволяет обращаться к конфигурационному файлу данного плагина.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* string[optional] $key=null Ключ в массиве, т.е. искомый параметр. Если параметр не передан, то возвращается весь массив.&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Параметр или null (если конфигурационный файл не найден или если параметр не найден в файле или если он найден и его значение null, это стоит учитывать)&lt;br /&gt;
''Структура работы:''&lt;br /&gt;
* Для работы требуется переменная класса для хранения массива параметров из файла, т.е. обращение в файл производится только при первой попытке.&lt;br /&gt;
* Ищет конфигурационный файл (в соответствии с логикой работы dof - $this-&amp;gt;dof-&amp;gt;plugin_path($this-&amp;gt;type(),$this-&amp;gt;code(),'/cfg/cfg.php'))&lt;br /&gt;
* Возвращает значение по ключу (если ключ не указан, то возвращает весь массив параметров из файла). к примеру return @$mas['a'], т.е. если нет значения, то не генерируется ошибка, а возвращается null.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''check_pridepends( $psbcid, $targetpritemid )'''====&lt;br /&gt;
&lt;br /&gt;
Метод возвращает список невыполненных предусловий, которые должны быть выполенны для записи на переданную параметром дисциплину.&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritemid id [[Разработка:storages/programmitems | дисциплины ]]&lt;br /&gt;
* int $psbcid id [[Разработка:storages/programmsbcs | подписки на программу ]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр невыполненного предусловия.&lt;br /&gt;
''Структура работы''&lt;br /&gt;
* взять список по $targetpritemid&lt;br /&gt;
* для каждой записи вызвать метод, код которого указан в поле type в таблице зависимостей&lt;br /&gt;
* этот метод смотрит пройдена ли дисц, если да, то вернет true, иначе false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''get_list_by_id( $id )'''====&lt;br /&gt;
&lt;br /&gt;
Метод возвращает массив зависимостей для дисциплины (массив из id дисциплин)&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritemid id [[Разработка:storages/programmitems | дисциплины ]]&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр предусловия.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''requirepritem( $targetpritid, $psbcid, $dependpritid )'''====&lt;br /&gt;
&lt;br /&gt;
Функция предусловия. Базовая. Проверяет, получен ли студентом зачет по данной дисциплине&lt;br /&gt;
&lt;br /&gt;
''Аргументы:''&lt;br /&gt;
* int $targetpritid id целевой [[Разработка:storages/programmitems | дисциплины ]] (для универсальности интерфейса)&lt;br /&gt;
* int $psbcid id [[Разработка:storages/programmsbcs | подписки на программу ]]&lt;br /&gt;
* int $dependitid id [[Разработка:storages/programmitems | дисциплины ]], необходимой для подписания на целевую дисциплину&lt;br /&gt;
''Возвращаемые значения:''&lt;br /&gt;
* Массив объектов с полями: &lt;br /&gt;
** тип зависимости&lt;br /&gt;
** текст ошибки&lt;br /&gt;
** параметр предусловия.&lt;/div&gt;</summary>
		<author><name>Jek312</name></author>	</entry>

	</feed>