3,
);
}
/**
* Implements hook_block_info().
*
* This hook both declares what blocks are provided by the module, and
* generates the contents of the blocks themselves.
*/
function duplicatemail_block_info() {
return array(
'duplicatemail-list' => array(
'info' => t('Duplicate Mail: system wide, lists accounts that have the same email as another account'),
'cache' => DRUPAL_CACHE_GLOBAL,
)
);
}
/**
* Implements hook_block_view().
*/
function duplicatemail_block_view($delta) {
switch ($delta) {
case 'duplicatemail-list':
return array(
'subject' => t('Duplicate emails'),
'content' => duplicatemail_list(),
);
break;
}
}
/**
* A block content function.
*/
function duplicatemail_list() {
$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('mail')
->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:') . '
';
foreach ($duplicate_mails as $mail => $users) {
$output .= "$mail
";
foreach ($users as $duplicate_user) {
$output .= l($duplicate_user->name, "user/{$duplicate_user->uid}");
$output .= '
';
}
}
return $output;
}