--- survey.module.prev	2007-02-06 13:51:09.000000000 -0800
+++ survey.module	2007-02-06 13:53:20.000000000 -0800
@@ -79,6 +79,14 @@ function survey_menu($may_cache) {
         $items[] = array('path' => 'node/'.$node->nid.'/responses/excel', 'title' => t('download to excel'),
                          'callback' => 'survey_excel', 'access' => user_access('maintain surveys'),
                          'type' => MENU_LOCAL_TASK, 'weight' => 1);
+
+        $items[] = array('path' => 'node/'.$node->nid.'/purge', 'title' => t('purge'),
+                         'callback' => 'survey_maintenance_purge_prompt', 'access' => user_access('maintain surveys'),
+                         'type' => MENU_LOCAL_TASK, 'weight' => 7);
+
+        $items[] = array('path' => 'node/'.$node->nid.'/purge/complete', 'title' => t('purge'),
+                         'callback' => 'survey_maintenance_purge', 'access' => user_access('maintain surveys'),
+                         'type' => MENU_LOCAL_TASK, 'weight' => 7);
       }
     }
   }
@@ -432,4 +440,63 @@ function survey_excel() {
   exit;
 }
 
-?>
\ No newline at end of file
+/**
+ * Callback: Purge confirmation prompt
+ */
+function survey_maintenance_purge_prompt() {
+
+  $output = '';
+
+  $output .= 'Are you sure you want to purge this survey? (';
+
+  $output .= l(t('Yes'), 'node/' . arg(1) . '/purge/complete');
+
+  $output .= ') / (';
+
+  $output .= l(t('No'), 'node/' . arg(1) . '/edit');
+
+  $output .= ')';
+
+  print theme('page', $output);
+}
+
+/**
+ * Callback: Purge survey reponses
+ */
+function survey_maintenance_purge() {
+
+  $nid = arg(1);
+
+  $query = "SELECT fid FROM {survey} WHERE nid='%d'";
+  $result = db_query($query, $nid);
+
+  if ($result) {
+    if ($row = db_fetch_object($result)) {
+
+      $fid = $row->fid;
+
+      $query = "SELECT ffid FROM {form_fields} WHERE fid='%d'";
+      $result = db_query($query, $fid);
+
+      if ($result) {
+        while ($row = db_fetch_object($result)) {
+          $query = "DELETE FROM {survey_fields} WHERE ffid='%d'";
+          $result = db_query($query, $row->ffid);
+        }
+      }
+
+      $query = "DELETE FROM {survey_responses} WHERE nid='%d'";
+      $result = db_query($query, $nid);
+
+      drupal_set_message(t('Responses purged.'));
+    } else {
+      drupal_set_message(t('Error retrieving survey form data.'), 'error');
+    }
+  } else {
+    drupal_set_message(t('Error retrieving survey data.'), 'error');
+  }
+
+  print theme('page', '');
+}
+
+?>
