function _features_override_set_additions in Features Override 7
Same name and namespace in other branches
- 6.2 features_override.export.inc \_features_override_set_additions()
- 6 features_override.module \_features_override_set_additions()
- 7.2 features_override.export.inc \_features_override_set_additions()
Helper function to set the additions and alters between default and normal components.
1 call to _features_override_set_additions()
- features_override_detect_overrides in ./
features_override.module - Detect differences between DB and code components of a feature.
File
- ./
features_override.module, line 395 - Export features component overrides.
Code
function _features_override_set_additions($default, $normal, &$additions, $keys = array()) {
$object = is_object($normal);
// Recursion detected.
if (_features_override_recursion_marker($default, $object) > 1) {
return;
}
foreach ($normal as $key => $value) {
// Don't register extra fields as an override.
// The 'content_has_extra_fields' flag is added to indicate that there are added fields.
// However, these should simply be added to a feature as fields; they are not an override.
// Ignore the marker used to track detect recursion.
if (in_array($key, array(
'content_has_extra_fields',
FEATURES_OVERRIDE_RECURSION_MARKER,
))) {
return;
}
if ($object) {
if (!isset($default->{$key}) || $default->{$key} !== $value && !(is_array($value) || is_object($value))) {
$additions[] = array(
'keys' => array_merge($keys, array(
array(
'type' => 'object',
'key' => $key,
),
)),
'value' => $value,
'order' => array_keys((array) $normal),
);
}
elseif (isset($default->{$key}) && $default->{$key} !== $value) {
_features_override_set_additions($default->{$key}, $value, $additions, array_merge($keys, array(
array(
'type' => 'object',
'key' => $key,
),
)));
}
}
else {
if (!isset($default[$key]) || $default[$key] !== $value && !(is_array($value) || is_object($value))) {
$additions[] = array(
'keys' => array_merge($keys, array(
array(
'type' => 'array',
'key' => $key,
),
)),
'value' => $value,
'order' => array_keys($normal),
);
}
elseif (isset($default[$key]) && $default[$key] !== $value) {
_features_override_set_additions($default[$key], $value, $additions, array_merge($keys, array(
array(
'type' => 'array',
'key' => $key,
),
)));
}
}
}
}