From 2de34a77f2a9a19e702e41e82d9b98ba63c8efb4 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Wed, 20 Oct 2010 05:32:31 +0000 Subject: #608894 by chx, catch: Resolve the conflict between the fieldable users UI and the profile module by hiding Profile module on new sites. --- modules/user/user.module | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/modules/user/user.module b/modules/user/user.module index 277c5fc5a..500875779 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -3691,3 +3691,27 @@ function user_file_download_access($field, $entity_type, $entity) { return user_view_access($entity); } } + +/** + * Implements hook_system_info_alter(). + * + * Drupal 7 ships with two methods to add additional fields to users: Profile + * module, a legacy module dating back from 2002, and Field API integration + * with users. While Field API support for users currently provides less end + * user features, the inefficient data storage mechanism of Profile module, as + * well as its lack of consistency with the rest of the entity / field based + * systems in Drupal 7, make this a sub-optimal solution to those who were not + * using it in previous releases of Drupal. + * + * To prevent new Drupal 7 sites from installing Profile module, and + * unwittingly ending up with two completely different and incompatible methods + * of extending users, remove it from the available modules by setting it to + * hidden if the profile_* tables are not already present. + * + * @todo: Remove in D8, pending upgrade path. + */ +function user_system_info_alter(&$info, $file, $type) { + if ($type == 'module' && $file->name == 'profile' && !db_table_exists('profile_field')) { + $info['hidden'] = TRUE; + } +} -- cgit v1.2.3