|
@@ -14,6 +14,10 @@ function materio_admin_permission() {
|
|
'title' => t('access default UC roles expiration list'),
|
|
'title' => t('access default UC roles expiration list'),
|
|
'description' => 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() {
|
|
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')){
|
|
if(module_exists('simplenews')){
|
|
$cats = simplenews_category_list();
|
|
$cats = simplenews_category_list();
|
|
// dsm($cats, 'cats');
|
|
// dsm($cats, 'cats');
|
|
@@ -52,6 +66,46 @@ function materio_admin_menu() {
|
|
return $items;
|
|
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().
|
|
* Implements hook_menu_alter().
|
|
*/
|
|
*/
|