'Node Import Truncate', 'description' => 'Mass deletion page.', 'page callback' => 'node_import_truncate_page', 'access arguments' => array('administer nodes'), 'type' => MENU_CALLBACK, ); return $items; } /** * Menu callback. */ function node_import_truncate_page($taskid = null) { $output = t('Choose whether to delete older content.'); $output .= drupal_get_form('node_import_truncate_form', $taskid); return $output; } /** * Mass deletion form. */ function node_import_truncate_form(&$form_state, $taskid = null) { $form['taskid'] = array( '#type' => 'value', '#value' => $taskid, ); $form['mass_delete'] = array( '#type' => 'checkbox', '#title' => t('Pre-import mass deletion'), '#description' => t('Delete old content before importing new data.'), '#default_value' => variable_get('node_import_truncate', '0'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Implementation of hook_validate(); */ function node_import_truncate_form_validate($form, $form_state) { if (!isset($form_state['values']['mass_delete'])) { form_set_error('mass_delete', t('Please choose an option')); } } /** * Handle post-validation form-submission. */ function node_import_truncate_form_submit($form, &$form_state) { $mass_delete = $form_state['values']['mass_delete']; variable_set('node_import_truncate', $mass_delete); if (isset($form_state['values']['taskid'])) { $taskid = $form_state['values']['taskid']; $redirect = 'admin/content/node_import/' . $taskid; } else { $redirect = null; } if ($mass_delete == 1) { $task = node_import_load($taskid); $type = ereg_replace('.*:', '', $task['type']); $batch = array( 'title' => t('Deleting old data.'), 'operations' => array( array('node_truncate', array($type)), ), 'finished' => 'node_truncate_callback', ); batch_set($batch); batch_process($redirect); } else { drupal_goto($redirect); } } /** * Implementation of hook_node_import_task(); * * As the user may be adding a spreadsheet containing * old and new content, we need to check whether to remove * all previous content to prevent duplicate data in the * database. */ function node_import_truncate_node_import_task($task, $op) { if ($op == 'insert') { drupal_goto('admin/content/node_import/truncate/' . $task['taskid']); } }