summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/taxonomy/taxonomy.module11
-rw-r--r--modules/taxonomy/taxonomy.test20
2 files changed, 29 insertions, 2 deletions
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 {