You are here

function features_override_supported_components in Features Override 7

Same name and namespace in other branches
  1. 6 features_override.module \features_override_supported_components()

Return the component types that can be overridden.

Allow components to declare themselves 'overridable' but explicitly exclude component types unlikely to override cleanly.

Return value

Array of component types.

2 calls to features_override_supported_components()
features_override_detect_overrides in ./features_override.module
Detect differences between DB and code components of a feature.
features_override_form_system_modules_alter in ./features_override.module
Clear features_override cache on admin/modules form.

File

./features_override.module, line 126
Export features component overrides.

Code

function features_override_supported_components($hooks = FALSE, $reset = FALSE) {
  if ($reset) {
    cache_clear_all('features_override:components', 'cache');
  }
  else {
    $components = cache_get('features_override:components');
    if (isset($components) && is_array($components)) {
      return $hooks ? $components : drupal_map_assoc(array_keys($components));
    }
  }
  $components = array();
  foreach (features_get_components() as $component => $info) {

    // Don't offer an override for overriding!
    if (isset($info['default_hook']) && module_hook('features_override', $info['default_hook'] . '_alter')) {
      $components[$component] = $info['default_hook'];
    }
  }

  // Allow modules to alter the compontents before caching.
  drupal_alter('features_override_supported_components', $components);
  cache_set('features_override:components', $components);
  return $hooks ? $components : drupal_map_assoc(array_keys($components));
}