MetaManager
in package
Class MetaManager
Для работы с мета данными
Tags
Table of Contents
- COL_CONTROL = 'control'
- COL_ENTITY = 'entity'
- COL_NAME = 'name'
- COL_REQUIRED = 'required'
- COL_TABLE_SETTINGS = 'table_settings'
- COL_TITLE = 'title'
- COL_TYPE = 'type'
- COL_VALIDATORS = 'validators'
- COLUMN_DATE_FORMAT = 'date_time_format'
- COLUMN_FILTER_DATE = 'filter_date'
- COLUMN_FILTER_SELECT = 'filter_select'
- COLUMN_FILTER_TEXT = 'filter_text'
- COLUMN_HIDDEN = 'hidden'
- COLUMN_SORTABLE = 'sortable'
- CONTROL_CHECKBOX = 'checkbox'
- CONTROL_EMAIL = 'email'
- CONTROL_PASSWORD = 'password'
- CONTROL_SELECT = 'select'
- CONTROL_TEXT = 'text'
- CONTROL_TEXTAREA = 'textarea'
- CONTROL_UUID = 'uuid'
- FULL_INFO_MODE = 'full_info_mode'
- NAME_TYPE_MODE = 'name_type_mode'
- TABLE_NAME = 'meta'
- TYPE_BIGINT = 'bigint'
- TYPE_BOOLEAN = 'boolean'
- TYPE_DATE = 'date'
- TYPE_DATETIME = 'datetime'
- TYPE_DECIMAL = 'decimal'
- TYPE_ENUM = 'enum'
- TYPE_FLOAT = 'float'
- TYPE_INTEGER = 'integer'
- TYPE_STRING = 'string'
- TYPE_TIME = 'time'
- TYPE_UUID = 'uuid'
- $allowed_controls : array<string|int, mixed>
- Сопоставление типов с контроллерами
- $allowed_types : array<string|int, mixed>
- Список доступных типов мета полей
- $database : Context
- __construct() : mixed
- MetaManager constructor.
- checkRegisterMetaProperties() : array<string|int, mixed>
- Возвращает зарегистрированные мета поля сущности
- create() : bool
- Создаёт таблицу мета полей сущности
- deleteMetaItem() : mixed
- Удаляет строки из мета-таблицы
- findObjectMeta() : array<string|int, ActiveRow>|Selection|iteratable<string|int, mixed>
- Ищет мета поля сущности
- formFactory() : void
- Добавляет контроллеры к форме
- getBaseSelection() : Selection
- Выборка основных полей и мета полей
- getBaseSql() : string
- Формирует sql запрос для получения всех строк таблицы сущности вместе с мето полями (для сущностей с метаполями)
- getBaseSqlById() : string
- Формирует sql запроса для получения экземпляра сущности вместе с мета полями
- getBaseSqlByMeta() : string
- getMetaTableName() : string
- Возвращает название мета таблицы сущности
- getObjectMeta() : ActiveRow
- getPrimaryKey() : Row|null
- Возвращает название колонки которая является первичным клюём
- getTableDataAndMeta() : string
- Формирует sql запрос для получения всех строк таблицы сущности вместе с мето полями (в не зависимости есть ли мета поля или нет)
- gridFactory() : void
- Добавляет столбцы мета полей в таблицу
- register() : bool
- Добавляет запись в таблице meta, а также создаёт таблицу с мета полями для указанной таблицы, добавляет контроллер для редактирования к форме
- remove() : bool
- Удаляет таблицу мета полей сущности
- save() : bool
- Сохраняет значение мета поля для конкретного экземпляра сущности
- unregister() : bool
- Удаляет мета поле из таблицы meta
- checkEntityMeta() : mixed|null
- Проверяет есть ли таблицы мета полей у сущности
- columnFactory() : string
- Формирует запрос добавления колнки мета поля в таблицу
- controlFactory() : Control|Checkbox|TextArea|TextInput
- Формирует контроллеры мета полей для формы
- dateRangeFilter() : Selection
- findMeta() : Selection
- Ищен записи о мета полях сущности
- gridColumnFactory() : void
- Формирует и добавляет колонку мета поля в таблицу
- prepareMetaItem() : array<string|int, mixed>
- Формирует одномерный массив в котором key является название мета поля, а value его значение Так же производит форматирование значения мета поля
Constants
COL_CONTROL
public
mixed
COL_CONTROL
= 'control'
COL_ENTITY
public
mixed
COL_ENTITY
= 'entity'
COL_NAME
public
mixed
COL_NAME
= 'name'
COL_REQUIRED
public
mixed
COL_REQUIRED
= 'required'
COL_TABLE_SETTINGS
public
mixed
COL_TABLE_SETTINGS
= 'table_settings'
COL_TITLE
public
mixed
COL_TITLE
= 'title'
COL_TYPE
public
mixed
COL_TYPE
= 'type'
COL_VALIDATORS
public
mixed
COL_VALIDATORS
= 'validators'
COLUMN_DATE_FORMAT
public
string
COLUMN_DATE_FORMAT
= 'date_time_format'
COLUMN_FILTER_DATE
public
string
COLUMN_FILTER_DATE
= 'filter_date'
COLUMN_FILTER_SELECT
public
string
COLUMN_FILTER_SELECT
= 'filter_select'
COLUMN_FILTER_TEXT
public
string
COLUMN_FILTER_TEXT
= 'filter_text'
COLUMN_HIDDEN
public
string
COLUMN_HIDDEN
= 'hidden'
COLUMN_SORTABLE
public
mixed
COLUMN_SORTABLE
= 'sortable'
CONTROL_CHECKBOX
public
string
CONTROL_CHECKBOX
= 'checkbox'
CONTROL_EMAIL
public
string
CONTROL_EMAIL
= 'email'
CONTROL_PASSWORD
public
string
CONTROL_PASSWORD
= 'password'
CONTROL_SELECT
public
string
CONTROL_SELECT
= 'select'
CONTROL_TEXT
public
string
CONTROL_TEXT
= 'text'
CONTROL_TEXTAREA
public
string
CONTROL_TEXTAREA
= 'textarea'
CONTROL_UUID
public
string
CONTROL_UUID
= 'uuid'
FULL_INFO_MODE
public
mixed
FULL_INFO_MODE
= 'full_info_mode'
NAME_TYPE_MODE
public
mixed
NAME_TYPE_MODE
= 'name_type_mode'
TABLE_NAME
public
string
TABLE_NAME
= 'meta'
TYPE_BIGINT
public
string
TYPE_BIGINT
= 'bigint'
TYPE_BOOLEAN
public
string
TYPE_BOOLEAN
= 'boolean'
TYPE_DATE
public
string
TYPE_DATE
= 'date'
TYPE_DATETIME
public
string
TYPE_DATETIME
= 'datetime'
TYPE_DECIMAL
public
string
TYPE_DECIMAL
= 'decimal'
TYPE_ENUM
public
string
TYPE_ENUM
= 'enum'
TYPE_FLOAT
public
string
TYPE_FLOAT
= 'float'
TYPE_INTEGER
public
string
TYPE_INTEGER
= 'integer'
TYPE_STRING
public
string
TYPE_STRING
= 'string'
TYPE_TIME
public
string
TYPE_TIME
= 'time'
TYPE_UUID
public
string
TYPE_UUID
= 'uuid'
Properties
$allowed_controls
Сопоставление типов с контроллерами
private
array<string|int, mixed>
$allowed_controls
= [self::TYPE_BOOLEAN => [self::CONTROL_CHECKBOX], self::TYPE_INTEGER => [self::CONTROL_TEXT], self::TYPE_BIGINT => [self::CONTROL_TEXT], self::TYPE_FLOAT => [self::CONTROL_TEXT], self::TYPE_DECIMAL => [self::CONTROL_TEXT], self::TYPE_STRING => [self::CONTROL_TEXT, self::CONTROL_TEXTAREA, self::CONTROL_PASSWORD, self::CONTROL_EMAIL], self::TYPE_ENUM => [self::CONTROL_SELECT], self::TYPE_DATETIME => [self::CONTROL_TEXT], self::TYPE_DATE => [self::CONTROL_TEXT], self::TYPE_TIME => [self::CONTROL_TEXT], self::TYPE_UUID => [self::CONTROL_UUID]]
$allowed_types
Список доступных типов мета полей
private
array<string|int, mixed>
$allowed_types
= [self::TYPE_BOOLEAN, self::TYPE_INTEGER, self::TYPE_BIGINT, self::TYPE_FLOAT, self::TYPE_DECIMAL, self::TYPE_STRING, self::TYPE_ENUM, self::TYPE_DATETIME, self::TYPE_DATE, self::TYPE_TIME, self::TYPE_UUID]
$database
private
Context
$database
Methods
__construct()
MetaManager constructor.
public
__construct(Context $database) : mixed
Parameters
- $database : Context
Return values
mixed —checkRegisterMetaProperties()
Возвращает зарегистрированные мета поля сущности
public
checkRegisterMetaProperties(string $entityName) : array<string|int, mixed>
Parameters
- $entityName : string
Return values
array<string|int, mixed> —create()
Создаёт таблицу мета полей сущности
public
create(string $entity_name) : bool
Parameters
- $entity_name : string
-
Название сущности
Return values
bool —deleteMetaItem()
Удаляет строки из мета-таблицы
public
deleteMetaItem(string $entityName, string|int $entityId) : mixed
Parameters
- $entityName : string
-
Имя основной сущности
- $entityId : string|int
-
Идентификатор основной сущности
Return values
mixed —findObjectMeta()
Ищет мета поля сущности
public
findObjectMeta(string $entity_name[, string $mode = self::NAME_TYPE_MODE ]) : array<string|int, ActiveRow>|Selection|iteratable<string|int, mixed>
Parameters
- $entity_name : string
-
Название сущности
- $mode : string = self::NAME_TYPE_MODE
Return values
array<string|int, ActiveRow>|Selection|iteratable<string|int, mixed> —formFactory()
Добавляет контроллеры к форме
public
formFactory(Container $container, string $entity_name) : void
Parameters
- $container : Container
-
Экземпляр формы
- $entity_name : string
-
Название сущности
Tags
Return values
void —getBaseSelection()
Выборка основных полей и мета полей
public
getBaseSelection(string $entity_name) : Selection
Parameters
- $entity_name : string
-
Имя сущности
Return values
Selection —getBaseSql()
Формирует sql запрос для получения всех строк таблицы сущности вместе с мето полями (для сущностей с метаполями)
public
static getBaseSql(string $entity_name) : string
Parameters
- $entity_name : string
-
Название сущности
Return values
string —Sql запрос
getBaseSqlById()
Формирует sql запроса для получения экземпляра сущности вместе с мета полями
public
static getBaseSqlById(string $entity_name, int $id[, mixed $meta_name = 'id' ]) : string
Parameters
- $entity_name : string
-
Название сущности
- $id : int
-
Идентификатор экземпляра сущности
- $meta_name : mixed = 'id'
Return values
string —Sql запрос
getBaseSqlByMeta()
public
static getBaseSqlByMeta(string $entity_name, $id[, string $meta_name = 'id' ]) : string
Parameters
Return values
string —getMetaTableName()
Возвращает название мета таблицы сущности
public
static getMetaTableName(string $entity_name) : string
Parameters
- $entity_name : string
-
Название сущности
Return values
string —Название мета таблицы сущности
getObjectMeta()
public
getObjectMeta(string $entity_name, int $object_id) : ActiveRow
Parameters
- $entity_name : string
- $object_id : int
Tags
Return values
ActiveRow —getPrimaryKey()
Возвращает название колонки которая является первичным клюём
public
getPrimaryKey(string $entity_name) : Row|null
Parameters
- $entity_name : string
-
Название сущности
Return values
Row|null —Объект Row с название столбца или null если у таблиц нет первичного ключа
getTableDataAndMeta()
Формирует sql запрос для получения всех строк таблицы сущности вместе с мето полями (в не зависимости есть ли мета поля или нет)
public
static getTableDataAndMeta(string $entity_name) : string
Parameters
- $entity_name : string
Return values
string —gridFactory()
Добавляет столбцы мета полей в таблицу
public
gridFactory(DataGrid $grid, string $entity_name[, array<string|int, mixed> $disableColumns = null ]) : void
Parameters
- $grid : DataGrid
-
Экземпляр таблицы
- $entity_name : string
-
Название сущности
- $disableColumns : array<string|int, mixed> = null
Tags
Return values
void —register()
Добавляет запись в таблице meta, а также создаёт таблицу с мета полями для указанной таблицы, добавляет контроллер для редактирования к форме
public
register(string $name, string $entity, string $title, string $type, string $control, bool $required[, array<string|int, mixed> $validators = [] ][, array<string|int, mixed> $table_settings = [] ]) : bool
Parameters
- $name : string
-
Имя мета поля
- $entity : string
-
Название таблицы для которой создаётся мета поле
- $title : string
-
Заголовок для отображения в интерфейсе
- $type : string
-
Тип мета поля (boolean,integer, float, decimal, string, enum, datetime, date, time)
- $control : string
-
Тип контроллера для отображения в форме редактирования (checkbox, text, textarea, password, email, select)
- $required : bool
-
Пометка, является ли поле обязательным для заполнения или нет
- $validators : array<string|int, mixed> = []
-
Массив правил, для проверки при заполнении, добавляются в контроллер на форме Парамер ты валидации
- $table_settings : array<string|int, mixed> = []
-
Массив свойств для таблицы, участвуют при создании таблицы устанавливая свойства столбца (hidden, filter_text, filter_select) { @link MetaManager::TABLE_NAME}
Tags
Return values
bool —Флаг, добавилось поле или нет
remove()
Удаляет таблицу мета полей сущности
public
remove(string $entity_name) : bool
Parameters
- $entity_name : string
-
Название сущности
Return values
bool —save()
Сохраняет значение мета поля для конкретного экземпляра сущности
public
save(string $entity_name, int $id, iteratable<string|int, mixed> $values[, string|null $user = null ][, string|null $module_name = null ]) : bool
Parameters
- $entity_name : string
-
Название сущности
- $id : int
-
Идентификатор экземпляра сущности
- $values : iteratable<string|int, mixed>
-
Значения мета полей
- $user : string|null = null
-
Ипя пользователя, необходимо для ведения лога изменений
- $module_name : string|null = null
-
Имя модуля в котором происходит изменение
Tags
Return values
bool —Флаг состояния завершения процесса
unregister()
Удаляет мета поле из таблицы meta
public
unregister(string $name, string $entity) : bool
Parameters
- $name : string
-
Название мета поля
- $entity : string
-
Название сущности к которому принадлежит мта поле
Return values
bool —Возвращает флаг, сигнализирующий о том удалилось поле или нет
checkEntityMeta()
Проверяет есть ли таблицы мета полей у сущности
private
checkEntityMeta(string $entity_name) : mixed|null
Parameters
- $entity_name : string
-
Название сущности, у которой необходимо проверить наличие мета таблицы
Return values
mixed|null —columnFactory()
Формирует запрос добавления колнки мета поля в таблицу
private
columnFactory(string $type, string $name, string $entity) : string
Parameters
- $type : string
-
Тип мета поля
- $name : string
-
Название мета поля
- $entity : string
-
Название сущности
Return values
string —Sql запрос по добавлению столбца в таблицу
controlFactory()
Формирует контроллеры мета полей для формы
private
controlFactory(ActiveRow $meta_control) : Control|Checkbox|TextArea|TextInput
Parameters
- $meta_control : ActiveRow
-
Тип контроллера
Tags
Return values
Control|Checkbox|TextArea|TextInput —dateRangeFilter()
private
dateRangeFilter( $rows, $value, $nameFilter) : Selection
Parameters
Return values
Selection —findMeta()
Ищен записи о мета полях сущности
private
findMeta(string $entity_name) : Selection
Parameters
- $entity_name : string
-
Название сущности
Return values
Selection —gridColumnFactory()
Формирует и добавляет колонку мета поля в таблицу
private
gridColumnFactory(DataGrid &$grid, ActiveRow $meta_control, string $entity_name) : void
Parameters
- $grid : DataGrid
-
экземпляр таблицы
- $meta_control : ActiveRow
-
Тип контроллера
- $entity_name : string
-
Название сущности
Tags
Return values
void —prepareMetaItem()
Формирует одномерный массив в котором key является название мета поля, а value его значение Так же производит форматирование значения мета поля
private
prepareMetaItem(string $entity_name, int $id, iteratable<string|int, mixed> $values) : array<string|int, mixed>
Parameters
- $entity_name : string
-
Название сущности которому принадлежит мета поле
- $id : int
-
Идентификатор экземпляра сущности
- $values : iteratable<string|int, mixed>
-
Значения мета полей
Tags
Return values
array<string|int, mixed> —['nameMetaColumn'=>'valueMetaColumn']