diff options
Diffstat (limited to 'modules/taxonomy/taxonomy.api.php')
-rw-r--r-- | modules/taxonomy/taxonomy.api.php | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/modules/taxonomy/taxonomy.api.php b/modules/taxonomy/taxonomy.api.php new file mode 100644 index 000000000..553386000 --- /dev/null +++ b/modules/taxonomy/taxonomy.api.php @@ -0,0 +1,148 @@ +<?php +// $Id$ + +/** + * @file + * Hooks provided by the Taxonomy module. + */ + +/** + * @addtogroup hooks + * @{ + */ + +/** + * Act on taxonomy vocabularies when loaded. + * + * Modules implementing this hook can act on the vocabulary object returned by + * taxonomy_vocabulary_load(). + * + * @param $vocabulary + * A taxonomy vocabulary object. + */ +function hook_taxonomy_vocabulary_load($vocabulary) { + $vocabulary->synonyms = variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE); +} + +/** + * Act on taxonomy vocabularies when inserted. + * + * Modules implementing this hook can act on the vocabulary object when saved + * to the database. + * + * @param $vocabulary + * A taxonomy vocabulary object. + */ +function hook_taxonomy_vocabulary_insert($vocabulary) { + if ($vocabulary->synonyms) { + variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', TRUE); + } +} + +/** + * Act on taxonomy vocabularies when updated. + * + * Modules implementing this hook can act on the term object when updated. + * + * @param $term + * A taxonomy term object, passed by reference. + */ +function hook_taxonomy_vocabulary_update($term) { + $status = $vocabulary->synonyms ? TRUE : FALSE; + if ($vocabulary->synonyms) { + variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', $status); + } +} + +/** + * Respond to the deletion of taxonomy vocabularies. + * + * Modules implementing this hook can respond to the deletion of taxonomy + * vocabularies from the database. + * + * @param $vocabulary + * A taxonomy vocabulary object. + */ +function hook_taxonomy_vocabulary_delete($vocabulary) { + if (variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE)) { + variable_del('taxonomy_' . $vocabulary->vid . '_synonyms'); + } +} + +/** + * Act on taxonomy terms when loaded. + * + * Modules implementing this hook can act on the term object returned by + * taxonomy_term_load(). + * + * @param $term + * A taxonomy term object. + */ +function hook_taxonomy_term_load($term) { + $term->synonyms = taxonomy_get_synonyms($term->tid); +} + +/** + * Act on taxonomy terms when inserted. + * + * Modules implementing this hook can act on the term object when saved to + * the database. + * + * @param $term + * A taxonomy term object. + */ +function hook_taxonomy_term_insert($term) { + if (!empty($term->synonyms)) { + foreach (explode ("\n", str_replace("\r", '', $term->synonyms)) as $synonym) { + if ($synonym) { + db_insert('term_synonym') + ->fields(array( + 'tid' => $term->tid, + 'name' => rtrim($synonym), + )) + ->execute(); + } + } + } +} + +/** + * Act on taxonomy terms when updated. + * + * Modules implementing this hook can act on the term object when updated. + * + * @param $term + * A taxonomy term object. + */ +function hook_taxonomy_term_update($term) { + hook_taxonomy_term_delete($term); + if (!empty($term->synonyms)) { + foreach (explode ("\n", str_replace("\r", '', $term->synonyms)) as $synonym) { + if ($synonym) { + db_insert('term_synonym') + ->fields(array( + 'tid' => $term->tid, + 'name' => rtrim($synonym), + )) + ->execute(); + } + } + } +} + +/** + * Respond to the deletion of taxonomy terms. + * + * Modules implementing this hook can respond to the deletion of taxonomy + * terms from the database. + * + * @param $term + * A taxonomy term object. + */ +function hook_taxonomy_term_delete($term) { + db_delete('term_synoynm')->condition('tid', $term->tid)->execute(); +} + +/** + * @} End of "addtogroup hooks". + */ |