function features_overrides_features_export_render in Features Override 6.2
Same name and namespace in other branches
- 7.2 features_override.features.inc \features_overrides_features_export_render()
Implements hook_features_export_render().
File
- ./
features_override.features.inc, line 155
Code
function features_overrides_features_export_render($module, $data, $export = NULL) {
// Remember, the code exported here is just for the Features UI to keep track
// of the overridden status. All it needs to do is capture "changes".
// The actual form of the output doesn't really matter.
$list = $overrides_to_export = array();
// Go through all data collecting the items exports to create.
$features_override_code = array(
' // This code is only used for UI in features. Exported alters hooks do the magic.',
' $overrides = array();',
);
$last_component = '';
foreach ($data as $identifier) {
// Something is adding extra quote marks.
list($component, $element, $keys) = features_override_parse_identifier($identifier);
$component_code[$component] = isset($component_code[$component]) ? $component_code[$component] : array();
$overrides_to_export[$component] = isset($overrides_to_export[$component]) ? $overrides_to_export[$component] : array();
$overrides = features_override_get_overrides($component);
$features_override_value = array(
'additions' => array(),
'deletions' => array(),
);
// Just specific keys are being exported so add them if set.
if (!empty($overrides[$element])) {
if (isset($overrides[$element]['additions'][$keys])) {
$overrides_to_export[$component][$element]['additions'][] = $overrides[$element]['additions'][$keys];
$features_override_value['additions'][] = $overrides[$element]['additions'][$keys];
}
elseif (isset($overrides[$element]['deletions'][$keys])) {
$overrides_to_export[$component][$element]['deletions'][] = $overrides[$element]['deletions'][$keys];
$features_override_value['deletions'][] = $overrides[$element]['deletions'][$keys];
}
}
if ($component != $last_component) {
$features_override_code[] = '';
$features_override_code[] = " // Exported overrides for: {$component}";
}
$last_component = $component;
if (count($features_override_value['additions'])) {
$features_override_code[] = ' $overrides["' . $identifier . '"] = ' . features_override_var_export($features_override_value['additions'][0]['value'], ' ') . ';';
}
else {
if (count($features_override_value['deletions'])) {
$features_override_code[] = ' $overrides["' . $identifier . '"]["DELETED"] = TRUE;';
}
}
}
// Create the default hook that defines all exported overrides.
$features_override_code[] = '';
$features_override_code[] = ' return $overrides;';
$list['features_override_default_overrides'] = implode("\n", $features_override_code);
$component_code = array();
foreach ($overrides_to_export as $component => $elements) {
foreach ($elements as $element => $overrides) {
$component_code[$component] = isset($component_code[$component]) ? $component_code[$component] : array();
$component_code[$component][] = ' if (isset($data[' . var_export($element, TRUE) . '])) {';
if (!empty($overrides['additions'])) {
foreach ($overrides['additions'] as $alter) {
$component_code[$component][] = implode("\n", features_override_features_export_render_addition($alter, $element, $component));
}
}
if (!empty($overrides['deletions'])) {
foreach ($overrides['deletions'] as $alter) {
$component_code[$component][] = implode("\n", features_override_features_export_render_deletion($alter, $element, $component));
}
}
$component_code[$component][] = ' }';
}
}
$info = features_get_components();
foreach ($component_code as $component => $code) {
$list[features_get_default_alter_hook($component) . '_alter'] = array(
'code' => implode("\n", $code),
'args' => '&$data',
'file' => 'features',
);
}
return $list;
}