Jelajahi Sumber

materio admin : created duplicate mails page admin

Bachir Soussi Chiadmi 10 tahun lalu
induk
melakukan
28deeac474
1 mengubah file dengan 54 tambahan dan 0 penghapusan
  1. 54 0
      materio_admin.module

+ 54 - 0
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:') . '<br />';
+  $output = "<ul>";
+  foreach ($duplicate_mails as $mail => $users) {
+    $output .= "<li> <strong>$mail</strong> : <br />";
+    $accounts = array();
+    foreach ($users as $duplicate_user) {
+       $accounts[] =  l($duplicate_user->name, "user/{$duplicate_user->uid}") . ' ('. date('Y-m-d', $duplicate_user->access) .')';
+    }
+    $output .= implode(', ', $accounts);
+
+      $output .= '</li>';
+  }
+  $output .= "</ul>";
+  return $output;
+}
+
 /**
  * Implements hook_menu_alter().
  */