diff options
Diffstat (limited to 'dynamic_taxonomy.module')
-rw-r--r-- | dynamic_taxonomy.module | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/dynamic_taxonomy.module b/dynamic_taxonomy.module new file mode 100644 index 0000000..a78d33f --- /dev/null +++ b/dynamic_taxonomy.module @@ -0,0 +1,55 @@ +<?php +// $Id$ + +/** + * Implementation of hook_block(); + */ +function dynamic_taxonomy_block($op = 'list', $delta = 0, $edit = array()) { + switch ($op) { + case 'list': + $blocks[0]['info'] = t('Dynamic Taxonomy'); + $blocks[0]['cache'] = BLOCK_NO_CACHE; + return $blocks; + + case 'configure': + $form['dynamic_taxonomy_vid'] = array( + '#type' => 'radios', + '#title' => t('Select the vocabulary to list'), + '#default_value' => variable_get('dynamic_taxonomy_vid', 1), + '#options' => dynamic_taxonomy_get_vocabularies(), + ); + return $form; + + case 'save': + variable_set('dynamic_taxonomy_vid', (int) $edit['dynamic_taxonomy_vid']); + break; + + case 'view': + $vid = variable_get('dynamic_taxonomy_vid', 1); + $tree = dynamic_taxonomy_get_terms($vid); + $block['content'] = theme('item_list', $tree); + return $block; + } +} + +/** + * Get all vocabularies; + */ +function dynamic_taxonomy_get_vocabularies() { + $result = db_query('SELECT vid, name from {vocabulary}'); + while ($item = db_fetch_object($result)) { + $items[$item->vid] = $item->name; + } + return $items; +} + +function dynamic_taxonomy_get_terms($vid = null) { + if ($vid != null) { + $tree = taxonomy_get_tree($vid); + foreach ($tree as $term) { + $items[$term->tid] = $term->name; + } + return $items; + } + return null; +} |