function purge_users_never_loggedin_user_ids in Auto Purge Users 8.3
Same name and namespace in other branches
- 8 purge_users.module \purge_users_never_loggedin_user_ids()
- 8.2 purge_users.module \purge_users_never_loggedin_user_ids()
- 7.2 purge_users.module \purge_users_never_loggedin_user_ids()
- 7 purge_users.module \purge_users_never_loggedin_user_ids()
Get users who never login at all.
1 call to purge_users_never_loggedin_user_ids()
- purge_users_get_user_ids in ./
purge_users.module - Get user ids to purge.
File
- ./
purge_users.module, line 51 - Purge users module file.
Code
function purge_users_never_loggedin_user_ids($param, $included_user_roles = [], $excluded_user_roles = []) {
// Get a time stamp according to the period selected.
$logindate = '';
if (!empty($param['never_login_value'])) {
$logindate = strtotime('-' . $param['never_login_value'] . ' ' . $param['never_login_period']);
}
// Query through db table to get users ids.
$db = \Drupal::database();
$exist_query = $db
->select('user__roles', 'ur');
$exist_query
->fields('ur', [
'entity_id',
]);
$exist_query
->where('ur.entity_id = u.uid');
$exist_query
->condition('ur.roles_target_id', $included_user_roles, 'IN');
$not_exist_query = $db
->select('user__roles', 'ur');
$not_exist_query
->fields('ur', [
'entity_id',
]);
$not_exist_query
->where('ur.entity_id = u.uid');
$not_exist_query
->condition('ur.roles_target_id', $excluded_user_roles, 'IN');
$query = $db
->select('users_field_data', 'u')
->distinct();
$query
->leftjoin('user__roles', 'ur', 'ur.entity_id = u.uid');
$query
->fields('u', [
'uid',
]);
$query
->condition('u.uid', 1, '>');
if (!empty($param['never_login_value'])) {
$query
->condition('u.created', $logindate, '<');
$query
->condition('u.login', 0);
}
if (in_array(AccountInterface::AUTHENTICATED_ROLE, $included_user_roles)) {
$db_or = $db
->condition('OR');
$db_or
->isNull('ur.roles_target_id');
$db_or
->exists($exist_query);
$query
->condition($db_or);
}
else {
$query
->exists($exist_query);
}
if ($param['disregard_blocked_users']) {
$query
->condition('u.status', 1);
}
$query
->notExists($not_exist_query);
$uids = $query
->execute()
->fetchCol();
// Allow other modules to modify the result.
\Drupal::moduleHandler()
->alter('purge_never_loggedin_user_ids', $uids);
return $uids;
}