function delete_all_users_batch_delete in Delete all 8
Same name and namespace in other branches
- 2.x includes/delete_all.user.batch.inc \delete_all_users_batch_delete()
Function to delete users using Batch API.
Parameters
array $users: Array of users to delete.
array &$context: Sandbox context array.
1 string reference to 'delete_all_users_batch_delete'
- UserDeleteController::getUserDeleteBatch in src/
Controller/ UserDeleteController.php
File
- includes/
delete_all.user.batch.inc, line 11
Code
function delete_all_users_batch_delete($users = FALSE, &$context) {
$db = \Drupal::database();
$entity_type_manager = \Drupal::entityTypeManager();
if ($users === FALSE) {
if (!isset($context['sandbox']['progress'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_uid'] = 1;
$context['sandbox']['max'] = $db
->select('users', 'u')
->fields('u')
->condition('uid', 1, '>')
->countQuery()
->execute()
->fetchField();
// Collect results to process in the finished callback.
$context['results']['user_count'] = $context['sandbox']['max'];
}
// Get a batch of 50 users from all users to delete.
$users_to_delete = $db
->select('users', 'u')
->fields('u', [
'uid',
])
->condition('uid', $context['sandbox']['current_uid'], '>')
->range(0, 50)
->execute()
->fetchCol();
}
else {
if (!isset($context['sandbox']['progress'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['max'] = count($users);
// Collect results to process in the finished callback.
$context['results']['user_count'] = $context['sandbox']['max'];
}
// Get a batch of 50 users from the list of users to delete.
$users_to_delete = array_slice($users, $context['sandbox']['progress'], 50);
}
if ($context['sandbox']['max'] + 1 > 0) {
if (!empty($users_to_delete)) {
foreach ($users_to_delete as $uid) {
$account = $entity_type_manager
->getStorage('user')
->load($uid);
// Delete user.
$entity_type_manager
->getStorage('user')
->load($uid)
->delete();
$context['message'] = t('Deleting user with uid %uid', [
'%uid' => $uid,
]);
$context['sandbox']['current_uid'] = $uid;
$context['sandbox']['progress']++;
}
}
// Inform the batch engine that we are not finished,
// and provide an estimation of the completion level we reached.
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
}
}