materio admin : created duplicate mails page admin

This commit is contained in:
Bachir Soussi Chiadmi 2014-07-03 18:52:20 +02:00
parent 0c71144833
commit 28deeac474

View File

@ -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().
*/