summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/taxonomy/taxonomy.module24
-rw-r--r--modules/taxonomy/taxonomy.test12
2 files changed, 24 insertions, 12 deletions
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index b060a8dcb..cb1f25592 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -570,18 +570,18 @@ function taxonomy_term_delete($tid) {
}
}
- $term = taxonomy_term_load($tid);
-
- db_delete('taxonomy_term_data')
- ->condition('tid', $tid)
- ->execute();
- db_delete('taxonomy_term_hierarchy')
- ->condition('tid', $tid)
- ->execute();
-
- field_attach_delete('taxonomy_term', $term);
- module_invoke_all('taxonomy_term_delete', $term);
- taxonomy_terms_static_reset();
+ if ($term = taxonomy_term_load($tid)) {
+ db_delete('taxonomy_term_data')
+ ->condition('tid', $tid)
+ ->execute();
+ db_delete('taxonomy_term_hierarchy')
+ ->condition('tid', $tid)
+ ->execute();
+
+ field_attach_delete('taxonomy_term', $term);
+ module_invoke_all('taxonomy_term_delete', $term);
+ taxonomy_terms_static_reset();
+ }
}
$tids = $orphans;
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index af50e5346..a9938b087 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -337,6 +337,18 @@ class TaxonomyTermUnitTest extends TaxonomyWebTestCase {
'group' => 'Taxonomy',
);
}
+
+ function testTermDelete() {
+ $vocabulary = $this->createVocabulary();
+ $valid_term = $this->createTerm($vocabulary);
+ // Delete a valid term.
+ taxonomy_term_delete($valid_term->tid);
+ $terms = taxonomy_term_load_multiple(array(), array('vid' => $vocabulary->vid));
+ $this->assertTrue(empty($terms), 'Vocabulary is empty after deletion');
+
+ // Delete an invalid term. Should not throw any notices.
+ taxonomy_term_delete(42);
+ }
}
/**