You are here

function _features_override_set_deletions in Features Override 7

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

Helper function to set the deletions between default and normal features.

1 call to _features_override_set_deletions()
features_override_detect_overrides in ./features_override.module
Detect differences between DB and code components of a feature.

File

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

Code

function _features_override_set_deletions($default, $normal, &$deletions, $keys = array()) {
  $object = is_object($default);

  // Recursion detected.
  if (_features_override_recursion_marker($default, $object) > 1) {
    return;
  }
  foreach ($default as $key => $value) {

    // Ignore the marker used to track detect recursion.
    if ($key == FEATURES_OVERRIDE_RECURSION_MARKER) {
      continue;
    }
    if ($object) {
      if (!isset($normal->{$key})) {
        $deletions[] = array(
          'keys' => array_merge($keys, array(
            array(
              'type' => 'object',
              'key' => $key,
            ),
          )),
        );
      }
      elseif (is_object($value) || is_array($value)) {
        _features_override_set_deletions($value, $normal->{$key}, $deletions, array_merge($keys, array(
          array(
            'type' => 'object',
            'key' => $key,
          ),
        )));
      }
    }
    else {
      if (!isset($normal[$key])) {
        $deletions[] = array(
          'keys' => array_merge($keys, array(
            array(
              'type' => 'array',
              'key' => $key,
            ),
          )),
        );
      }
      elseif (is_object($value) || is_array($value)) {
        _features_override_set_deletions($value, $normal[$key], $deletions, array_merge($keys, array(
          array(
            'type' => 'array',
            'key' => $key,
          ),
        )));
      }
    }
  }
}