chg: [behaviors:metafields] Moved type handlers to the meta-template-fields table
parent
ad6362eed4
commit
4b5b2bc7e2
|
@ -65,6 +65,7 @@ class IPv4Type extends TextType
|
||||||
|
|
||||||
protected function fetchAllMetatemplateFieldsIdForThisType(\App\Model\Entity\MetaTemplateField $metaTemplateField = null): Query
|
protected function fetchAllMetatemplateFieldsIdForThisType(\App\Model\Entity\MetaTemplateField $metaTemplateField = null): Query
|
||||||
{
|
{
|
||||||
|
$this->MetaTemplateFields = TableRegistry::getTableLocator()->get('MetaTemplateFields');
|
||||||
$conditions = [];
|
$conditions = [];
|
||||||
if (!is_null($metaTemplateField)) {
|
if (!is_null($metaTemplateField)) {
|
||||||
$conditions['id'] = $metaTemplateField->id;
|
$conditions['id'] = $metaTemplateField->id;
|
||||||
|
|
|
@ -12,7 +12,6 @@ class TextType
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->MetaFields = TableRegistry::getTableLocator()->get('MetaFields');
|
$this->MetaFields = TableRegistry::getTableLocator()->get('MetaFields');
|
||||||
$this->MetaTemplateFields = TableRegistry::getTableLocator()->get('MetaTemplateFields');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validate(string $value): bool
|
public function validate(string $value): bool
|
||||||
|
|
|
@ -55,20 +55,15 @@ class MetaFieldsBehavior extends Behavior
|
||||||
public function initialize(array $config): void
|
public function initialize(array $config): void
|
||||||
{
|
{
|
||||||
$this->bindAssociations();
|
$this->bindAssociations();
|
||||||
$this->_metaTemplateFieldTable = $this->_table;
|
$this->_metaTemplateFieldTable = $this->_table->MetaFields->MetaTemplateFields;
|
||||||
$this->_metaTemplateTable = $this->_table;
|
$this->_metaTemplateTable = $this->_table->MetaFields->MetaTemplates;
|
||||||
$this->loadTypeHandlers();
|
$this->loadTypeHandlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function loadTypeHandlers()
|
private function loadTypeHandlers()
|
||||||
{
|
{
|
||||||
$typeHandlers = [
|
if (empty($this->typeHandlers)) {
|
||||||
new TextType(),
|
$this->typeHandlers = $this->_metaTemplateFieldTable->getTypeHandlers();
|
||||||
new IPv4Type(),
|
|
||||||
new IPv6Type(),
|
|
||||||
];
|
|
||||||
foreach ($typeHandlers as $handler) {
|
|
||||||
$this->typeHandlers[$handler::TYPE] = $handler;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,8 +233,7 @@ class MetaFieldsBehavior extends Behavior
|
||||||
|
|
||||||
protected function buildQuerySnippet(array $filter): Query
|
protected function buildQuerySnippet(array $filter): Query
|
||||||
{
|
{
|
||||||
$this->MetaTemplateFields = TableRegistry::getTableLocator()->get('MetaTemplateFields');
|
$metaTemplateField = !empty($filter['meta_template_field_id']) ? $this->_metaTemplateFieldTable->get($filter['meta_template_field_id']) : null;
|
||||||
$metaTemplateField = !empty($filter['meta_template_field_id']) ? $this->MetaTemplateFields->get($filter['meta_template_field_id']) : null;
|
|
||||||
$whereClosure = function (QueryExpression $exp) use ($filter, $metaTemplateField) {
|
$whereClosure = function (QueryExpression $exp) use ($filter, $metaTemplateField) {
|
||||||
foreach ($filter as $column => $value) {
|
foreach ($filter as $column => $value) {
|
||||||
$keyedColumn = 'MetaFields.' . $column;
|
$keyedColumn = 'MetaFields.' . $column;
|
||||||
|
|
|
@ -6,8 +6,14 @@ use App\Model\Table\AppTable;
|
||||||
use Cake\ORM\Table;
|
use Cake\ORM\Table;
|
||||||
use Cake\Validation\Validator;
|
use Cake\Validation\Validator;
|
||||||
|
|
||||||
|
use MetaFieldsTypes\TextType;
|
||||||
|
use MetaFieldsTypes\IPv4Type;
|
||||||
|
use MetaFieldsTypes\IPv6Type;
|
||||||
|
|
||||||
class MetaTemplateFieldsTable extends AppTable
|
class MetaTemplateFieldsTable extends AppTable
|
||||||
{
|
{
|
||||||
|
private $typeHandlers = [];
|
||||||
|
|
||||||
public function initialize(array $config): void
|
public function initialize(array $config): void
|
||||||
{
|
{
|
||||||
parent::initialize($config);
|
parent::initialize($config);
|
||||||
|
@ -18,6 +24,7 @@ class MetaTemplateFieldsTable extends AppTable
|
||||||
$this->hasMany('MetaFields');
|
$this->hasMany('MetaFields');
|
||||||
|
|
||||||
$this->setDisplayField('field');
|
$this->setDisplayField('field');
|
||||||
|
$this->loadTypeHandlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function beforeSave($event, $entity, $options)
|
public function beforeSave($event, $entity, $options)
|
||||||
|
@ -37,4 +44,28 @@ class MetaTemplateFieldsTable extends AppTable
|
||||||
->requirePresence(['field', 'type'], 'create');
|
->requirePresence(['field', 'type'], 'create');
|
||||||
return $validator;
|
return $validator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loadTypeHandlers(): void
|
||||||
|
{
|
||||||
|
if (empty($this->typeHandlers)) {
|
||||||
|
$typeHandlers = [
|
||||||
|
new TextType(),
|
||||||
|
new IPv4Type(),
|
||||||
|
new IPv6Type(),
|
||||||
|
];
|
||||||
|
foreach ($typeHandlers as $handler) {
|
||||||
|
$this->typeHandlers[$handler::TYPE] = $handler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTypeHandlers(): array
|
||||||
|
{
|
||||||
|
return $this->typeHandlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTypeHandler($type)
|
||||||
|
{
|
||||||
|
return $this->typeHandlers[$type] ?? false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue