summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-10-01 01:37:13 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-10-01 01:37:13 +0000
commit823c0a0a55604429874702d64a85363099224aa1 (patch)
treeb841172c3b29203bf19a039f4493e38084b5a807 /modules
parent6d2573e2013655c57ff995e52cd7f267fa4a3a7f (diff)
downloadbrdo-823c0a0a55604429874702d64a85363099224aa1.tar.gz
brdo-823c0a0a55604429874702d64a85363099224aa1.tar.bz2
#881530 by yhahn: Fix exportability of vocabularies by using machine names in taxonomy field's 'allowed values' setting.
Diffstat (limited to 'modules')
-rw-r--r--modules/forum/forum.install2
-rw-r--r--modules/simpletest/tests/upgrade/upgrade.taxonomy.test10
-rw-r--r--modules/taxonomy/taxonomy.install4
-rw-r--r--modules/taxonomy/taxonomy.module35
-rw-r--r--modules/taxonomy/taxonomy.test8
5 files changed, 32 insertions, 27 deletions
diff --git a/modules/forum/forum.install b/modules/forum/forum.install
index 9a1ae18f6..bc2a9b1b6 100644
--- a/modules/forum/forum.install
+++ b/modules/forum/forum.install
@@ -52,7 +52,7 @@ function forum_enable() {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => $vocabulary->vid,
+ 'vocabulary' => $vocabulary->machine_name,
'parent' => 0,
),
),
diff --git a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
index e3e3c3d63..72be9ef8a 100644
--- a/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
+++ b/modules/simpletest/tests/upgrade/upgrade.taxonomy.test
@@ -34,8 +34,8 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase {
foreach ($field['settings']['allowed_values'] as $tree) {
// Prefer valid taxonomy term reference fields for a given vocabulary
// when they exist.
- if (empty($instances[$tree['vid']]) || $instances[$tree['vid']] == 'taxonomyextra') {
- $instances[$tree['vid']] = $field['field_name'];
+ if (empty($instances[$tree['vocabulary']]) || $instances[$tree['vocabulary']] == 'taxonomyextra') {
+ $instances[$tree['vocabulary']] = $field['field_name'];
}
}
}
@@ -59,8 +59,10 @@ class UpgradePathTaxonomyTestCase extends UpgradePathTestCase {
// Check that the node type 'page' has been associated to a taxonomy
// reference field for each vocabulary.
- $vocabularies = taxonomy_get_vocabularies();
- $voc_keys = array_keys($vocabularies);
+ $voc_keys = array();
+ foreach (taxonomy_get_vocabularies() as $vocab) {
+ $voc_keys[] = $vocab->machine_name;
+ }
$instances = $this->instanceVocabularies('node', 'page');
$inst_keys = array_keys($instances);
sort($voc_keys);
diff --git a/modules/taxonomy/taxonomy.install b/modules/taxonomy/taxonomy.install
index 8bd3a31db..bd8110961 100644
--- a/modules/taxonomy/taxonomy.install
+++ b/modules/taxonomy/taxonomy.install
@@ -408,7 +408,7 @@ function taxonomy_update_7004() {
'required' => $vocabulary->required ? TRUE : FALSE,
'allowed_values' => array(
array(
- 'vid' => $vocabulary->vid,
+ 'vocabulary' => $vocabulary->machine_name,
'parent' => 0,
),
),
@@ -466,7 +466,7 @@ function taxonomy_update_7004() {
$allowed_values = array();
foreach (_update_7002_taxonomy_get_vocabularies() as $vocabulary) {
$allowed_values[] = array(
- 'vid' => $vocabulary->vid,
+ 'vocabulary' => $vocabulary->machine_name,
'parent' => 0,
);
}
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 107bf7aa7..d73196313 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -1058,7 +1058,7 @@ function taxonomy_implode_tags($tags, $vid = NULL) {
*
* Field settings:
* - allowed_values: a list array of one or more vocabulary trees:
- * - vid: a vocabulary ID.
+ * - vocabulary: a vocabulary machine name.
* - parent: a term ID of a term whose children are allowed. This should be
* '0' if all terms in a vocabulary are allowed. The allowed values do not
* include the parent term.
@@ -1074,7 +1074,7 @@ function taxonomy_field_info() {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => '0',
+ 'vocabulary' => '',
'parent' => '0',
),
),
@@ -1148,8 +1148,8 @@ function taxonomy_field_validate($entity_type, $entity, $field, $instance, $lang
$validate = FALSE;
foreach ($field['settings']['allowed_values'] as $settings) {
// If no parent is specified, check if the term is in the vocabulary.
- if (isset($settings['vid']) && empty($settings['parent'])) {
- if ($settings['vid'] == $terms[$item['tid']]->vid) {
+ if (isset($settings['vocabulary']) && empty($settings['parent'])) {
+ if ($settings['vocabulary'] == $terms[$item['tid']]->vocabulary_machine_name) {
$validate = TRUE;
break;
}
@@ -1258,10 +1258,11 @@ function taxonomy_field_formatter_view($entity_type, $entity, $field, $instance,
function taxonomy_allowed_values($field) {
$options = array();
foreach ($field['settings']['allowed_values'] as $tree) {
- $terms = taxonomy_get_tree($tree['vid'], $tree['parent']);
- if ($terms) {
- foreach ($terms as $term) {
- $options[$term->tid] = str_repeat('-', $term->depth) . $term->name;
+ if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary'])) {
+ if ($terms = taxonomy_get_tree($vocabulary->vid, $tree['parent'])) {
+ foreach ($terms as $term) {
+ $options[$term->tid] = str_repeat('-', $term->depth) . $term->name;
+ }
}
}
}
@@ -1360,9 +1361,11 @@ function taxonomy_autocomplete_validate($element, &$form_state) {
if ($tags = $element['#value']) {
// Collect candidate vocabularies.
$field = $form_state['field'][$element['#field_name']][$element['#language']]['field'];
- $vids = array();
+ $vocabularies = array();
foreach ($field['settings']['allowed_values'] as $tree) {
- $vids[] = $tree['vid'];
+ if ($vocabulary = taxonomy_vocabulary_machine_name_load($tree['vocabulary'])) {
+ $vocabularies[$vocabulary->vid] = $vocabulary;
+ }
}
// Translate term names into actual terms.
@@ -1370,14 +1373,14 @@ function taxonomy_autocomplete_validate($element, &$form_state) {
foreach ($typed_terms as $typed_term) {
// See if the term exists in the chosen vocabulary and return the tid;
// otherwise, create a new 'autocreate' term for insert/update.
- if ($possibilities = taxonomy_term_load_multiple(array(), array('name' => trim($typed_term), 'vid' => $vids))) {
+ if ($possibilities = taxonomy_term_load_multiple(array(), array('name' => trim($typed_term), 'vid' => array_keys($vocabularies)))) {
$term = array_pop($possibilities);
}
else {
- $vocabulary = taxonomy_vocabulary_load($vids[0]);
+ $vocabulary = reset($vocabularies);
$term = array(
'tid' => 'autocreate',
- 'vid' => $vids[0],
+ 'vid' => $vocabulary->vid,
'name' => $typed_term,
'vocabulary_machine_name' => $vocabulary->machine_name,
);
@@ -1403,17 +1406,17 @@ function taxonomy_field_settings_form($field, $instance, $has_data) {
$vocabularies = taxonomy_get_vocabularies();
$options = array();
foreach ($vocabularies as $vocabulary) {
- $options[$vocabulary->vid] = $vocabulary->name;
+ $options[$vocabulary->machine_name] = $vocabulary->name;
}
$form['allowed_values'] = array(
'#tree' => TRUE,
);
foreach ($field['settings']['allowed_values'] as $delta => $tree) {
- $form['allowed_values'][$delta]['vid'] = array(
+ $form['allowed_values'][$delta]['vocabulary'] = array(
'#type' => 'select',
'#title' => t('Vocabulary'),
- '#default_value' => $tree['vid'],
+ '#default_value' => $tree['vocabulary'],
'#options' => $options,
'#required' => TRUE,
'#description' => t('The vocabulary which supplies the options for this field.'),
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index 9edc6c70f..766e1832f 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -379,7 +379,7 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => $this->vocabulary->vid,
+ 'vocabulary' => $this->vocabulary->machine_name,
'parent' => 0,
),
),
@@ -845,7 +845,7 @@ class TaxonomyTermFieldTestCase extends TaxonomyWebTestCase {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => $this->vocabulary->vid,
+ 'vocabulary' => $this->vocabulary->machine_name,
'parent' => '0',
),
),
@@ -905,7 +905,7 @@ class TaxonomyTermFieldTestCase extends TaxonomyWebTestCase {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => $this->vocabulary->vid,
+ 'vocabulary' => $this->vocabulary->machine_name,
'parent' => '0',
),
),
@@ -981,7 +981,7 @@ class TaxonomyTokenReplaceTestCase extends TaxonomyWebTestCase {
'settings' => array(
'allowed_values' => array(
array(
- 'vid' => $this->vocabulary->vid,
+ 'vocabulary' => $this->vocabulary->machine_name,
'parent' => 0,
),
),