aboutsummaryrefslogtreecommitdiff
path: root/node_import_truncate.module
diff options
context:
space:
mode:
Diffstat (limited to 'node_import_truncate.module')
-rw-r--r--node_import_truncate.module149
1 files changed, 0 insertions, 149 deletions
diff --git a/node_import_truncate.module b/node_import_truncate.module
deleted file mode 100644
index 9a88fb1..0000000
--- a/node_import_truncate.module
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-// $Id$
-
-/**
- * @file
- * Node Import Truncate module.
- *
- * This module adds a final step at the Node Import form so users
- * can choose whether to erase all nodes of a given content type
- * before importing new data into it.
- */
-
-/**
- * Implementation of hook_menu();
- */
-function node_import_truncate_menu() {
- $items['admin/content/node_import/truncate'] = array(
- 'title' => '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_import_truncate', array($type)),
- ),
- 'finished' => 'node_import_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']);
- }
-}
-
-/**
- * Mass deletion of content.
- */
-function node_import_truncate($type, &$context) {
- $type = 'WHERE type = "' . $type . '"';
- if (empty($context['sandbox'])) {
- $context['sandbox']['progress'] = 0;
- $context['sandbox']['current_node'] = 0;
- $context['sandbox']['max'] = db_result(db_query('SELECT COUNT(DISTINCT nid) FROM {node} ' . $type));
- }
- $limit = 5;
- $result = db_query_range('SELECT nid FROM {node} ' . $type, $context['sandbox']['current_node'], 0, $limit);
- while ($row = db_fetch_array($result)) {
- $node = node_delete($row['nid'], NULL, TRUE);
- $context['sandbox']['progress']++;
- $context['sandbox']['current_node'] = $node->nid;
- $context['results'][] = $node->nid .' : '. $node->title;
- $context['message'] = $node->title;
- }
- if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
- $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
- }
-}
-
-/**
- * Callback for node_import_truncate();
- */
-function node_import_truncate_callback($success, $results, $operations) {
- if ($success) {
- if ($results > 0) {
- $message = format_plural(count($results), t('One old post processed.'), t('@count old posts processed.'));
- }
- }
- else {
- $message = t('Finished with an error.');
- }
- drupal_set_message($message);
-}