You are here

public static function ConfigSplitIgnoreFilter::create in Configuration Split Ignore 8

Creates an instance of the plugin.

Parameters

\Symfony\Component\DependencyInjection\ContainerInterface $container: The container to pull out services used in the plugin.

array $configuration: A configuration array containing information about the plugin instance.

string $plugin_id: The plugin ID for the plugin instance.

mixed $plugin_definition: The plugin implementation definition.

Return value

static Returns an instance of this plugin.

Overrides IgnoreFilter::create

File

src/Plugin/ConfigFilter/ConfigSplitIgnoreFilter.php, line 26

Class

ConfigSplitIgnoreFilter
Provides a ignore filter that allows to delete the configuration entities.

Namespace

Drupal\config_split_ignore\Plugin\ConfigFilter

Code

public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {

  /** @var \Drupal\Core\Entity\EntityStorageInterface $entity_storage */
  $entity_storage = $container
    ->get('entity_type.manager')
    ->getStorage('config_split');

  /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
  $config_factory = $container
    ->get('config.factory');

  // Load the list of ignored entities from enabled splits.
  $ignored = [];

  /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface $config_split */
  foreach ($entity_storage
    ->loadMultiple() as $config_split) {
    $config_name = $config_split
      ->getConfigDependencyName();
    $config = $config_factory
      ->get($config_name);
    if (!empty($config
      ->get('status'))) {
      $ignored = array_merge($ignored, $config_split
        ->getThirdPartySetting('config_split_ignore', 'entities', []));
    }
  }
  $ignored = array_unique($ignored);

  // Allow modules to alter the list of ignored entities.
  $container
    ->get('module_handler')
    ->invokeAll('config_split_ignore_settings_alter', [
    &$ignored,
  ]);

  // Set the list in the plugin configuration.
  $configuration['ignored'] = array_unique($ignored);
  return new static($configuration, $plugin_id, $plugin_definition, $container
    ->get('config.storage'));
}