total control - admin dashboard
[indybay:drupal.git] / docs / sites / all / modules / contrib / total_control / plugins / content_types / taxonomy.inc
1 <?php
2
3 /**
4  * @file
5  *
6  * "Taxonomy" content type. It shows users with permissions statistics
7  * and links to manage terms in vocabularies on the site.
8  *
9  */
10
11 $plugin = array(
12   'single' => TRUE,
13   'title' => t('Admin - Taxonomy'),
14   'defaults' => array('vids' => NULL),
15   'icon' => 'cog.png',
16   'description' => t('Provides links to administer taxonomy.'),
17   'category' => t('Dashboard'),
18   'edit text' => t('Configure'),
19 );
20
21 /**
22  * 'Admin title' callback for the content type.
23  */
24 function total_control_taxonomy_content_type_admin_title($subtype = NULL, $conf = NULL, $context = NULL) {
25   return t('Administer Taxonomy');
26 }
27
28 /**
29  * 'Admin info' callback for the content type.
30  */
31 function total_control_taxonomy_content_type_admin_info($subtype = NULL, $conf = NULL, $context = NULL) {
32   $block = new stdClass();
33   $block->title = t('Provides links to administer taxonomy.');
34
35   return $block;
36 }
37
38 /**
39  * Run-time rendering of the body of the block.
40  */
41 function total_control_taxonomy_content_type_render($subtype, $conf, $panel_args, &$context) {
42   if (!module_exists('taxonomy')) {
43     return;
44   }
45   $block = new stdClass();
46   $block->module = t('total_control');
47   $block->title = t('Administer Taxonomy');
48
49   $vids = (isset($conf['vids']))? $conf['vids']: array();
50
51   $vocabs = taxonomy_get_vocabularies();
52   $options = array('query' => array('destination' => 'admin/dashboard'));
53   $header = array(
54     array('data' => t('Vocabulary')), 
55     array('data' => t('Operations'), 'colspan' => 3));
56   $rows = array();
57
58   if (!empty($vocabs)) {  
59     foreach ($vocabs as $vocab) {
60       if ((in_array($vocab->vid, $vids)) || !array_key_exists('vids', $conf)) {  
61         $term_count = db_query("SELECT count(*) FROM {taxonomy_term_data} WHERE vid = :vid", array(':vid' => $vocab->vid))->fetchField();
62         if (user_access('administer taxonomy') || user_access('edit terms in ' . $vocab->vid)) {
63           $terms = format_plural($term_count, '1 categories', '@count categories');
64           $rows[] = array(
65             'data' => array(
66               t($vocab->name . ': ' . $terms),
67               l(t('Configure'), 'admin/structure/taxonomy/' . $vocab->machine_name . '/edit', $options),
68               l(t('Manage categories'), 'admin/structure/taxonomy/' . $vocab->machine_name, $options),
69               l(t('Add new category'), 'admin/structure/taxonomy/' . $vocab->machine_name . '/add', $options),
70             ),
71           );
72         }
73       }
74     }
75   }
76
77   if (empty($rows)) {
78     $rows[] = array(
79       array(
80         'data' => t('There are no vocabularies to display.'),
81         'colspan' => 4,
82       )
83     );
84   }
85
86   $link = '';
87   if (user_access('administer taxonomy')) {
88     $link = l(t('Taxonomy administration'), 'admin/structure/taxonomy');
89   }
90
91   $block->content = theme('total_control_admin_table', array('header' => $header, 'rows' => $rows, 'link' => $link));
92
93   return $block;
94 }
95
96 /**
97  * 'Edit form' callback for the content type.
98  */
99 function total_control_taxonomy_content_type_edit_form($form, &$form_state) {
100   $conf = $form_state['conf'];
101
102   if (!module_exists('taxonomy')) {
103     return $form;
104   }
105
106   $vocabs = taxonomy_get_vocabularies();
107   if (!empty($vocabs)) {
108     $vocab_options = array();
109     $vocab_defaults = array();
110     foreach ($vocabs as $vid => $vocab) {
111       $vocab_options[$vid] = $vocab->name;
112       $vocab_defaults[$vid] = $vid;
113     }
114
115     if (isset($conf['vids'])) {
116       $vocab_defaults = $conf['vids'];
117     }
118
119     $form['vids'] = array(
120       '#type' => 'checkboxes',
121       '#title' => t('Include Vocabularies'),
122       '#multiple' => TRUE,
123       '#options' => $vocab_options,
124       '#default_value' => $vocab_defaults,
125       );
126   }
127
128   return $form;
129 }
130
131 /**
132  * 'Edit form' submit callback for the content type.
133  */
134 function total_control_taxonomy_content_type_edit_form_submit($form, &$form_state) {
135   foreach (array_keys($form_state['plugin']['defaults']) as $key) {
136     $form_state['conf'][$key] = $form_state['values'][$key];
137   } 
138 }