You are here

public function ConfigSplitIgnoreFilter::getIgnoredKeys in Configuration Split Ignore 8

Returns the list of ignored configuration names with their ignored keys.

File

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

Class

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

Namespace

Drupal\config_split_ignore\Plugin\ConfigFilter

Code

public function getIgnoredKeys() {
  if (empty($this->configuration['ignored'])) {
    return [];
  }
  $active_names = $this->active
    ->listAll();
  $ignored_keys = [];
  foreach ($this->configuration['ignored'] as $config_ignore_setting) {
    $ignore = explode(':', $config_ignore_setting, 2);
    $ignore_name_pattern = $ignore[0];
    $ignore_key = isset($ignore[1]) ? $ignore[1] : '';
    foreach ($active_names as $config_name) {
      if ($config_ignore_setting === static::FORCE_EXCLUSION_PREFIX . $config_name) {
        continue;
      }
      if ($config_ignore_setting === static::DELETION_PREFIX . $config_name) {
        continue;
      }
      if ($this
        ->stringMatch($ignore_name_pattern, $config_name)) {
        $ignored_keys[$config_name][$ignore_key] = TRUE;
      }
    }
  }
  foreach (array_keys($ignored_keys) as $ignore_name) {
    if (isset($ignored_keys[$ignore_name][''])) {

      // The whole configuration entity is ignored.
      $ignored_keys[$ignore_name] = [];
    }
    else {

      // Just some keys are ignored.
      $ignored_keys[$ignore_name] = array_keys($ignored_keys[$ignore_name]);
    }
  }
  return $ignored_keys;
}