Index: multivariate.node.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/multivariate/multivariate.node.inc,v
retrieving revision 1.20
diff -u -r1.20 multivariate.node.inc
--- multivariate.node.inc	13 Jul 2009 20:42:09 -0000	1.20
+++ multivariate.node.inc	21 Aug 2009 18:14:06 -0000
@@ -425,3 +425,40 @@
 
   return $node;
 }
+
+/**
+ * Implementation of hook_link().
+ */
+function multivariate_link($type, $object, $teaser = FALSE) {
+  $links = array();
+
+  if ($type == 'node') {
+    $links['multivariate_export'] = array(
+      'title' => t('export as csv'),
+      'href' => 'node/' . $object->nid . '/multivariate/export',
+    );
+  }
+
+  return $links;
+}
+
+/**
+ * Export multivariate data.
+ *
+ * @param object $node Multivariate node object.
+ */
+function multivariate_node_export($node) {
+  header('Content-Disposition: attachment; filename="multivariate-' . $node->nid . '.csv"');
+  header('Content-Type: text/plain');
+
+  $definition = multivariate_mutation_definition_get($node);
+  $results = db_query('SELECT mutation_id, count, success
+                       FROM {multivariate_mutation}
+                       WHERE nid = %d', $node->nid);
+
+  echo '"' . implode('","', array('mutation', 'count', 'success')) . '"' . "\n";
+  while ($result = db_fetch_array($results)) {
+    $binary = multivariate_mutation_correct(decbin($result['mutation_id']), $definition);
+    echo '"' . implode('","', array($binary, $result['count'], $result['success'])) . '"' . "\n";
+  }
+}
Index: multivariate.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/multivariate/multivariate.module,v
retrieving revision 1.10
diff -u -r1.10 multivariate.module
--- multivariate.module	13 Jul 2009 20:11:52 -0000	1.10
+++ multivariate.module	21 Aug 2009 18:14:06 -0000
@@ -35,6 +35,14 @@
     'file' => 'multivariate.node.inc',
     'type' => MENU_CALLBACK,
   );
+  $items['node/%node/multivariate/export'] = array(
+    'title' => t('Export as csv'),
+    'page callback' => 'multivariate_node_export',
+    'page arguments' => array(1),
+    'access arguments' => array('access content'),
+    'file' => 'multivariate.node.inc',
+    'type' => MENU_CALLBACK,
+  );
 
   return $items;
 }
