diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/taxonomy/taxonomy.module | 24 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.test | 12 |
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); + } } /** |