2022-12-07 14:54:28 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Model\Table;
|
|
|
|
|
|
|
|
use App\Model\Entity\MetaTemplate;
|
|
|
|
use App\Model\Entity\MetaTemplateNameDirectory;
|
|
|
|
use App\Model\Table\AppTable;
|
2023-02-13 15:14:43 +01:00
|
|
|
use Cake\ORM\RulesChecker;
|
2022-12-07 14:54:28 +01:00
|
|
|
use Cake\Validation\Validator;
|
2023-02-27 12:16:36 +01:00
|
|
|
use Cake\Log\Log;
|
2022-12-07 14:54:28 +01:00
|
|
|
|
|
|
|
class MetaTemplateNameDirectoryTable extends AppTable
|
|
|
|
{
|
|
|
|
|
|
|
|
public function initialize(array $config): void
|
|
|
|
{
|
|
|
|
parent::initialize($config);
|
|
|
|
$this->hasMany(
|
|
|
|
'MetaFields',
|
|
|
|
[
|
|
|
|
'foreignKey' => 'meta_template_directory_id',
|
|
|
|
]
|
|
|
|
);
|
2023-02-27 12:16:36 +01:00
|
|
|
$this->hasOne('MetaTemplates', [
|
|
|
|
'foreignKey' => 'meta_template_directory_id',
|
|
|
|
]);
|
2022-12-07 14:54:28 +01:00
|
|
|
$this->setDisplayField('name');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function validationDefault(Validator $validator): Validator
|
|
|
|
{
|
|
|
|
$validator
|
|
|
|
->notEmptyString('name')
|
|
|
|
->notEmptyString('namespace')
|
|
|
|
->notEmptyString('uuid')
|
|
|
|
->notEmptyString('version')
|
|
|
|
->requirePresence(['version', 'uuid', 'name', 'namespace'], 'create');
|
|
|
|
return $validator;
|
|
|
|
}
|
|
|
|
|
2023-02-13 15:14:43 +01:00
|
|
|
public function buildRules(RulesChecker $rules): RulesChecker
|
|
|
|
{
|
|
|
|
$rules->add($rules->isUnique(
|
|
|
|
['uuid', 'version'],
|
|
|
|
__('This meta-template already exists.')
|
|
|
|
));
|
|
|
|
return $rules;
|
|
|
|
}
|
|
|
|
|
2022-12-07 14:54:28 +01:00
|
|
|
public function createFromMetaTemplate(MetaTemplate $metaTemplate): MetaTemplateNameDirectory
|
|
|
|
{
|
|
|
|
$metaTemplateDirectory = $this->newEntity([
|
|
|
|
'name' => $metaTemplate['name'],
|
|
|
|
'namespace' => $metaTemplate['namespace'],
|
|
|
|
'uuid' => $metaTemplate['uuid'],
|
|
|
|
'version' => $metaTemplate['version'],
|
|
|
|
]);
|
2023-02-13 15:14:43 +01:00
|
|
|
$existingTemplate = $this->find()
|
|
|
|
->where([
|
|
|
|
'uuid' => $metaTemplate['uuid'],
|
|
|
|
'version' => $metaTemplate['version'],
|
|
|
|
])->first();
|
|
|
|
if (!empty($existingTemplate)) {
|
|
|
|
return $existingTemplate;
|
|
|
|
}
|
2023-02-27 12:16:36 +01:00
|
|
|
$savedEntity = $this->save($metaTemplateDirectory);
|
|
|
|
if ($savedEntity) {
|
|
|
|
return $metaTemplateDirectory;
|
|
|
|
}
|
|
|
|
Log::error(__('Could not save meta_template_directory. Reasons: {0}', json_encode($metaTemplateDirectory->getErrors())));
|
|
|
|
return false;
|
2022-12-07 14:54:28 +01:00
|
|
|
}
|
|
|
|
}
|