delete_all.content.batch.inc in Delete all 2.x
File
includes/delete_all.content.batch.inc
View source
<?php
use Drupal\node\Entity\Node;
function delete_all_content_batch_delete($nodes = FALSE, &$context) {
$db = \Drupal::database();
if ($nodes === FALSE) {
if (!isset($context['sandbox']['progress'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_nid'] = 0;
$context['sandbox']['max'] = $db
->select('node', 'n')
->fields('n')
->countQuery()
->execute()
->fetchField();
$context['results']['node_count'] = $context['sandbox']['max'];
}
$nodes_to_delete = $db
->select('node', 'n')
->fields('n', [
'nid',
])
->condition('nid', $context['sandbox']['current_nid'], '>')
->range(0, 100)
->execute()
->fetchCol();
}
else {
if (!isset($context['sandbox']['progress'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['max'] = count($nodes);
$context['results']['node_count'] = $context['sandbox']['max'];
}
$nodes_to_delete = array_slice($nodes, $context['sandbox']['progress'], 100);
}
if ($context['sandbox']['max'] + 1 > 0) {
if (!empty($nodes_to_delete)) {
foreach ($nodes_to_delete as $nid) {
$node = Node::load($nid);
$node
->delete();
$context['message'] = t('Deleting node with nid %nid', [
'%nid' => $nid,
]);
$context['sandbox']['current_nid'] = $nid;
$context['sandbox']['progress']++;
}
}
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
}
}
function delete_all_content_batch_delete_finished($success, $results, $operations) {
if ($success) {
\Drupal::messenger()
->addMessage(t('Deleted @node_count nodes.', [
'@node_count' => $results['node_count'],
]));
}
}