You are here

function features_override_get_overrides in Features Override 7.2

Same name and namespace in other branches
  1. 6.2 features_override.export.inc \features_override_get_overrides()
  2. 6 features_override.module \features_override_get_overrides()
  3. 7 features_override.module \features_override_get_overrides()

Calculates what overrides exist for by component/element.

Parameters

$component_key: A component key that's defined via hook_features_api.

$element_key: A key identifying an element that's been overridden.

$reset: Reset the internal cache of overrides gathered.

$all: If TRUE, return all overrides, otherwise only overrides not yet in an override feature

Return value

array

4 calls to features_override_get_overrides()
features_overrides_features_export_options in ./features_override.features.inc
Implements hook_features_export_options().
features_overrides_features_export_render in ./features_override.features.inc
Implements hook_features_export_render().
features_override_items_features_export_options in ./features_override.features.inc
Implements hook_features_export_options().
features_override_render_differences in ./features_override.admin.inc
Renders the differences for a component and element

File

./features_override.export.inc, line 66
Helper function to export features overrides.

Code

function features_override_get_overrides($component_key = FALSE, $element_key = FALSE, $reset = FALSE, $all = TRUE) {
  static $cache;
  if (!isset($cache) || $reset) {
    $cache = array();
    module_load_include('inc', 'features', 'features.export');
    features_include();
    foreach (features_get_components() as $component => $info) {
      if ($component === 'features_override_items' || $component === 'features_overrides' || empty($info['default_hook']) || !features_get_default_alter_hook($component) || !features_hook($component, 'features_export_render')) {
        continue;
      }
      features_include_defaults($component);
      foreach (module_implements($info['default_hook']) as $module) {
        if ($differences = array_filter(features_override_module_component_overrides($module, $component, $reset, $all))) {
          $cache[$component] = isset($cache[$component]) ? array_merge($differences, $cache[$component]) : $differences;
        }
      }
      $cache[$component] = isset($cache[$component]) ? array_filter($cache[$component]) : array();
    }
  }
  if ($component_key && $element_key) {
    return !empty($cache[$component_key][$element_key]) ? $cache[$component_key][$element_key] : array();
  }
  if ($component_key) {
    return !empty($cache[$component_key]) ? $cache[$component_key] : array();
  }
  return $cache;
}