View source
<?php
function fieldgroup_features_api() {
return array(
'fieldgroup' => array(
'name' => t('Fieldgroup'),
'default_hook' => 'fieldgroup_default_groups',
'default_file' => FEATURES_DEFAULTS_INCLUDED,
),
);
}
function fieldgroup_features_export($data, &$export, $module_name = '') {
features_include_defaults('fieldgroup');
$pipe = array();
$export['dependencies']['features'] = 'features';
$map = features_get_default_map('fieldgroup', NULL, 'fieldgroup_features_identifier');
foreach ($data as $instance) {
if (isset($map[$instance]) && $map[$instance] != $module_name) {
if (isset($export['features']['fieldgroup'][$instance])) {
unset($export['features']['fieldgroup'][$instance]);
}
}
else {
$split = explode('-', $instance);
$type_name = $split[0];
$group_name = $split[1];
$groups = fieldgroup_groups($type_name, FALSE, TRUE);
if (isset($groups[$group_name]) && ($group = $groups[$group_name])) {
$export['features']['fieldgroup'][$instance] = $instance;
$export['dependencies']['fieldgroup'] = 'fieldgroup';
}
}
}
return $pipe;
}
function fieldgroup_features_export_render($module, $data) {
$translatables = $code = array();
$code[] = ' $groups = array();';
$code[] = '';
foreach ($data as $instance) {
$instance = explode('-', $instance);
$type_name = $instance[0];
$group_name = $instance[1];
$groups = fieldgroup_groups($type_name, FALSE, TRUE);
if (isset($groups[$group_name]) && ($group = $groups[$group_name])) {
$group['fields'] = array_keys((array) $group['fields']);
$group_identifier = features_var_export(fieldgroup_features_identifier($group));
$group_export = features_var_export($group, ' ');
$code[] = " // Exported group: {$group_name}";
$code[] = " \$groups[{$group_identifier}] = {$group_export};";
$code[] = "";
if (!empty($group['label'])) {
$translatables[] = $group['label'];
}
if (!empty($group['settings']['form']['description'])) {
$translatables[] = $group['settings']['form']['description'];
}
}
}
if (!empty($translatables)) {
$code[] = features_translatables_export($translatables, ' ');
}
$code[] = ' return $groups;';
$code = implode("\n", $code);
return array(
'fieldgroup_default_groups' => $code,
);
}
function fieldgroup_features_revert($module) {
fieldgroup_features_rebuild($module);
}
function fieldgroup_features_rebuild($module) {
if ($groups = features_get_default('fieldgroup', $module)) {
content_clear_type_cache(TRUE);
foreach ($groups as $group) {
$type_name = $group['type_name'];
$group_name = $group['group_name'];
$groups = fieldgroup_groups($type_name, FALSE, TRUE);
if (isset($groups[$group_name])) {
$existing_group = $groups[$group_name];
$existing_group['fields'] = array_keys($existing_group['fields']);
}
if ($existing_group != $group) {
foreach ($group['fields'] as $field_name) {
if ($field = content_fields($field_name, $type_name)) {
$field['group'] = $group_name;
fieldgroup_update_fields($field);
}
}
if ($existing_group && !empty($existing_group['fields'])) {
foreach ($existing_group['fields'] as $field_name) {
if (!in_array($field_name, $group['fields']) && _fieldgroup_field_get_group($type_name, $field_name) == $group_name && ($field = content_fields($field_name, $type_name))) {
$field['group'] = '';
fieldgroup_update_fields($field);
}
}
}
fieldgroup_save_group($type_name, $group);
variable_set('menu_rebuild_needed', TRUE);
}
}
}
}
function fieldgroup_features_identifier($object) {
return isset($object['type_name'], $object['group_name']) ? "{$object['type_name']}-{$object['group_name']}" : FALSE;
}