Разработка:storages/departments

Материал из DOF
Перейти к: навигация, поиск
Плагин
Название 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.