You are here

function features_get_conflicts in Features 7.2

Same name and namespace in other branches
  1. 6 features.module \features_get_conflicts()
  2. 7 features.module \features_get_conflicts()

Detects potential conflicts between features that provide the same items.

Parameters

bool $reset: If TRUE, relevant caches will be reset.

Return value

string[][][][] Format: $[$module_A][$module_B][$component][] = $name E.g. $['myfeature']['otherfeature']['node'][] = 'article'. Nested array/map of (feature) modules that have conflicting features.

3 calls to features_get_conflicts()
features_admin_components in ./features.admin.inc
Form builder for 'admin/structure/features/%feature'.
features_admin_form in ./features.admin.inc
Form builder for 'admin/structure/features'.
features_form_validate in ./features.admin.inc
Validate handler for the 'manage features' form.

File

./features.module, line 990
Main *.module file for the 'features' module.

Code

function features_get_conflicts($reset = FALSE) {
  $conflicts = array();
  $component_info = features_get_components();
  $map = features_get_component_map(NULL, $reset);
  foreach ($map as $type => $components) {

    // Only check conflicts for components we know about.
    if (isset($component_info[$type])) {
      foreach ($components as $component => $modules) {
        if (isset($component_info[$type]['duplicates']) && $component_info[$type]['duplicates'] == FEATURES_DUPLICATES_ALLOWED) {
          continue;
        }
        elseif (count($modules) > 1) {
          foreach ($modules as $module) {
            if (!isset($conflicts[$module])) {
              $conflicts[$module] = array();
            }
            foreach ($modules as $m) {
              if ($m != $module) {
                $conflicts[$module][$m][$type][] = $component;
              }
            }
          }
        }
      }
    }
  }
  return $conflicts;
}