It seems that the data pulled from the database is serialized, but no unserialize function was being called. This adds the appropriate unserialize function calls diff -Nurp ../cck.orig//modules/fieldgroup/fieldgroup.module ./modules/fieldgroup/fieldgroup.module --- ../cck.orig//modules/fieldgroup/fieldgroup.module 2010-07-27 11:09:55.000000000 -0500 +++ ./modules/fieldgroup/fieldgroup.module 2010-07-27 11:09:08.000000000 -0500 @@ -291,6 +291,14 @@ function _fieldgroup_get_tree($type_name "WHERE nfi.widget_active = 1 ORDER BY nfi.weight"); while ($field = db_fetch_array($result)) { $groups[$field['type_name']][$field['group_name']]['fields'][$field['field_name']] = $field; + + // Unserialize arrays. + foreach (array('widget_settings', 'display_settings', 'global_settings', 'db_columns') as $key) { + $groups[$field['type_name']][$field['group_name']]['fields'][$field['field_name']] = (!empty($groups[$field['type_name']][$field['group_name']]['fields'][$field['field_name']][$key])) ? (array) unserialize($groups[$field['type_name']][$field['group_name']]['fields'][$field['field_name']][$key]) : array(); + } + + // For fields inside of groups, use the weight given by fieldgroup + $groups[$field['type_name']][$field['group_name']]['fields'][$field['field_name']]['weight'] = $field['weight']; } }