Разработка:storages/departments — различия между версиями
Yumeneco (обсуждение | вклад) (Новая: ===Таблица в базе данных=== ''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, уче...) |
(→departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true)) |
||
(не показано 19 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
+ | {{Infobox_Plugin | ||
+ | | name = departments | ||
+ | | type = storages | ||
+ | }} | ||
+ | |||
===Таблица в базе данных=== | ===Таблица в базе данных=== | ||
''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости. | ''departments'' - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости. | ||
Строка 4: | Строка 9: | ||
====Подробный формат полей в таблице:==== | ====Подробный формат полей в таблице:==== | ||
* name - название | * name - название | ||
− | * code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность) | + | * code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи. |
− | * managerid - руководитель структурного подразделения | + | * managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]] |
* leaddepid - вышестоящее структурное подразделение | * leaddepid - вышестоящее структурное подразделение | ||
− | * addressid - местоположение | + | * addressid - местоположение в таблице [[Разработка:storages/addresses | addresses ]] |
* zone - временная зона, действующая в подразделении | * zone - временная зона, действующая в подразделении | ||
− | * status - | + | * status - список статусов указан в одноименном плагине рабочих процессов [[Разработка:workflows/departments | departments ]] |
+ | * path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены "/" | ||
+ | * depth - глубина вложенности подразделения | ||
===Дополнительные методы:=== | ===Дополнительные методы:=== | ||
+ | |||
+ | ===='''departments_list()'''==== | ||
+ | |||
+ | Выводит список всех структурных подразделений в алфавитном порядке | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | нет | ||
+ | ''Возвращаемые значения:'' | ||
+ | * (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения. | ||
+ | ''Структура работы:'' | ||
+ | # находим все существующие структурные подразделения. | ||
+ | # для каждого подразделения создаем запись в массиве. | ||
+ | # сортируем массив и возвращаем значение. | ||
+ | |||
+ | ===='''departments_list_subordinated($id = '0' ,$spase = '')'''==== | ||
+ | |||
+ | Выводит список всех подчиненных структурных подразделений по id структурного подразделения. | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | * (int) $id - id подразделения, по умолчанию - головное (0). | ||
+ | * (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии) | ||
+ | ''Возвращаемые значения:'' | ||
+ | * (array) список дочерних подразделений. | ||
+ | ''Структура работы:'' | ||
+ | # находим дочерние подразделения первого уровня для данного подразделения. | ||
+ | # для каждого подразделения: | ||
+ | #* создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения. | ||
+ | #* находим дочерние подразделения для полученного подразделения. | ||
+ | # возвращаем результат. | ||
+ | |||
+ | ===='''get_numberof_departments($select)'''==== | ||
+ | |||
+ | Подсчитывает количество записей, найденных по критериям | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | * (str) $select - условие выборки | ||
+ | ''Возвращаемые значения:'' | ||
+ | * mixed | ||
+ | |||
+ | ===='''get_default()'''==== | ||
+ | |||
+ | Возвращает объект департамента по умолчанию | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | нет | ||
+ | ''Возвращаемые значения:'' | ||
+ | * object | ||
+ | |||
+ | ===='''get_default_id()'''==== | ||
+ | |||
+ | Возвращает id объект департамента по умолчанию | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | нет | ||
+ | ''Возвращаемые значения:'' | ||
+ | * int - id объект департамента | ||
+ | |||
+ | ===='''is_code_notunique($code)'''==== | ||
+ | |||
+ | Проверяет уникальность кодового названия | ||
+ | |||
+ | ''Аргументы:'' | ||
+ | * (str) $code | ||
+ | ''Возвращаемые значения:'' | ||
+ | * (bool) true если запись не уникальна | ||
+ | |||
+ | ===='''departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = '', $code = false, $accesscheck = true)'''==== | ||
+ | Выводит список всех дочерних структурных подразделений указанного подразделения | ||
+ | Метод является рекурсивным и кеширует список подразделений. | ||
+ | Кеш сбрасывается при любом CrUD действии для актуализации данных. | ||
+ | |||
+ | ''Параметры:'' | ||
+ | * (int) $id - id подразделения, к которому хотим получить список подчиненных | ||
+ | * (int) $depth - глубина, для которой выводим список подразделений и их дочек | ||
+ | * (string) $path - путь, для | ||
+ | * (string) $select | ||
+ | * (string) $space | ||
+ | * (bool) $code - выводит только код(без названия-используется для блока слева подразделении) | ||
+ | * (bool) $accesscheck - проверять ли права при составлении списка подразделений? | ||
+ | true - проверять | ||
+ | false - не проверять | ||
+ | |||
+ | ''Возвращаемые значения:'' | ||
+ | * (array) - Cписок дочерних подразделений | ||
+ | |||
+ | ===Планы:=== | ||
+ | ====Дополнительные методы:==== | ||
* Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации. | * Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации. | ||
* Получить структурное подразделение по его коду | * Получить структурное подразделение по его коду | ||
Строка 17: | Строка 111: | ||
* Получить список структурных подразделений, подчиняющихся сотруднику по id персоны | * Получить список структурных подразделений, подчиняющихся сотруднику по id персоны | ||
* Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение) | * Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение) | ||
+ | |||
+ | ===События=== | ||
+ | В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином. | ||
+ | ====Перехватываемые события==== | ||
+ | {| border="1" | ||
+ | |+ Таблица событий, которые перехватывает этот плагин | ||
+ | ! Тип плагина | ||
+ | ! Код плагина | ||
+ | ! Код события | ||
+ | ! Доп. данные | ||
+ | ! Пояснение | ||
+ | |- | ||
+ | | departments | ||
+ | | storage | ||
+ | | insert | ||
+ | | | ||
+ | | Обновляет path и depth | ||
+ | |- | ||
+ | | departments | ||
+ | | storage | ||
+ | | update | ||
+ | | | ||
+ | | Обновляет path и depth | ||
+ | |- | ||
+ | | departments | ||
+ | | storage | ||
+ | | update | ||
+ | | status = deleted | ||
+ | | Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше | ||
+ | |} | ||
+ | |||
+ | ====Генерируемые события==== | ||
+ | {| border="1" | ||
+ | |+ Таблица событий, которые генерирует этот плагин | ||
+ | ! Тип плагина | ||
+ | ! Код плагина | ||
+ | ! Код события | ||
+ | ! Доп. данные | ||
+ | ! Пояснение | ||
+ | |- | ||
+ | |storage | ||
+ | |departments | ||
+ | |insert | ||
+ | |Массив, содержащий в поле "new" объект с данными для вставки в таблицу. | ||
+ | ''Пример:'' array('new' => $dataobject) | ||
+ | |Генерируется каждый раз при вставке новой записи в таблицу departments. | ||
+ | |- | ||
+ | |storage | ||
+ | |departments | ||
+ | |update | ||
+ | |Массив, содержащий в поле "new" обновленный объект, и в поле "old" объект со старыми данными, до обновления записи. | ||
+ | ''Пример:'' array('old' => $dataobject_old, 'new' => $dataobject_new) | ||
+ | |Генерируется каждый раз при обновлении записи в таблице departments. | ||
+ | |- | ||
+ | |storage | ||
+ | |departments | ||
+ | |delete | ||
+ | |Массив, содержащий в поле "old" объект с данными, которые удаляются из таблицы | ||
+ | ''Пример:'' array('old' => $dataobject) | ||
+ | |Генерируется каждый раз при удалении записи из таблицы departments. | ||
+ | |} |
Текущая версия на 10:28, 2 марта 2018
Плагин | |
Название | departments |
Тип | storages |
Содержание
- 1 Таблица в базе данных
- 2 Дополнительные методы:
- 2.1 departments_list()
- 2.2 departments_list_subordinated($id = '0' ,$spase = )
- 2.3 get_numberof_departments($select)
- 2.4 get_default()
- 2.5 get_default_id()
- 2.6 is_code_notunique($code)
- 2.7 departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true)
- 3 Планы:
- 4 События
Таблица в базе данных
departments - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости.
Подробный формат полей в таблице:
- name - название
- code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи.
- managerid - руководитель структурного подразделения в таблице persons
- leaddepid - вышестоящее структурное подразделение
- addressid - местоположение в таблице addresses
- zone - временная зона, действующая в подразделении
- status - список статусов указан в одноименном плагине рабочих процессов departments
- path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены "/"
- depth - глубина вложенности подразделения
Дополнительные методы:
departments_list()
Выводит список всех структурных подразделений в алфавитном порядке
Аргументы: нет Возвращаемые значения:
- (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.
Структура работы:
- находим все существующие структурные подразделения.
- для каждого подразделения создаем запись в массиве.
- сортируем массив и возвращаем значение.
departments_list_subordinated($id = '0' ,$spase = )
Выводит список всех подчиненных структурных подразделений по id структурного подразделения.
Аргументы:
- (int) $id - id подразделения, по умолчанию - головное (0).
- (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)
Возвращаемые значения:
- (array) список дочерних подразделений.
Структура работы:
- находим дочерние подразделения первого уровня для данного подразделения.
- для каждого подразделения:
- создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения.
- находим дочерние подразделения для полученного подразделения.
- возвращаем результат.
get_numberof_departments($select)
Подсчитывает количество записей, найденных по критериям
Аргументы:
- (str) $select - условие выборки
Возвращаемые значения:
- mixed
get_default()
Возвращает объект департамента по умолчанию
Аргументы: нет Возвращаемые значения:
- object
get_default_id()
Возвращает id объект департамента по умолчанию
Аргументы: нет Возвращаемые значения:
- int - id объект департамента
is_code_notunique($code)
Проверяет уникальность кодового названия
Аргументы:
- (str) $code
Возвращаемые значения:
- (bool) true если запись не уникальна
departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true)
Выводит список всех дочерних структурных подразделений указанного подразделения Метод является рекурсивным и кеширует список подразделений. Кеш сбрасывается при любом CrUD действии для актуализации данных.
Параметры:
- (int) $id - id подразделения, к которому хотим получить список подчиненных
- (int) $depth - глубина, для которой выводим список подразделений и их дочек
- (string) $path - путь, для
- (string) $select
- (string) $space
- (bool) $code - выводит только код(без названия-используется для блока слева подразделении)
- (bool) $accesscheck - проверять ли права при составлении списка подразделений?
true - проверять false - не проверять
Возвращаемые значения:
- (array) - Cписок дочерних подразделений
Планы:
Дополнительные методы:
- Получить запись о первичного структурном подразделении, которому подчиняются все остальные. Руководителем первичного структурного подразделения является руководитель организации.
- Получить структурное подразделение по его коду
- Получить список подчиненных структурных подразделений первого уровня по id структурного подразделения
- Получить список структурных подразделений, подчиняющихся сотруднику по id персоны
- Добавить структурное подразделение в базу данных (проверяет, чтобы в качестве главного было указано существующее структурное подразделение)
События
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
Перехватываемые события
Тип плагина | Код плагина | Код события | Доп. данные | Пояснение |
---|---|---|---|---|
departments | storage | insert | Обновляет path и depth | |
departments | storage | update | Обновляет path и depth | |
departments | storage | update | status = deleted | Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше |
Генерируемые события
Тип плагина | Код плагина | Код события | Доп. данные | Пояснение |
---|---|---|---|---|
storage | departments | insert | Массив, содержащий в поле "new" объект с данными для вставки в таблицу.
Пример: array('new' => $dataobject) |
Генерируется каждый раз при вставке новой записи в таблицу departments. |
storage | departments | update | Массив, содержащий в поле "new" обновленный объект, и в поле "old" объект со старыми данными, до обновления записи.
Пример: array('old' => $dataobject_old, 'new' => $dataobject_new) |
Генерируется каждый раз при обновлении записи в таблице departments. |
storage | departments | delete | Массив, содержащий в поле "old" объект с данными, которые удаляются из таблицы
Пример: array('old' => $dataobject) |
Генерируется каждый раз при удалении записи из таблицы departments. |