mirror of
https://github.com/espocrm/espocrm.git
synced 2026-06-29 23:46:10 +00:00
array value cleanup
This commit is contained in:
@@ -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')) {
|
||||
|
||||
@@ -38,4 +38,6 @@ class ActionHistoryRecord extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,4 +38,6 @@ class AuthFailLogRecord extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -38,4 +38,6 @@ class AuthLogRecord extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -38,4 +38,6 @@ class AuthToken extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
@@ -39,6 +39,8 @@ class Job extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
@@ -38,4 +38,6 @@ class NextNumber extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ class PhoneNumber extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
|
||||
protected function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
@@ -38,4 +38,6 @@ class ScheduledJob extends \Espo\Core\ORM\Repositories\RDB
|
||||
protected $processFieldsAfterSaveDisabled = true;
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,8 @@ class UniqueId extends \Espo\Core\ORM\Repositories\RDB
|
||||
|
||||
protected $processFieldsBeforeSaveDisabled = true;
|
||||
|
||||
protected $processFieldsAfterRemoveDisabled = true;
|
||||
|
||||
protected function getNewEntity()
|
||||
{
|
||||
$entity = parent::getNewEntity();
|
||||
|
||||
Reference in New Issue
Block a user