コード例 #1
0
 /**
  * @param ProductInterface $product
  * @param array            $updates
  *
  * @return bool
  */
 protected function update(ProductInterface $product, array $updates)
 {
     $resolver = new OptionsResolver();
     $resolver->setRequired(['type']);
     $resolver->setAllowedValues(['type' => ['set_data', 'copy_data', 'add_data', 'remove_data']]);
     $resolver->setOptional(['field', 'data', 'locale', 'scope', 'from_field', 'to_field', 'from_locale', 'to_locale', 'from_scope', 'to_scope']);
     $resolver->setDefaults(['locale' => null, 'scope' => null, 'from_locale' => null, 'to_locale' => null, 'from_scope' => null, 'to_scope' => null]);
     foreach ($updates as $update) {
         $update = $resolver->resolve($update);
         switch ($update['type']) {
             case 'set_data':
                 $this->applySetData($product, $update);
                 break;
             case 'copy_data':
                 $this->applyCopyData($product, $update);
                 break;
             case 'add_data':
                 $this->applyAddData($product, $update);
                 break;
             case 'remove_data':
                 $this->applyRemoveData($product, $update);
                 break;
         }
     }
 }
コード例 #2
0
 /**
  * @return OptionsResolverInterface
  */
 protected function createOptionsResolver()
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional(['flush', 'copy_values_to_products', 'add_products', 'remove_products']);
     $resolver->setAllowedTypes(['flush' => 'bool', 'copy_values_to_products' => 'bool', 'add_products' => 'array', 'remove_products' => 'array']);
     return $resolver;
 }
コード例 #3
0
 /**
  * @return OptionsResolverInterface
  */
 protected function createOptionsResolver()
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional(['flush', 'schedule']);
     $resolver->setAllowedTypes(['flush' => 'bool', 'schedule' => 'bool']);
     return $resolver;
 }
コード例 #4
0
 /**
  * @return OptionsResolverInterface
  */
 protected function createOptionsResolver()
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional(['flush']);
     $resolver->setAllowedTypes(['flush' => 'bool']);
     $resolver->setDefaults(['flush' => true]);
     return $resolver;
 }
コード例 #5
0
 public function __construct(array $options = [])
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional($this->getOptionalOptions());
     $resolver->setAllowedTypes($this->getAllowedOptionTypes());
     $resolver->setDefaults($this->getDefaultOptions());
     $this->options = $resolver->resolve($options);
 }
コード例 #6
0
 /**
  * Resolves tag-it options.
  * See {@link https://github.com/aehlke/tag-it}
  *
  * @param FormInterface $form
  */
 protected function getTagitOptions(FormInterface $form)
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional(array('availableTags', 'autocomplete', 'showAutocompleteOnFocus', 'removeConfirmation', 'caseSensitive', 'allowDuplicates', 'allowSpaces', 'readOnly', 'tagLimit', 'singleField', 'singleFieldDelimiter', 'singleFieldNode', 'tabIndex', 'placeholderText'));
     $resolver->setAllowedTypes(array('autocomplete' => 'array'));
     $resolver->setDefaults(array('allowSpaces' => true, 'removeConfirmation' => true, 'singleFieldDelimiter' => ',', 'autocomplete' => array()));
     return $resolver->resolve($form->getConfig()->getOption('tagit', array()));
 }
コード例 #7
0
 /**
  * {@inheritDoc}
  */
 public function configureOptions(OptionsResolver $resolver)
 {
     $optionNames = array('flow_instance', 'flow_instance_key', 'flow_step', 'flow_step_key');
     if (Kernel::VERSION_ID < 20600) {
         $resolver->setOptional($optionNames);
     } else {
         $resolver->setDefined($optionNames);
     }
 }
コード例 #8
0
 public function send(array $config = [])
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional(array_keys($config));
     $resolver->setRequired(['protocol']);
     $config = $resolver->resolve($config);
     if (false !== ($transport = $this->transportChain->getTransport($config['protocol']))) {
         return $transport->send($config);
     }
 }
コード例 #9
0
ファイル: ArrayLoader.php プロジェクト: virasak/Finite
 /**
  * @param StateMachineInterface $stateMachine
  */
 private function loadTransitions(StateMachineInterface $stateMachine)
 {
     $resolver = new OptionsResolver();
     $resolver->setRequired(array('from', 'to'));
     $resolver->setOptional(array('guard'));
     $resolver->setNormalizers(array('from' => function (Options $options, $v) {
         return (array) $v;
     }, 'guard' => function (Options $options, $v) {
         return !isset($v) ? null : $v;
     }));
     foreach ($this->config['transitions'] as $transition => $config) {
         $config = $resolver->resolve($config);
         $stateMachine->addTransition(new Transition($transition, $config['from'], $config['to'], $config['guard']));
     }
 }
コード例 #10
0
 /**
  * @param ProductInterface $product
  * @param array            $updates
  *
  * @return boolean
  */
 protected function update(ProductInterface $product, array $updates)
 {
     $resolver = new OptionsResolver();
     $resolver->setRequired(['type']);
     $resolver->setAllowedValues(['type' => ['set_value', 'copy_value']]);
     $resolver->setOptional(['field', 'value', 'locale', 'scope', 'from_field', 'to_field', 'from_locale', 'to_locale', 'from_scope', 'to_scope']);
     $resolver->setDefaults(['locale' => null, 'scope' => null, 'from_locale' => null, 'to_locale' => null, 'from_scope' => null, 'to_scope' => null]);
     foreach ($updates as $update) {
         $update = $resolver->resolve($update);
         if ('set_value' === $update['type']) {
             $this->applySetValue($product, $update);
         } else {
             $this->applyCopyValue($product, $update);
         }
     }
 }
コード例 #11
0
 /**
  * Add the client_validation option
  *
  * @param OptionsResolverInterface $resolver
  */
 public function configureOptions(OptionsResolver $resolver)
 {
     $resolver->setOptional(array('client_validation'));
 }
コード例 #12
0
 /**
  * {@inheritdoc}
  */
 public function configureOptions(OptionsResolver $resolver)
 {
     $resolver->setOptional(array('block', 'subblock', 'block_config', 'tooltip'));
 }
コード例 #13
0
 /**
  * @return OptionsResolverInterface
  */
 protected function createOptionsResolver()
 {
     $resolver = new OptionsResolver();
     $required = [];
     $allowedTypes = ['family' => 'string', 'enabled' => 'bool', 'categories' => 'string', 'groups' => 'string'];
     $optional = array_merge(['family', 'enabled', 'categories', 'groups'], $this->attrColumnsResolver->resolveAttributeColumns(), $this->getOptionalAssociationFields());
     $resolver->setRequired($required);
     $resolver->setOptional($optional);
     $resolver->setAllowedTypes($allowedTypes);
     $booleanNormalizer = function ($options, $value) {
         return (bool) $value;
     };
     $resolver->setNormalizers(['enabled' => $booleanNormalizer]);
     return $resolver;
 }
コード例 #14
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $queue = $input->getArgument('queue');
     $connection = $input->getArgument('connection');
     $factory = $this->getContainer()->get('swarrot.factory.default');
     $messageProvider = $factory->getMessageProvider($queue, $connection);
     $stack = new Builder();
     if (array_key_exists('signal_handler', $this->processorStack)) {
         $stack->push($this->processorStack['signal_handler'], $this->logger);
     }
     if (array_key_exists('max_messages', $this->processorStack)) {
         $stack->push($this->processorStack['max_messages'], $this->logger);
     }
     if (array_key_exists('max_execution_time', $this->processorStack)) {
         $stack->push($this->processorStack['max_execution_time'], $this->logger);
     }
     if (array_key_exists('exception_catcher', $this->processorStack) && !$input->getOption('no-catch')) {
         $stack->push($this->processorStack['exception_catcher'], $this->logger);
     }
     if (array_key_exists('ack', $this->processorStack)) {
         $stack->push($this->processorStack['ack'], $messageProvider, $this->logger);
     }
     if (array_key_exists('retry', $this->processorStack) && !$input->getOption('no-retry')) {
         $exchange = 'retry';
         if (isset($this->extras['retry_exchange'])) {
             $exchange = $this->extras['retry_exchange'];
         }
         $messagePublisher = $factory->getMessagePublisher($exchange, $connection);
         $stack->push($this->processorStack['retry'], $messagePublisher, $this->logger);
     }
     $processor = $stack->resolve($this->processor);
     $optionsResolver = new OptionsResolver();
     $optionsResolver->setOptional(array('queue', 'connection'));
     $consumer = new Consumer($messageProvider, $processor, $optionsResolver);
     $consumer->consume($this->getOptions($input));
 }
コード例 #15
0
 /**
  * {@inheritdoc}
  */
 public function configureOptions(OptionsResolver $resolver)
 {
     $resolver->setOptional($this->optionalParameters);
 }
コード例 #16
0
 /**
  * Sets the default options
  *
  * @param OptionsResolver $resolver
  */
 protected function setDefaultOptions(OptionsResolver $resolver)
 {
     $resolver->setOptional(['encoding']);
     $resolver->setDefaults(['length' => null, 'delimiter' => ',', 'enclosure' => '"', 'escape' => '\\']);
 }
コード例 #17
0
ファイル: OptionResolverTest.php プロジェクト: rikaix/symfony
 /**
  * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException
  */
 public function testSetOptionalFailsIfDefaultIsPassed()
 {
     $this->resolver->setOptional(array('one' => '1'));
 }
コード例 #18
0
 /**
  * Configure OptionResolver with default options
  *
  * @param OptionsResolver $resolver
  * @param array           $fieldOptions
  */
 protected function configureDefaultOptions(OptionsResolver $resolver, array $fieldOptions)
 {
     foreach ($fieldOptions as $name => $options) {
         if (isset($options[1]) && isset($options[1]['required']) && $options[1]['required']) {
             $resolver->setRequired(array($name));
         } else {
             $resolver->setOptional(array($name));
         }
         $hasChoices = isset($options[1]) && isset($options[1]['choices']) && count($options[1]['choices']) > 0 ? true : false;
         if ($hasChoices) {
             $resolver->setAllowedValues(array($name => array_keys($options[1]['choices'])));
         }
     }
 }
コード例 #19
0
 private function configureOptions(OptionsResolver $optionsResolver)
 {
     $optionsResolver->setRequired(array('storage_dir'));
     $optionsResolver->setOptional(array('root_dir'));
     $optionsResolver->setAllowedTypes(array('storage_dir' => 'string', 'root_dir' => 'string'));
 }
コード例 #20
0
 /**
  * {@inheritdoc}
  */
 protected function setDefaultOptions(OptionsResolver $resolver)
 {
     $resolver->setDefaults(array('exclude_worksheets' => array(), 'parser_options' => array()));
     $resolver->setOptional(array('include_worksheets'));
 }
コード例 #21
0
ファイル: BaseRequest.php プロジェクト: it2k/tmapi
 /**
  * Формирует запрос и отправляет его на сервер
  * @param array $params
  */
 public function send(array $params)
 {
     $resolver = new OptionsResolver();
     $resolver->setOptional($this->requestParamsExists);
     $resolver->setDefaults($this->requestParams);
     $resolver->setRequired($this->requestParamsRequired);
     if ($this->sendRequestParamsAsJson) {
         $this->requestData = json_encode($resolver->resolve($params));
     } else {
         $this->requestData = http_build_query($resolver->resolve($params));
     }
     $this->sendRequest($this->requestData);
 }
コード例 #22
0
 public function testKnownIfOptional()
 {
     $this->assertFalse($this->resolver->isKnown('foo'));
     $this->resolver->setOptional(array('foo'));
     $this->assertTrue($this->resolver->isKnown('foo'));
 }
コード例 #23
0
ファイル: Legacy.php プロジェクト: masev/ezpublish-kernel
 private function configureOptions(OptionsResolver $resolver)
 {
     $resolver->setRequired(array('var_dir', 'draft_images_dir', 'published_images_dir'));
     $resolver->setOptional(array('storage_dir'));
     $resolver->setAllowedTypes(array('var_dir' => 'string', 'storage_dir' => 'string', 'draft_images_dir' => 'string', 'published_images_dir' => 'string'));
 }
コード例 #24
0
 /**
  * @param OptionsResolver $resolver
  */
 protected function configureOptions(OptionsResolver $resolver)
 {
     $options = array('customer-id', 'license-key', 'api-endpoint', 'server-uri');
     // Could use setDefined() with symfony ~2.6
     $resolver->setOptional($options);
     $resolver->setDefaults(array('customer-id' => null, 'license-key' => null, 'server-uri' => null, 'api-endpoint' => null));
 }
コード例 #25
0
 /**
  * Configure the option resolver
  * @param OptionsResolver $resolver
  */
 protected function configureOptions(OptionsResolver $resolver)
 {
     $resolver->setRequired(['field']);
     $resolver->setOptional(['locale', 'scope']);
 }
コード例 #26
0
 /**
  * @param array $filters
  *
  * @return \Akeneo\Component\StorageUtils\Cursor\CursorInterface
  */
 protected function getProductsCursor(array $filters)
 {
     $productQueryBuilder = $this->getProductQueryBuilder();
     $resolver = new OptionsResolver();
     $resolver->setRequired(['field', 'operator', 'value']);
     $resolver->setOptional(['context']);
     $resolver->setDefaults(['context' => ['locale' => null, 'scope' => null]]);
     foreach ($filters as $filter) {
         $filter = $resolver->resolve($filter);
         $productQueryBuilder->addFilter($filter['field'], $filter['operator'], $filter['value'], $filter['context']);
     }
     return $productQueryBuilder->execute();
 }