. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Repositories; use Espo\Core\Repositories\Database; use Espo\Entities\LayoutRecord; use Espo\Entities\LayoutSet as LayoutSetEntity; use Espo\ORM\Entity; /** * @extends Database */ class LayoutSet extends Database { protected function afterSave(Entity $entity, array $options = []) { parent::afterSave($entity); if (!$entity->isNew() && $entity->has('layoutList')) { $listBefore = $entity->getFetched('layoutList') ?? []; $listNow = $entity->get('layoutList') ?? []; foreach ($listBefore as $name) { if (!in_array($name, $listNow)) { $layout = $this->entityManager ->getRDBRepository(LayoutRecord::ENTITY_TYPE) ->where([ 'layoutSetId' => $entity->getId(), 'name' => $name, ]) ->findOne(); if ($layout) { $this->entityManager->removeEntity($layout); } } } } } protected function afterRemove(Entity $entity, array $options = []) { parent::afterRemove($entity); $layoutList = $this->entityManager ->getRDBRepository(LayoutRecord::ENTITY_TYPE) ->where([ 'layoutSetId' => $entity->getId(), ]) ->find(); foreach ($layoutList as $layout) { $this->entityManager->removeEntity($layout); } } }