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

Материал из DOF
Перейти к: навигация, поиск
(departments_list_subordinated($id = null, $depth = '0', $path = null, $select = false, $space = , $code = false, $accesscheck = true))
 
(не показано 10 промежуточных версий 6 участников)
Строка 9: Строка 9:
 
====Подробный формат полей в таблице:====
 
====Подробный формат полей в таблице:====
 
* name - название
 
* name - название
* code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность)
+
* code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи.
 
* managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]]
 
* managerid - руководитель структурного подразделения в таблице [[Разработка:storages/persons | persons ]]
 
* leaddepid - вышестоящее структурное подразделение
 
* leaddepid - вышестоящее структурное подразделение
Строка 15: Строка 15:
 
* zone - временная зона, действующая в подразделении
 
* zone - временная зона, действующая в подразделении
 
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/departments | departments ]]
 
* status - список статусов указан в одноименном плагине рабочих процессов  [[Разработка:workflows/departments | departments ]]
 +
* path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены "/"
 +
* depth - глубина вложенности подразделения
  
 
===Дополнительные методы:===
 
===Дополнительные методы:===
  
'''departments_list()'''
+
===='''departments_list()'''====
  
Получает список всех структурных подразделений в алфавитном порядке
+
Выводит список всех структурных подразделений в алфавитном порядке
  
 
''Аргументы:''  
 
''Аргументы:''  
 
нет
 
нет
 
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
 
* (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.
 
* (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.
Строка 32: Строка 33:
 
# сортируем массив и возвращаем значение.
 
# сортируем массив и возвращаем значение.
  
'''departments_list_subordinated()'''
+
===='''departments_list_subordinated($id = '0' ,$spase = '')'''====
  
Получает список всех подчиненных структурных подразделений по id структурного подразделения.
+
Выводит список всех подчиненных структурных подразделений по id структурного подразделения.
  
 
''Аргументы:''  
 
''Аргументы:''  
* $id(int) - id подразделения, по умолчанию - головное (0).
+
* (int) $id - id подразделения, по умолчанию - головное (0).
* $spase(string) - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)
+
* (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)
 
''Возвращаемые значения:''
 
''Возвращаемые значения:''
 
* (array) список дочерних подразделений.
 
* (array) список дочерних подразделений.
Строка 47: Строка 48:
 
#* находим дочерние подразделения для полученного подразделения.
 
#* находим дочерние подразделения для полученного подразделения.
 
# возвращаем результат.
 
# возвращаем результат.
 +
 +
===='''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писок дочерних подразделений
  
 
===Планы:===
 
===Планы:===
Строка 67: Строка 123:
 
  ! Пояснение
 
  ! Пояснение
 
  |-
 
  |-
  |colspan=5 align=center | ''Этот плагин не перехватывает никаких событий''
+
  | departments
 +
| storage
 +
| insert
 +
|
 +
| Обновляет path и depth
 +
|-
 +
| departments
 +
| storage
 +
| update
 +
|
 +
| Обновляет path и depth
 +
|-
 +
| departments
 +
| storage
 +
| update
 +
| status = deleted
 +
| Все подразделения, ссылавшиеся на удалённое, переходят на уровень выше
 
  |}
 
  |}
 +
 
====Генерируемые события====
 
====Генерируемые события====
 
{| border="1"
 
{| border="1"
Строка 99: Строка 172:
 
  |Генерируется каждый раз при удалении записи из таблицы departments.
 
  |Генерируется каждый раз при удалении записи из таблицы departments.
 
  |}
 
  |}
 
[[Категория:Разработка]]
 
[[Категория:Плагины_storages]]
 

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

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


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

departments - подразделения учебного заведения. Учебные потоки, дисциплины, учебные программы, подписки приписаны к одному из подразделений, для удобства организации учебного процесса в крупных учебных заведениях. При установке системы создается одно подразделение по умолчанию, к которому приписываются все объекты, если в использовании других подразделений нет необходимости.

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

  • name - название
  • code - кодовое обозначение (текстовое, необязательное, при указании кода проверяется уникальность). Если код не указан - то вместо него подставляется id записи.
  • managerid - руководитель структурного подразделения в таблице persons
  • leaddepid - вышестоящее структурное подразделение
  • addressid - местоположение в таблице addresses
  • zone - временная зона, действующая в подразделении
  • status - список статусов указан в одноименном плагине рабочих процессов departments
  • path - путь к подразделению по родителям начиная с родителя-корня. Родители разделены "/"
  • depth - глубина вложенности подразделения

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

departments_list()

Выводит список всех структурных подразделений в алфавитном порядке

Аргументы: нет Возвращаемые значения:

  • (array) - массив записей из таблицы, где ключ - id подразделения, значение - название подразделения.

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

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

departments_list_subordinated($id = '0' ,$spase = )

Выводит список всех подчиненных структурных подразделений по id структурного подразделения.

Аргументы:

  • (int) $id - id подразделения, по умолчанию - головное (0).
  • (str) $spase - знак отступа , по умолчанию - нет. (неиспользуемый параметр, необходим для рекурсии)

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

  • (array) список дочерних подразделений.

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

  1. находим дочерние подразделения первого уровня для данного подразделения.
  2. для каждого подразделения:
    • создаем запись в массиве, где ключ - id подразделения, значение - знак отступа+имя подразделения.
    • находим дочерние подразделения для полученного подразделения.
  3. возвращаем результат.

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.