annotate sites/all/modules/custom/solrext/solrext.module @ 0:015d06b10d37 default tip

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