You are here

public function FeaturesManager::detectOverrides in Features 8.3

Same name and namespace in other branches
  1. 8.4 src/FeaturesManager.php \Drupal\features\FeaturesManager::detectOverrides()

Determines which config is overridden in a package.

@result array $different The array of config items that are overridden.

Parameters

\Drupal\features\Package $feature: The package array. The 'state' property is updated if overrides are detected.

bool $include_new: If set, include newly detected config not yet exported.

Overrides FeaturesManagerInterface::detectOverrides

See also

\Drupal\features\FeaturesManagerInterface::detectNew()

File

src/FeaturesManager.php, line 1289

Class

FeaturesManager
The FeaturesManager provides helper functions for building packages.

Namespace

Drupal\features

Code

public function detectOverrides(Package $feature, $include_new = FALSE) {

  /** @var \Drupal\config_update\ConfigDiffInterface $config_diff */
  $config_diff = \Drupal::service('config_update.config_diff');
  $different = [];
  foreach ($feature
    ->getConfig() as $name) {
    $active = $this->configStorage
      ->read($name);
    $extension = $this->extensionStorages
      ->read($name);
    $extension = !empty($extension) ? $extension : [];
    if (($include_new || !empty($extension)) && !$config_diff
      ->same($extension, $active)) {
      $different[] = $name;
    }
  }
  if (!empty($different)) {
    $feature
      ->setState(FeaturesManagerInterface::STATE_OVERRIDDEN);
  }
  return $different;
}