0
|
1 <?php
|
|
2 /**
|
|
3 * @file
|
|
4 * Helps site builders and module developers investigate a site.
|
|
5 */
|
|
6 /**
|
|
7 * Implements hook_form_alter() to show each form's identifier.
|
|
8 */
|
|
9 function solrext_form_alter(&$form, &$form_state, $form_id) {
|
|
10 $form['solrext_display_form_id'] = array(
|
|
11 '#type' => 'item',
|
|
12 '#title' => t('Form ID'),
|
|
13 '#markup' => $form_id,
|
|
14 '#theme_wrappers' => array('container__solrext__form'),
|
|
15 '#attributes' => array('class' => array('solrext')),
|
|
16 '#weight' => -100,
|
|
17 );
|
|
18 //debug($form, $form_id, TRUE);
|
|
19 }
|
|
20
|
|
21
|
|
22 /**
|
|
23 * Implements hook_help().
|
|
24 */
|
|
25 function solrext_help($path, $arg) {
|
|
26 switch ($path) {
|
|
27 case 'admin/structure/block':
|
|
28 return t('This site has stuff!');
|
|
29 case 'admin/appearance':{
|
|
30 return _solrext_help_admin_appearance();
|
|
31 }}
|
|
32 }
|
|
33
|
|
34
|
|
35
|
|
36
|
|
37
|
|
38 /**
|
|
39 * Help text for the admin/appearance page.
|
|
40 */
|
|
41 function _solrext_help_admin_appearance() {
|
|
42 $output = '';
|
|
43 $data = solrext_stats_enabled_themes();
|
|
44 $output .= format_plural(
|
|
45 $data['num_hidden'],
|
|
46 'There is one hidden theme.',
|
|
47 'There are @count hidden themes.'
|
|
48 );
|
|
49 return theme('solrext_help', array('text' => $output));
|
|
50 }
|
|
51
|
|
52 /**
|
|
53 * Implements hook_menu().
|
|
54 */
|
|
55 function solrext_menu() {
|
|
56 $items['admin/reports/solrtext'] = array(
|
|
57 'title' => 'X-ray technical site overview',
|
|
58 'description' => 'See the internal structure of this site.',
|
|
59 'page callback' => 'solrtext_overview_page',
|
|
60 'access callback' => TRUE,
|
|
61 'access arguments' => array('access site reports'),
|
|
62 );
|
|
63
|
|
64 $items['admin/reports/solrtext/overview'] = array(
|
|
65 'title' => 'Overview',
|
|
66 'description' => "Technical overview of the site's internals.",
|
|
67 'type' => MENU_DEFAULT_LOCAL_TASK,
|
|
68 'weight' => -10,
|
|
69 );
|
|
70
|
|
71 $items['admin/reports/solrtext/overview2'] = array(
|
|
72 'title' => 'Overview2',
|
|
73 'description' => "Technical overview of the site's internals.",
|
|
74 'type' => MENU_LOCAL_TASK,
|
|
75 'weight' => -1,
|
|
76 'page callback' => 'solrext_permission_names_page',
|
|
77 'access arguments' => array('access site reports'),
|
|
78 );
|
|
79
|
|
80
|
|
81 return $items;
|
|
82 }
|
|
83
|
|
84
|
|
85 function solrtext_overview_page(){
|
|
86 return "XX";
|
|
87 }
|
|
88
|
|
89
|
|
90
|
|
91 /**
|
|
92 * Display the X-ray permission names page.
|
|
93 */
|
|
94 function solrext_permission_names_page_OLD() {
|
|
95
|
|
96 $names = solrext_permission_names();
|
|
97 //debug($names);
|
|
98 return theme('solrext_permission_names', array('names' => $names));
|
|
99 }
|
|
100 /**
|
|
101 * Collect permission names.
|
|
102 */
|
|
103 function solrext_permission_names() {
|
|
104
|
|
105 $names = array();
|
|
106 $permissions = module_invoke_all('permission');
|
|
107 // Extract just the permission title from each permission array.
|
|
108
|
|
109 foreach ($permissions as $machine_name => $permission) {
|
|
110 $names[$machine_name] = $permission['title'];
|
|
111 }
|
|
112 // Put permission names in alphabetical order by title.
|
|
113 asort($names);
|
|
114
|
|
115 return $names;
|
|
116 }
|
|
117 /**
|
|
118 * Returns HTML of permission machine and display names in a table.
|
|
119 *
|
|
120 * @param $variables
|
|
121 * An associative array containing:
|
|
122 * - names: Array of human-readable names keyed by machine names.
|
|
123 *
|
|
124 * @ingroup themeable
|
|
125 */
|
|
126 function theme_solrext_permission_names($variables) {
|
|
127 $names = $variables['names'];
|
|
128 $output = '';
|
|
129 $header = array(t('Permission title'), t('Permission machine name'));
|
|
130 $rows = array();
|
|
131 foreach ($names as $machine_name => $title) {
|
|
132 $rows[] = array($title, $machine_name);
|
|
133 }
|
|
134 $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' =>
|
|
135 array('id' => 'solrext-permission-names')));
|
|
136 return $output;
|
|
137
|
|
138
|
|
139
|
|
140 /**
|
|
141 * Fetch information about themes.
|
|
142 */
|
|
143 function solrext_stats_enabled_themes() {
|
|
144 $themes = list_themes();
|
|
145 $num_themes = count($themes);
|
|
146 // Initialize variables for the data you will collect.
|
|
147 $num_hidden = 0; // Number of hidden themes.
|
|
148 $num_enabled = 0;
|
|
149 $summaries = array();
|
|
150 // Iterate through each theme, gathering data that you care about.
|
|
151 foreach ($themes as $themename => $theme) {
|
|
152 // Do not gather statistics for hidden themes, but keep a count of them.
|
|
153 if (isset($theme->info['hidden']) && $theme->info['hidden']) {
|
|
154 $num_hidden++;
|
|
155 }
|
|
156 else { // This is a visible theme.
|
|
157 if ($theme->status) {
|
|
158 $num_enabled++;
|
|
159 // This is an enabled theme, provide more stats.
|
|
160 $summaries[$theme->info['name']] = array(
|
|
161 'regions' => count($theme->info['regions']),
|
|
162 'overlay_regions' => count($theme->info['overlay_regions']),
|
|
163 'regions_hidden' => count($theme->info['regions_hidden']),
|
|
164 'features' => count($theme->info['features']),
|
|
165 'kindsofstylesheets' => count($theme->info['stylesheets']),
|
|
166 'allstylesheets' => isset($theme->info['stylesheets']['all']) ? count($theme->info['stylesheets']['all']) : 0,
|
|
167 );
|
|
168 }
|
|
169 }
|
|
170 }
|
|
171 return compact('num_themes', 'num_hidden', 'num_enabled', 'summaries');
|
|
172 }
|
|
173 }
|
|
174
|
|
175
|
|
176 /**
|
|
177 * Implements hook_theme().
|
|
178 */
|
|
179 function solrext_theme() {
|
|
180
|
|
181 return array(
|
|
182 'solrext_permission_names' => array(
|
|
183 'render element' => 'names',
|
|
184 ),
|
|
185 'solrext_show_page_callback' => array(
|
|
186 'variables' => array(
|
|
187 'page_callback' => NULL,
|
|
188 'include_file' => NULL,
|
|
189 'page_arguments' => NULL,
|
|
190 ),
|
|
191 ),
|
|
192 );
|
|
193 }
|
|
194
|
|
195
|
|
196 /**
|
|
197 * Display permission machine and display names in a table.
|
|
198 *
|
|
199 * @return
|
|
200 * An array as expected by drupal_render().
|
|
201 */
|
|
202 function solrext_permission_names_page() {
|
|
203 $build = array();
|
|
204 // Gather data, an array of human-readable names keyed by machine names.
|
|
205 $names = solrext_permission_names();
|
|
206 // Format the data as a table.
|
|
207 $header = array(t('Permission title'), t('Permission machine name'));
|
|
208 $rows = array();
|
|
209 foreach ($names as $machine_name => $title) {
|
|
210 $rows[] = array($title, $machine_name);
|
|
211 }
|
|
212 $build['names_table'] = array(
|
|
213 '#theme' => 'table__solrext__permission_names',
|
|
214 '#header' => $header,
|
|
215 '#rows' => $rows,
|
|
216 '#attributes' => array('id' => 'solrext-permission-names')
|
|
217 );
|
|
218 return $build;
|
|
219 }
|
|
220
|
|
221
|
|
222 /**
|
|
223 * Provide the page callback function (and other router item information).
|
|
224 */
|
|
225 function solrext_show_page_callback() {
|
|
226 debug("XX");
|
|
227 // Do not hand in the path; menu_get_item() finds dynamic paths on its own
|
|
228 // but fails if handed help's $path variable which is node/% for node/1.
|
|
229 $router_item = menu_get_item();
|
|
230 // menu_get_item() can return null when called via drush command line.
|
|
231 if ($router_item) {
|
|
232 return theme('solrext_show_page_callback', $router_item);
|
|
233 }
|
|
234 }
|
|
235 /**
|
|
236 * Theme the page callback and optionally other elements of a router item.
|
|
237 */
|
|
238 function theme_solrext_show_page_callback($variables) {
|
|
239 extract($variables, EXTR_SKIP);
|
|
240 $output = '';
|
|
241 $output .= '<p class="solrext-help solrext-page-callback">';
|
|
242 $output .= t('This page is brought to you by ');
|
|
243 if ($page_arguments) {
|
|
244 foreach ($page_arguments as $key => $value) {
|
|
245 $page_arguments[$key] = drupal_placeholder($value);
|
|
246 }
|
|
247 $output .= format_plural(count($page_arguments),
|
|
248 'the argument !arg handed to ',
|
|
249 'the arguments !arg handed to ',
|
|
250 array('!arg' => solrext_oxford_comma_list($page_arguments))
|
|
251 );
|
|
252 }
|
|
253 $output .= t('the function %func',
|
|
254 array('%func' => $page_callback . '()'));
|
|
255 if ($include_file) {
|
|
256 $output .= t(' and the included file %file',
|
|
257 array('%file' => $include_file));
|
|
258 }
|
|
259 $output .= '.</p>';
|
|
260 return $output;
|
|
261 } |