/** * @param PersistConfigEvent $event */ public function persistConfig(PersistConfigEvent $event) { $event->getConfigManager()->calculateConfigChangeSet($event->getConfig()); $change = $event->getConfigManager()->getConfigChangeSet($event->getConfig()); if ($event->getConfig()->getId()->getScope() == 'email' && isset($change['available_in_template'])) { $this->cache->delete($this->cacheKey); } }
/** * @param PersistConfigEvent $event */ public function prePersistEntityConfig(PersistConfigEvent $event) { $className = $event->getConfig()->getId()->getClassName(); $configManager = $event->getConfigManager(); $ownershipConfigProvider = $configManager->getProvider('ownership'); if ($ownershipConfigProvider->hasConfig($className)) { $ownershipConfig = $ownershipConfigProvider->getConfig($className); $haveChanges = false; $ownerType = $ownershipConfig->get('owner_type'); if ($ownerType === 'NONE') { $ownerType = null; $ownershipConfig->remove('owner_type'); $haveChanges = true; } if ($ownerType && $this->isCustomEntity($className, $configManager)) { if (!$ownershipConfig->has('owner_field_name')) { // update 'ownership' config for entity $ownershipConfig->set('owner_field_name', 'owner'); $ownershipConfig->set('owner_column_name', 'owner_id'); $haveChanges = true; } if (!$ownershipConfig->has('organization_field_name') && in_array($ownerType, [OwnershipType::OWNER_TYPE_USER, OwnershipType::OWNER_TYPE_BUSINESS_UNIT])) { // update organization config for entity $ownershipConfig->set('organization_field_name', 'organization'); $ownershipConfig->set('organization_column_name', 'organization_id'); $haveChanges = true; } } if ($haveChanges) { $configManager->persist($ownershipConfig); $configManager->calculateConfigChangeSet($ownershipConfig); } } }
public function testEvent() { $config = new Config(new EntityConfigId('Test/Class', 'test')); $event = new PersistConfigEvent($config, $this->configManager); $this->assertEquals($config, $event->getConfig()); $this->assertEquals($config->getId(), $event->getConfigId()); $this->assertEquals($this->configManager, $event->getConfigManager()); }
/** * @param PersistConfigEvent $event */ public function prePersistEntityConfig(PersistConfigEvent $event) { $cp = $event->getConfigManager()->getProvider('security'); $className = $event->getConfig()->getId()->getClassName(); if ($cp->hasConfig($className)) { $config = $cp->getConfig($className); $this->provider->clearCache($config->get('type')); } }
/** * @param PersistConfigEvent $event */ public function prePersistEntityConfig(PersistConfigEvent $event) { $event->getConfigManager()->calculateConfigChangeSet($event->getConfig()); $changes = $event->getConfigManager()->getConfigChangeSet($event->getConfig()); $isDeleted = false; // Now if you press delete entity button, in state variable, in 1st position will be "Deleted" string. // If you press restore entity, then "Deleted" string will be at 0 position. if (isset($changes['state']) && $changes['state'][1] === 'Deleted') { $isDeleted = true; } $cp = $event->getConfigManager()->getProvider('ownership'); $className = $event->getConfig()->getId()->getClassName(); if ($cp->hasConfig($className)) { $this->provider->clearCache($className); if (!$isDeleted) { $this->provider->warmUpCache($className); } } }
/** * @param PersistConfigEvent $event */ public function persistConfig(PersistConfigEvent $event) { $config = $event->getConfig(); if ($config->getId()->getScope() !== 'email') { return; } $change = $event->getConfigManager()->getConfigChangeSet($config); if (isset($change['available_in_template'])) { $this->cache->delete($this->cacheKey); } }
/** * @param PersistConfigEvent $event */ public function prePersistEntityConfig(PersistConfigEvent $event) { $config = $event->getConfig(); $configId = $config->getId(); if ($configId->getScope() !== 'extend') { return; } $className = $configId->getClassName(); $this->provider->clearCache($className); $change = $event->getConfigManager()->getConfigChangeSet($config); $isDeleted = isset($change['state']) && $change['state'][1] === ExtendScope::STATE_DELETE; if (!$isDeleted) { $this->provider->warmUpCache($className); } }
/** * @param PersistConfigEvent $event */ public function persistConfig(PersistConfigEvent $event) { $config = $event->getConfig(); $configId = $config->getId(); if ($configId->getScope() !== 'search') { return; } $configManager = $event->getConfigManager(); $change = $configManager->getConfigChangeSet($config); if (!isset($change['searchable'])) { return; } $extendConfig = $configManager->getProvider('extend')->getConfig($configId->getClassName()); if ($extendConfig->get('state') === ExtendScope::STATE_ACTIVE) { $this->addReindexJob($configId->getClassName()); } else { $this->addPostponeJob($configId->getClassName()); } }
/** * @param PersistConfigEvent $event */ public function persistConfig(PersistConfigEvent $event) { $eventConfig = $event->getConfig(); $eventConfigId = $event->getConfigId(); if ($eventConfigId->getScope() !== 'search') { return; } $configManager = $event->getConfigManager(); $configManager->calculateConfigChangeSet($eventConfig); $change = $configManager->getConfigChangeSet($eventConfig); if (empty($change) || !array_key_exists('searchable', $change)) { return; } $class = $eventConfigId->getClassName(); if ($configManager->getProvider('extend')->getConfig($class)->get('state') === ExtendScope::STATE_ACTIVE) { $this->addReindexJob($eventConfigId->getClassName()); } else { $this->addPostponeJob($eventConfigId->getClassName()); } }
/** * Update configs depending on their data and persist * - update entity and field states * - create index config data * * @param PersistConfigEvent $event */ public function persistConfig(PersistConfigEvent $event) { $eventConfig = $event->getConfig(); $eventConfigId = $eventConfig->getId(); $scope = $eventConfigId->getScope(); if (!$eventConfigId instanceof FieldConfigId) { return; } $change = $event->getConfigManager()->getConfigChangeSet($eventConfig); $stateChanged = isset($change['state']); $isCustom = $eventConfig->is('owner', ExtendScope::OWNER_CUSTOM); // synchronize field state with entity state, when custom field state changed if ($isCustom && 'extend' == $scope && $stateChanged) { $configManager = $event->getConfigManager(); $className = $eventConfig->getId()->getClassName(); $entityConfig = $configManager->getProvider($scope)->getConfig($className); if ($entityConfig->in('state', [ExtendScope::STATE_ACTIVE, ExtendScope::STATE_DELETE])) { $entityConfig->set('state', ExtendScope::STATE_UPDATE); $configManager->persist($entityConfig); } } }
/** * @param PersistConfigEvent $event * * @todo as discussed with Alpha team thm method will be refactored in this sprint * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function persistConfig(PersistConfigEvent $event) { $change = $event->getConfigManager()->getConfigChangeSet($event->getConfig()); $scope = $event->getConfig()->getId()->getScope(); $className = $event->getConfig()->getId()->getClassName(); if ($scope == 'extend' && $event->getConfig()->getId() instanceof FieldConfigId && $event->getConfig()->is('owner', ExtendManager::OWNER_CUSTOM) && count(array_intersect_key(array_flip(['length', 'precision', 'scale', 'state']), $change))) { $entityConfig = $event->getConfigManager()->getProvider($scope)->getConfig($className); if ($event->getConfig()->get('state') != ExtendManager::STATE_NEW && $event->getConfig()->get('state') != ExtendManager::STATE_DELETED && !isset($change['state'])) { $event->getConfig()->set('state', ExtendManager::STATE_UPDATED); $event->getConfigManager()->calculateConfigChangeSet($event->getConfig()); } /** * Relations case */ if ($event->getConfig()->get('state') == ExtendManager::STATE_NEW && in_array($event->getConfig()->getId()->getFieldType(), ['oneToMany', 'manyToOne', 'manyToMany'])) { $this->createRelation($event->getConfig()); } if ($entityConfig->get('state') != ExtendManager::STATE_NEW) { $entityConfig->set('state', ExtendManager::STATE_UPDATED); $event->getConfigManager()->persist($entityConfig); } } /** @var ConfigProvider $extendConfigProvider */ $extendConfigProvider = $event->getConfigManager()->getProvider('extend'); $extendFieldConfig = $extendConfigProvider->getConfigById($event->getConfig()->getId()); if ($scope == 'datagrid' && $event->getConfig()->getId() instanceof FieldConfigId && !in_array($event->getConfig()->getId()->getFieldType(), ['text']) && $extendFieldConfig->is('is_extend') && isset($change['is_visible'])) { $index = []; $extendConfig = $extendConfigProvider->getConfig($className); if ($extendConfig->has('index')) { $index = $extendConfig->get('index'); } $index[$event->getConfig()->getId()->getFieldName()] = $event->getConfig()->get('is_visible'); $extendConfig->set('index', $index); $event->getConfigManager()->persist($extendConfig); } }