/**
  * @param $entityName
  * @param $scopeId
  * @return Config
  */
 public function getByEntity($entityName, $scopeId)
 {
     $config = $this->findOneBy(['scopedEntity' => $entityName, 'recordId' => $scopeId]);
     if (!$config) {
         $config = new Config();
         $config->setEntity($entityName)->setRecordId($scopeId);
     }
     return $config;
 }
 public function preSubmitData(FormEvent $event)
 {
     $data = $event->getData();
     if (!$data) {
         $data = $event->getForm()->getParent()->getData();
     }
     $form = $event->getForm();
     $targetEntity = null;
     if (isset($data['target_entity'])) {
         $targetEntity = $data['target_entity'];
     }
     $relationType = $this->config->getId()->getFieldType();
     if ($relationType == 'manyToOne') {
         //target_field
         $targetField = null;
         if (isset($data['target_field'])) {
             $targetField = $data['target_field'];
         }
         $form->add($this->formFactory->createNamed('target_field', new TargetFieldType($this->configProvider, $targetEntity), $targetField));
     } else {
         //target_grid
         $targetGrid = null;
         if (isset($data['target_grid'])) {
             $targetGrid = $data['target_grid'];
         }
         $form->add($this->formFactory->createNamed('target_grid', new TargetFieldType($this->configProvider, $targetEntity), $targetGrid, ['multiple' => true, 'label' => 'Related entity data fields']));
         //target_title
         $targetTitle = null;
         if (isset($data['target_title'])) {
             $targetTitle = $data['target_title'];
         }
         $form->add($this->formFactory->createNamed('target_title', new TargetFieldType($this->configProvider, $targetEntity), $targetTitle, ['multiple' => true, 'label' => 'Related entity info title']));
         //target_detailed
         $targetDetailed = null;
         if (isset($data['target_detailed'])) {
             $targetDetailed = $data['target_detailed'];
         }
         $form->add($this->formFactory->createNamed('target_detailed', new TargetFieldType($this->configProvider, $targetEntity), $targetDetailed, ['multiple' => true, 'label' => 'Related entity detailed']));
     }
     if ($event->getName() == FormEvents::PRE_SUBMIT) {
         $event->getForm()->getParent()->setData(array_merge($event->getForm()->getParent()->getData(), $data));
     }
 }
 /**
  * Test saving settings
  */
 public function testSave()
 {
     $config = new Config();
     $configValue1 = new ConfigValue();
     $configValue1->setSection('oro_user')->setName('update')->setValue('old value')->setType('scalar');
     $configValue2 = new ConfigValue();
     $configValue2->setSection('oro_user')->setName('remove')->setValue('test')->setType('scalar');
     $config->getValues()->add($configValue1);
     $config->getValues()->add($configValue2);
     $settings = ['oro_user.update' => ['value' => 'updated value', 'use_parent_scope_value' => false], 'oro_user.remove' => ['use_parent_scope_value' => true], 'oro_user.add' => ['value' => 'new value', 'use_parent_scope_value' => false]];
     $this->repo->expects($this->once())->method('findByEntity')->with('app', 0)->will($this->returnValue($config));
     $this->cache->expects($this->once())->method('save')->with('app_0', ['oro_user' => ['update' => ['value' => 'updated value', 'use_parent_scope_value' => false, 'createdAt' => null, 'updatedAt' => null], 'add' => ['value' => 'new value', 'use_parent_scope_value' => false, 'createdAt' => null, 'updatedAt' => null]]]);
     $this->em->expects($this->once())->method('persist')->with($this->identicalTo($config));
     $this->em->expects($this->once())->method('flush');
     $result = $this->manager->save($settings);
     $this->assertEquals([['oro_user.update' => 'updated value', 'oro_user.add' => 'new value'], ['oro_user.remove']], $result);
     $this->assertEquals('updated value', $this->manager->getSettingValue('oro_user.update'));
     $this->assertNull($this->manager->getSettingValue('oro_user.remove'));
     $this->assertEquals('new value', $this->manager->getSettingValue('oro_user.add'));
 }
示例#4
0
 public function testGetId()
 {
     $this->assertNull($this->object->getId());
 }
 /**
  * {@inheritDoc}
  */
 public function getOrCreateValue($section, $key)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getOrCreateValue', array($section, $key));
     return parent::getOrCreateValue($section, $key);
 }
示例#6
0
 /**
  * @param Config $config
  *
  * @return array
  */
 protected function convertToSettings(Config $config)
 {
     $settings = [];
     foreach ($config->getValues() as $value) {
         $settings[$value->getSection()][$value->getName()] = ['value' => $value->getValue(), 'use_parent_scope_value' => false, 'createdAt' => $value->getCreatedAt(), 'updatedAt' => $value->getUpdatedAt()];
     }
     return $settings;
 }