Documentation

MetaManager
in package

Class MetaManager

Для работы с мета данными

Tags
subpackage

Models

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_TABLE_SETTINGS

public mixed COL_TABLE_SETTINGS = 'table_settings'

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_PASSWORD

public string CONTROL_PASSWORD = 'password'

CONTROL_SELECT

public string CONTROL_SELECT = 'select'

CONTROL_TEXTAREA

public string CONTROL_TEXTAREA = 'textarea'

FULL_INFO_MODE

public mixed FULL_INFO_MODE = 'full_info_mode'

NAME_TYPE_MODE

public mixed NAME_TYPE_MODE = 'name_type_mode'

TYPE_DATETIME

public string TYPE_DATETIME = 'datetime'

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]

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
throws
JsonException
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
$entity_name : string
$id :
$meta_name : string = 'id'
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
throws
ObjectHasNoMeta
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
throws
JsonException
throws
DataGridException
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
link
https://doc.nette.org/en/3.1/validators#toc-validators
throws
MetaFieldControlNotAllowed

Ошибка при указании несуществующего типа контроллера

throws
MetaFieldIsExists

Ошибка при попытках добавить поле имя которого уже зарегистрировано

throws
MetaFieldTypeNotAllowed

Ошибка при попытке добавить мета поле с несуществующим типом

throws
MetaTableNotFound

Ошибка при попытке добавить мета поле к несуществующей таблице

throws
JsonException

Ошибка при переводе массивов настроек в формат Json

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
throws
NotAllPropertySetException

Ошибка возникающая при возникновении ошибки при сохранении одного из меты полей

throws
Exception
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
throws
JsonException
Return values
Control|Checkbox|TextArea|TextInput

dateRangeFilter()

private dateRangeFilter( $rows,  $value,  $nameFilter) : Selection
Parameters
$rows :

Selection

$value :
$nameFilter :
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
throws
JsonException
throws
DataGridException
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
throws
Exception
Return values
array<string|int, mixed>

['nameMetaColumn'=>'valueMetaColumn']

Search results