/** * Returns the configuration dependent on given items. * * @param array $item_names * An array of item names. * * @return array * An array of config items. */ protected function getConfigDependents(array $item_names = NULL) { $result = []; $config_collection = $this->featuresManager->getConfigCollection(); $packages = $this->featuresManager->getPackages(); $settings = $this->featuresManager->getSettings(); $allow_conflicts = $settings->get('conflicts'); if (empty($item_names)) { $item_names = array_keys($config_collection); } foreach ($item_names as $item_name) { if ($config_collection[$item_name]->getPackage()) { foreach ($config_collection[$item_name]->getDependents() as $dependent_item_name) { if (isset($config_collection[$dependent_item_name])) { $allow = TRUE; if (!$allow_conflicts && $config_collection[$dependent_item_name]->getPackage()) { if ($packages[$config_collection[$dependent_item_name]->getPackage()]) { $allow = $packages[$config_collection[$dependent_item_name]->getPackage()]->getStatus() == FeaturesManagerInterface::STATUS_NO_EXPORT || $config_collection[$item_name]->getPackage() == $config_collection[$dependent_item_name]->getPackage(); } } if ($allow) { $result[] = $dependent_item_name; } } } } } return $result; }
/** * Returns the configuration dependent on given items. * * @param array $item_names * An array of item names. * @param string $package_name * Short machine name of feature to process. * * @return array * An array of config items. */ protected function getConfigDependents(array $item_names, $package_name) { $result = []; $config_collection = $this->featuresManager->getConfigCollection(); $packages = $this->featuresManager->getPackages(); $settings = $this->featuresManager->getSettings(); $allow_conflicts = $settings->get('conflicts'); if (empty($item_names)) { $item_names = array_keys($config_collection); } // Add any existing auto-detected items already in the package config $this->package = $packages[$package_name]; $package_config = isset($this->package) ? $this->package->getConfig() : array(); $package_config = !empty($package_config) ? array_unique(array_merge($package_config, $item_names)) : $item_names; foreach ($package_config as $config_name) { if (!$config_collection[$config_name]->getPackageExcluded()) { $result[] = $config_name; } } // Now add dependents of the items selected foreach ($item_names as $item_name) { if ($config_collection[$item_name]->getPackage()) { foreach ($config_collection[$item_name]->getDependents() as $dependent_item_name) { if (isset($config_collection[$dependent_item_name])) { $allow = TRUE; if (!$allow_conflicts && $config_collection[$dependent_item_name]->getPackage()) { if ($packages[$config_collection[$dependent_item_name]->getPackage()]) { $allow = $packages[$config_collection[$dependent_item_name]->getPackage()]->getStatus() == FeaturesManagerInterface::STATUS_NO_EXPORT || $config_collection[$item_name]->getPackage() == $config_collection[$dependent_item_name]->getPackage(); } } if ($allow) { $result[] = $dependent_item_name; } } } } } return $result; }