array value cleanup

This commit is contained in:
yuri
2018-08-14 10:25:10 +03:00
parent 81ff01e9be
commit 0b7743419e
12 changed files with 55 additions and 0 deletions

View File

@@ -55,6 +55,8 @@ class RDB extends \Espo\ORM\Repositories\RDB implements Injectable
protected $processFieldsBeforeSaveDisabled = false;
protected $processFieldsAfterRemoveDisabled = false;
protected function addDependency($name)
{
$this->dependencies[] = $name;
@@ -206,6 +208,11 @@ class RDB extends \Espo\ORM\Repositories\RDB implements Injectable
protected function afterRemove(Entity $entity, array $options = array())
{
parent::afterRemove($entity, $options);
if (!$this->processFieldsAfterRemoveDisabled) {
$this->processArrayFieldsRemove($entity);
}
if (!$this->hooksDisabled && empty($options['skipHooks'])) {
$this->getEntityManager()->getHookManager()->process($this->entityType, 'afterRemove', $entity, $options);
}
@@ -418,6 +425,16 @@ class RDB extends \Espo\ORM\Repositories\RDB implements Injectable
}
}
protected function processArrayFieldsRemove(Entity $entity)
{
foreach ($entity->getAttributes() as $attribute => $defs) {
if (!isset($defs['type']) || $defs['type'] !== Entity::JSON_ARRAY) continue;
if (!$entity->getAttributeParam($attribute, 'storeArrayValues')) continue;
if ($entity->getAttributeParam($attribute, 'notStorable')) continue;
$this->getEntityManager()->getRepository('ArrayValue')->deleteEntityAttribute($entity, $attribute);
}
}
protected function processEmailAddressSave(Entity $entity)
{
if ($entity->hasRelation('emailAddresses') && $entity->hasAttribute('emailAddress')) {

View File

@@ -38,4 +38,6 @@ class ActionHistoryRecord extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -41,6 +41,8 @@ class ArrayValue extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
public function storeEntityAttribute(Entity $entity, $attribute, $populateMode = false)
{
if (!$entity->getAttributeType($attribute) === Entity::JSON_ARRAY) {
@@ -92,4 +94,20 @@ class ArrayValue extends \Espo\Core\ORM\Repositories\RDB
$this->save($arrayValue);
}
}
public function deleteEntityAttribute(Entity $entity, $attribute)
{
if (!$entity->id) {
throw new Error("ArrayValue: Can't delete {$attribute} w/o id given.");
}
$list = $this->select(['id'])->where([
'entityType' => $entity->getEntityType(),
'entityId' => $entity->id,
'attribute' => $attribute
])->find();
foreach ($list as $arrayValue) {
$this->deleteFromDb($arrayValue->id);
}
}
}

View File

@@ -38,4 +38,6 @@ class AuthFailLogRecord extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -38,4 +38,6 @@ class AuthLogRecord extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -38,4 +38,6 @@ class AuthToken extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -37,6 +37,8 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
protected function init()
{
parent::init();

View File

@@ -39,6 +39,8 @@ class Job extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
protected function init()
{
parent::init();

View File

@@ -38,4 +38,6 @@ class NextNumber extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -37,6 +37,8 @@ class PhoneNumber extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
protected function init()
{
parent::init();

View File

@@ -38,4 +38,6 @@ class ScheduledJob extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsAfterSaveDisabled = true;
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
}

View File

@@ -39,6 +39,8 @@ class UniqueId extends \Espo\Core\ORM\Repositories\RDB
protected $processFieldsBeforeSaveDisabled = true;
protected $processFieldsAfterRemoveDisabled = true;
protected function getNewEntity()
{
$entity = parent::getNewEntity();