diff --git a/materio_admin.module b/materio_admin.module index 1035855c..d9e7f436 100644 --- a/materio_admin.module +++ b/materio_admin.module @@ -14,6 +14,10 @@ function materio_admin_permission() { 'title' => t('access default UC roles expiration list'), 'description' => t('access default UC roles expiration list.'), ), + 'access duplicate mails list' => array( + 'title' => t('access duplicate mails list'), + 'description' => t('access duplicate mails list.'), + ), ); } @@ -22,6 +26,16 @@ function materio_admin_permission() { */ function materio_admin_menu() { + $items['admin/users/duplicatemails'] = array( + 'title' => "Duplicate mails", + 'page callback' => 'materio_duplicatemails', + 'access callback' => 'user_access', + 'access arguments' => array('access duplicate mails list'), + 'type' => MENU_LOCAL_TASK + ); + + + if(module_exists('simplenews')){ $cats = simplenews_category_list(); // dsm($cats, 'cats'); @@ -52,6 +66,46 @@ function materio_admin_menu() { return $items; } +function materio_duplicatemails(){ + $mails = db_query('SELECT mail FROM {users} GROUP BY mail HAVING count(mail) > 1')->fetchCol(); + + // Bail out early if there are no duplicates. + if (!$mails) { + return t('All accounts have unique email addresses.'); + } + + // Grab all the user data for accounts with addresses identified as + // duplicates. This is a little convoluted, but it lets us grab all the user + // data in one shot. + $uids = db_select('users', 'u') + ->fields('u', array('uid')) + ->condition('mail', $mails, 'IN') + ->orderBy('access', 'DESC') + ->execute() + ->fetchCol(); + $duplicate_users = user_load_multiple($uids); + $duplicate_mails = array(); + foreach ($duplicate_users as $duplicate_user) { + $duplicate_mails[$duplicate_user->mail][] = $duplicate_user; + } + + // Turn the data we've got into markup. + $output = t('Accounts with duplicate email address:') . '
'; + $output = ""; + return $output; +} + /** * Implements hook_menu_alter(). */