Пример #1
0
 /**
  * @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);
         }
     }
 }
 /**
  *  Test create new field (entity state is 'Active')
  *  ConfigManager should have persisted 'extend_TestClass' with state 'Requires update'
  */
 public function testScopeExtendNewFieldActiveEntity()
 {
     $this->runPersistConfig($this->getEventConfigNewField(), $this->getEntityConfig(['state' => ExtendScope::STATE_ACTIVE]), $this->getChangeSet());
     /** @var ConfigManager $cm */
     $cm = $this->event->getConfigManager();
     $this->assertAttributeEquals(['extend_TestClass' => $this->getEntityConfig(['state' => ExtendScope::STATE_UPDATE])], 'persistConfigs', $cm);
 }
 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'));
     }
 }
Пример #5
0
 /**
  * @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());
     }
 }
Пример #9
0
 /**
  * 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
  */
 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)
 {
     $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
  *
  * @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);
     }
 }