Index: includes/features.user.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/Attic/features.user.inc,v retrieving revision 1.1.2.15 diff -u -p -r1.1.2.15 features.user.inc --- includes/features.user.inc 5 Aug 2010 20:59:41 -0000 1.1.2.15 +++ includes/features.user.inc 31 Dec 2010 19:20:47 -0000 @@ -18,6 +18,12 @@ function user_features_api() { 'default_hook' => 'user_default_permissions', 'default_file' => FEATURES_DEFAULTS_INCLUDED, ), + 'user_profile_field' => array( + 'name' => t('Profile fields'), + 'feature_source' => TRUE, + 'default_hook' => 'user_default_profile_fields', + 'default_file' => FEATURES_DEFAULTS_INCLUDED, + ), // DEPRECATED 'user' => array( 'name' => t('Permissions'), @@ -222,6 +228,77 @@ function user_role_features_rebuild($mod } /** + * Implementation of hook_features_export(). + */ +function user_profile_field_features_export($data, &$export, $module_name = '') { + $export['dependencies']['features'] = 'features'; + $export['dependencies']['profile'] = 'profile'; + foreach ($data as $field) { + $export['features']['user_profile_field'][$field] = $field; + } + return array(); +} + +/** + * Implementation of hook_features_export_options(). + */ +function user_profile_field_features_export_options() { + $fields = array(); + // Query DB directly instead of going through a Profile module function as + // the Profile module doesn't provide a good function for this purpose... + $db_result = db_query('SELECT name, title FROM {profile_fields}'); + while ($field = db_fetch_object($db_result)) { + $fields[$field->name] = $field->title; + } + return $fields; +} + +/** + * Implementation of hook_features_export_render(). + */ +function user_profile_field_features_export_render($module, $data) { + $code = array(); + $code[] = ' $profile_fields = array();'; + $code[] = ''; + + foreach ($data as $name) { + $db_result = db_query("SELECT * FROM {profile_fields} WHERE name = '%s'", $name); + if ($field = db_fetch_array($db_result)) { + unset($field['fid']); + $code[] = " \$profile_fields['{$name}'] = " . features_var_export($field) .";"; + } + } + $code[] = "return \$profile_fields;"; + $code = implode("\n", $code); + return array('user_default_profile_fields' => $code); +} + +/** + * Implementation of hook_features_revert(). + */ +function user_profile_field_features_revert($module) { + user_profile_field_features_rebuild($module); +} + +/** + * Implementation of hook_features_rebuild(). + */ +function user_profile_field_features_rebuild($module) { + if ($defaults = features_get_default('user_profile_field', $module)) { + foreach ($defaults as $field) { + // If the field doesn't exist in the DB at the moment then insert it. + if (db_result(db_query("SELECT COUNT(*) FROM {profile_fields} WHERE name = '%s'", $field['name'])) == 0) { + drupal_write_record('profile_fields', $field); + } + // If the field exists, then update it. + else { + drupal_write_record('profile_fields', $field, 'name'); + } + } + } +} + +/** * Generate a perm to module mapping. */ function _user_features_permission_map($reset = FALSE) {