protected function FilterBag::initializePlugin

Initializes a plugin and stores the result in $this->pluginInstances.

Parameters

string $instance_id: The ID of the plugin instance to initialize.

Overrides PluginBag::initializePlugin

1 call to FilterBag::initializePlugin()
FilterBag::getAll in drupal/core/modules/filter/lib/Drupal/filter/FilterBag.php
Retrieves filter definitions and creates an instance for each filter.

File

drupal/core/modules/filter/lib/Drupal/filter/FilterBag.php, line 107
Contains \Drupal\filter\FilterBag.

Class

FilterBag
A collection of filters.

Namespace

Drupal\filter

Code

protected function initializePlugin($instance_id) {

  // If the filter was initialized before, just return.
  if (isset($this->pluginInstances[$instance_id])) {
    return;
  }

  // Filters have a 1:1 relationship to text formats and can be added and
  // instantiated at any time.
  $definition = $this->manager
    ->getDefinition($instance_id);
  if (isset($definition)) {
    $this
      ->addInstanceID($instance_id);

    // $configuration is the whole filter plugin instance configuration, as
    // contained in the text format configuration. The default configuration
    // is the filter plugin definition.
    // @todo Configuration should not be contained in definitions. Move into a
    //   FilterBase::init() method.
    $configuration = $definition;

    // Merge the actual configuration into the default configuration.
    if (isset($this->configurations[$instance_id])) {
      $configuration = NestedArray::mergeDeep($configuration, $this->configurations[$instance_id]);
    }
    $this->pluginInstances[$instance_id] = $this->manager
      ->createInstance($instance_id, $configuration, $this);
  }
  else {
    throw new PluginException(format_string("Unknown filter plugin ID '@filter'.", array(
      '@filter' => $instance_id,
    )));
  }
}