/**
  * {@inheritdoc}
  */
 public function __construct(array $values)
 {
     // Filter out any @Translation annotation objects.
     foreach ($values as $key => $value) {
         if ($value instanceof Translation) {
             $values[$key] = $value->get();
         }
     }
     $this->definition = RulesContextDefinition::createFromArray($values);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function processDefinition(&$definition, $plugin_id)
 {
     parent::processDefinition($definition, $plugin_id);
     if (!isset($definition['context'])) {
         $definition['context'] = [];
     }
     // Convert the flat context arrays into ContextDefinition objects.
     foreach ($definition['context'] as $context_name => $values) {
         $definition['context'][$context_name] = ContextDefinition::createFromArray($values);
     }
 }
Example #3
0
 /**
  * Creates a component based on the given configuration array.
  *
  * @param array $configuration
  *   The component configuration, as returned from ::getConfiguration().
  *
  * @return static
  */
 public static function createFromConfiguration(array $configuration)
 {
     $configuration += ['context_definitions' => [], 'provided_context_definitions' => []];
     // @todo: Can we improve this use dependency injection somehow?
     $expression_manager = \Drupal::service('plugin.manager.rules_expression');
     $expression = $expression_manager->createInstance($configuration['expression']['id'], $configuration['expression']);
     $component = static::create($expression);
     foreach ($configuration['context_definitions'] as $name => $definition) {
         $component->addContextDefinition($name, ContextDefinition::createFromArray($definition));
     }
     foreach ($configuration['provided_context_definitions'] as $name => $definition) {
         $component->provideContext($name);
     }
     return $component;
 }
Example #4
0
 /**
  * Converts a context definition configuration array into objects.
  *
  * @param array $configuration
  *   The configuration properties for populating the context definition
  *   object.
  *
  * @return \Drupal\Core\Plugin\Context\ContextDefinitionInterface[]
  *   A list of context definitions with the same keys.
  */
 protected function createContextDefinitions(array $configuration)
 {
     return array_map(function ($definition_array) {
         return ContextDefinition::createFromArray($definition_array);
     }, $configuration);
 }
 /**
  * Gets the definitions of the used context.
  *
  * @return \Drupal\rules\Context\ContextDefinitionInterface[]
  *   The array of context definition, keyed by context name.
  */
 public function getContextDefinitions()
 {
     $definitions = [];
     foreach ($this->context_definitions as $name => $definition) {
         $definitions[$name] = ContextDefinition::createFromArray($definition);
     }
     return $definitions;
 }
 /**
  * Gets the definitions of the provided context.
  *
  * @return \Drupal\rules\Context\ContextDefinitionInterface[]
  *   The array of context definition, keyed by context name.
  */
 public function getProvidedContextDefinitions()
 {
     $definitions = [];
     if (!empty($this->component['provided_context_definitions'])) {
         foreach ($this->component['provided_context_definitions'] as $name => $definition) {
             $definitions[$name] = ContextDefinition::createFromArray($definition);
         }
     }
     return $definitions;
 }
 /**
  * {@inheritdoc}
  */
 public function __construct(array $values)
 {
     $this->definition = RulesContextDefinition::createFromArray($values);
 }