From 991ff539c32bb61bffb4b41d132bb3b8b35c8ece Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Wed, 24 Sep 2008 18:42:00 +0000 Subject: #296910 by catch and webchick: Add reset parameter to taxonomy_vocabulary_load(). --- modules/taxonomy/taxonomy.module | 11 +++++++++-- modules/taxonomy/taxonomy.test | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) (limited to 'modules/taxonomy') diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index a93ef9fb0..438ddf0fe 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -985,15 +985,22 @@ function taxonomy_get_term_by_name($name) { * Return the vocabulary object matching a vocabulary ID. * * @param $vid - * The vocabulary's ID + * The vocabulary's ID. + * + * @param $reset + * A boolean flag indicating whether to reset the internal cache. * * @return * The vocabulary object with all of its metadata, if exists, FALSE otherwise. * Results are statically cached. */ -function taxonomy_vocabulary_load($vid) { +function taxonomy_vocabulary_load($vid, $reset = FALSE) { static $vocabularies = array(); + if ($reset) { + unset($vocabularies[$vid]); + } + if (empty($vocabularies[$vid])) { // Initialize so if this vocabulary does not exist, we have // that cached, and we will not try to load this later. diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test index 1f96bdaaf..17505f3da 100644 --- a/modules/taxonomy/taxonomy.test +++ b/modules/taxonomy/taxonomy.test @@ -49,6 +49,26 @@ class TaxonomyVocabularyLoadTestCase extends DrupalWebTestCase { $this->assertTrue(is_object($vocabulary), t('Vocabulary is an object')); $this->assertTrue($vocabulary->vid == $vid, t('Valid vocabulary vid is the same as our previously invalid one.')); } + + /** + * Ensure that the vocabulary static reset works correctly. + */ + function testTaxonomyVocabularyLoadStaticReset() { + // Load the first available vocabulary. + $original_vocabulary = taxonomy_vocabulary_load(1); + + // Change the name and description. + $edit = (array) $original_vocabulary; + $edit['name'] = $this->randomName(); + $edit['description'] = $this->randomName(); + $this->assertNotEqual($edit['name'], $original_vocabulary->name); + taxonomy_save_vocabulary($edit); + + // Load the vocabulary with $reset TRUE. + $new_vocabulary = taxonomy_vocabulary_load($original_vocabulary->vid, TRUE); + $this->assertEqual($new_vocabulary->name, $edit['name']); + $this->assertEqual($new_vocabulary->name, $edit['name']); + } } class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase { -- cgit v1.2.3