? 868740-10_exportable_taxonomy.patch
? 868740-8_exportable_taxonomy.patch
? 868740_4.patch
? 868740_7.patch
Index: data_taxonomy/data_taxonomy.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/data/data_taxonomy/Attic/data_taxonomy.admin.inc,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 data_taxonomy.admin.inc
--- data_taxonomy/data_taxonomy.admin.inc	21 Jan 2010 00:24:26 -0000	1.1.2.2
+++ data_taxonomy/data_taxonomy.admin.inc	8 Sep 2010 02:29:31 -0000
@@ -13,7 +13,12 @@ function data_taxonomy_settings_form(&$f
 
   $form = $vocabularies = array();
   foreach (taxonomy_get_vocabularies() as $v) {
-    $vocabularies[$v->vid] = $v->name;
+    if (strpos($v->module, 'features_') === 0) {
+      $vocabularies[filter_xss_admin($v->module)] = check_plain($v->name);
+    }
+    else {
+      $vocabularies[$v->vid] = check_plain($v->name);
+    }
   }
   $meta = $table->get('meta');
   $form['#table'] = $table;
Index: data_taxonomy/data_taxonomy.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/data/data_taxonomy/Attic/data_taxonomy.module,v
retrieving revision 1.1.2.16
diff -u -p -r1.1.2.16 data_taxonomy.module
--- data_taxonomy/data_taxonomy.module	25 Jan 2010 18:10:45 -0000	1.1.2.16
+++ data_taxonomy/data_taxonomy.module	8 Sep 2010 02:29:32 -0000
@@ -64,7 +64,7 @@ function data_taxonomy_perm() {
 function data_taxonomy_feeds_data_processor_targets_alter(&$fields, $data_table) {
   if ($info = data_taxonomy_get_info($data_table)) {
     foreach ($info['vocabularies'] as $vid) {
-      $vocabulary = taxonomy_vocabulary_load($vid);
+      $vocabulary = data_taxonomy_get_vocabulary($vid);
       $fields['data_taxonomy:'. $vid] = array(
         'name' => t('Taxonomy: @vocabulary', array("@vocabulary" => $vocabulary->name)),
         'description' => t('Map to taxonomy terms of @vocabulary vocabulary.', array("@vocabulary" => $vocabulary->name)),
@@ -108,7 +108,8 @@ function data_taxonomy_data_update($reco
     $id = $record[$info['id']];
     foreach ($info['vocabularies'] as $vid) {
       if (is_array($record['data_taxonomy:'. $vid])) {
-        db_query("DELETE dt FROM {data_taxonomy} dt JOIN {term_data} td ON dt.tid = td.tid WHERE td.vid = %d", $vid);
+        $vocabulary = data_taxonomy_get_vocabulary($vid);
+        db_query("DELETE dt FROM {data_taxonomy} dt JOIN {term_data} td ON dt.tid = td.tid WHERE td.vid = %d", $vocabulary->vid);
         foreach ($record['data_taxonomy:'. $vid] as $tid) {
           db_query("INSERT INTO {data_taxonomy}(id, data_table_name, tid) VALUES(%d, '%s', %d)", $id, $table_name, $tid);
         }
@@ -349,6 +350,18 @@ function _data_taxonomy_replace_tokens($
 }
 
 /**
+ * Load a vocabulary by its module name.
+ */
+function _data_taxonomy_vocabulary_load_by_module($module) {
+  $vocabularies = taxonomy_get_vocabularies();
+  foreach ($vocabularies as $vocabulary) {
+    if ($vocabulary->module == $module) {
+      return $vocabulary;
+    }
+  }
+}
+
+/**
  * Preprocessor for theme('data_taxonomy_tagging_form').
  */
 function template_preprocess_data_taxonomy_tagging_form(&$vars) {
@@ -360,3 +373,43 @@ function template_preprocess_data_taxono
   }
   $vars['tags'] = theme('links', data_taxonomy_tag_links($vars['form']['#terms'], $vars['form']['#path'], $vars['form']['#args']), array('class' => 'links data-taxonomy-tags'));
 }
+
+/**
+ * Get a vocabulary by vid or module name.
+ *
+ * @param $id
+ *   A module name or a numeric vocabulary id.
+ *
+ * @return
+ *   An object of type stdClass that represents a vocabulary.
+ */
+function data_taxonomy_get_vocabulary($id) {
+  static $vocabularies;
+  if (!isset($vocabularies[$id])) {
+    foreach (taxonomy_get_vocabularies() as $vocabulary) {
+      if ($vocabulary->vid == $id) {
+        $vocabularies[$id] = $vocabulary;
+        break;
+      }
+      elseif ($vocabulary->module == $id) {
+        $vocabularies[$id] = $vocabulary;
+        break;
+      }
+    }
+  }
+  return $vocabularies[$id];
+}
+
+/**
+ * Return the vocabulary identifier, the vocabulary's vid or module.
+ *
+ * @return
+ *   Vocabulary's module name if it is a features vocabulary (= exportable),
+ *   vocabulary's vid otherwise.
+ */
+function data_taxonomy_vocabulary_id($vocabulary) {
+  if (strpos($vocabulary->module, 'features_') === 0) {
+    return $vocabulary->module;
+  }
+  return $vocabulary->vid;
+}
Index: data_taxonomy/views/data_taxonomy_views_handler_field_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/data/data_taxonomy/views/Attic/data_taxonomy_views_handler_field_form.inc,v
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.8 data_taxonomy_views_handler_field_form.inc
--- data_taxonomy/views/data_taxonomy_views_handler_field_form.inc	25 Jan 2010 17:45:16 -0000	1.1.2.8
+++ data_taxonomy/views/data_taxonomy_views_handler_field_form.inc	8 Sep 2010 02:29:32 -0000
@@ -27,7 +27,7 @@ class data_taxonomy_views_handler_field_
     $meta = $table->get('meta');
     if (!empty($meta['data_taxonomy']['vocabularies'])) {
       foreach ($meta['data_taxonomy']['vocabularies'] as $vid) {
-        $options[$vid] = taxonomy_vocabulary_load($vid)->name;
+        $options[$vid] = data_taxonomy_get_vocabulary($vid)->name;
       }
     }
     if (!empty($options)) {
