You are here

function _features_override_remove_recursion in Features Override 6.2

Helper to removes recursion from an object/array.

Parameters

$item: An object or array passed by reference.

1 call to _features_override_remove_recursion()
features_override_remove_recursion in ./features_override.export.inc
Removes recursion from an object or array.

File

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

Code

function _features_override_remove_recursion(&$item) {
  $is_object = is_object($item);
  if ($is_object) {
    $item->{FEATURES_OVERRIDE_RECURSION_MARKER} = 1;
  }
  else {
    $item[FEATURES_OVERRIDE_RECURSION_MARKER] = 1;
  }
  foreach ($item as $key => $value) {
    if (is_array($value) || is_object($value)) {
      $remove = is_array($value) ? !empty($value[FEATURES_OVERRIDE_RECURSION_MARKER]) : !empty($value->{FEATURES_OVERRIDE_RECURSION_MARKER});
      if ($remove) {
        if ($is_object) {
          unset($item->{$key});
        }
        else {
          unset($item[$key]);
        }
      }
      else {
        features_override_remove_recursion($value);
      }
    }
  }
}