Index: conditional_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v
retrieving revision 1.8.2.17
diff -u -r1.8.2.17 conditional_fields.module
--- conditional_fields.module	10 Apr 2010 01:57:48 -0000	1.8.2.17
+++ conditional_fields.module	11 May 2010 16:51:30 -0000
@@ -1385,3 +1385,18 @@
   $id = str_replace(array('][', '_', ' '), '-', $id);
   return $id;
 }
+
+/**
+ * Implementation of hook_features_api() (features module).
+ */
+function conditional_fields_features_api() {
+  return array(
+    'conditional_fields' => array(
+      'name' => t('Conditional Fields'),
+      'default_hook' => 'conditional_fields_default_fields',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'features_source' => TRUE,
+      'file' => drupal_get_path('module', 'conditional_fields') .'/includes/conditional_fields.features.inc',
+    ),
+  );
+}
--- includes/conditional_fields.features.inc
+++ includes/conditional_fields.features.inc
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * Implementation of hook_features_export_options().
+ */
+function conditional_fields_features_export_options() {
+  $query = db_query("SELECT type FROM {conditional_fields}");
+  while ($result = db_fetch_array($query)) {
+    if (!isset($options['type'])) {
+      $options[$result['type']] = node_get_types('name', $result['type']).' '.t('Conditional Fields');
+    }
+  }
+  return $options;
+}
+
+/**
+ * Implementation of hook_features_export()
+ */
+function conditional_fields_features_export($data, &$export, $module_name = '') {
+  $export['dependencies'][] = 'conditional_fields';
+  
+  foreach ($data as $node_type) {
+    $export['features']['conditional_fields'][$node_type] = $node_type;
+  }
+}
+
+/**
+ * Implmentation of hook_features_export_render()
+ */
+function conditional_fields_features_export_render($module_name = '', $data) {
+  $code[] = '  $items = array();';
+  foreach ($data as $type) {
+    $query = db_query("SELECT * FROM {conditional_fields} WHERE type='%s'", $type);
+    $i = 0;
+    while($result = db_fetch_array($query)) {
+      $code[] = '  $items[] = array(';
+      foreach (array('control_field_name', 'field_name', 'type') as $key) {
+        $code[] = "    '$key' => '$result[$key]',";
+      }
+      $trigger_values = unserialize($result['trigger_values']);
+      $code[] = "    'trigger_values' => array(";
+      foreach ($trigger_values as $key => $value) {
+        $code[] = "      '$key' => '$value',";
+      }
+      $code[] = "    ),";
+      $code[] = '  );';
+      $i++;
+    }
+  }
+  $code[] = '  return $items;';
+  $code = implode("\n", $code);
+  return array('conditional_fields_default_fields' => $code);
+}
+
+/**
+ * Implmentation of hook_features_rebuild()
+ */
+function conditional_fields_features_rebuild($module) {
+   $defaults = module_invoke($module, 'conditional_fields_default_fields');
+  if (!empty($defaults)) {
+    $types = array();
+    foreach ($defaults as $field) {
+      if (!in_array($field['type'], $types)) {
+        $types[] = $field['type'];
+        db_query("DELETE FROM {conditional_fields} WHERE type='%s'", $$field[$type]);
+      };
+      conditional_fields_insert_field($field['type'], $field['field_name'], $field['control_field_name'], $field['trigger_values']);
+    } 
+  }
+}
+
+/**
+ * Implementation of hook_features_revert().
+ */
+function conditional_fields_features_revert($module) {
+  return conditional_fields_features_rebuild($module);
+}


