function bulkdelete_form_submit in Bulk Delete 6
Same name and namespace in other branches
- 7 bulkdelete.admin.inc \bulkdelete_form_submit()
File
- ./
bulkdelete.admin.inc, line 48
Code
function bulkdelete_form_submit($form, &$form_state) {
$quick = $form_state['values']['quick'];
// Process the form results
$types = array_filter($form_state['values']['types']);
if (count($types) > 0) {
if ($quick) {
// One of the goals of this module is to make deleting go faster. To do
// that we pre-calculate which module implement hook_delete.
$node_deletes = array();
foreach (module_list() as $module) {
foreach ($types as $type) {
$node = array(
'type' => $type,
);
$module = node_get_types('module', $node);
if ($module === 'node') {
$module = 'node_content';
// Avoid function name collisions.
}
if ($hook = module_hook($module, 'delete')) {
$node_deletes[] = $hook;
}
}
}
}
$placeholders = implode(',', array_fill(0, count($types), "'%s'"));
$result = db_query("SELECT nid FROM {node} WHERE type IN ({$placeholders})", $types);
$operations = array();
// Doing an empty operation at the beginning makes the "initialization"
// phase go quickly
$operations[] = array(
'trim',
array(
'',
),
);
$count = 0;
while ($row = db_fetch_object($result)) {
$nids[] = $row->nid;
++$count;
if ($count % 20 === 1) {
if ($quick) {
$operations[] = array(
'bulkdelete_node_delete_quick',
array(
$nids,
$node_deletes,
),
);
}
else {
$operations[] = array(
'bulkdelete_node_delete_standard',
array(
$nids,
$node_deletes,
),
);
}
$nids = array();
}
}
// Add remaining nids.
if ($quick) {
$operations[] = array(
'bulkdelete_node_delete_quick',
array(
$nids,
$node_deletes,
),
);
}
else {
$operations[] = array(
'bulkdelete_node_delete_standard',
array(
$nids,
$node_deletes,
),
);
}
// Clear the cache once at the end.
$operations[] = array(
'cache_clear_all',
array(),
);
// How many operations are we going to do?
$count2 = count($operations);
// Set up the Batch API
$batch = array(
'operations' => $operations,
'finished' => '',
'title' => t('Deleting !count nodes in !count2 operations.', array(
'!count' => $count,
'!count2' => $count2,
)),
);
batch_set($batch);
batch_process();
}
}