/** * {@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); }
/** * {@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); } }
/** * 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; }
/** * 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); }