Mercurial > hg > MPIWG-drupal-modules
comparison sites/all/modules/custom/solrconnect/apachesolr_search.install @ 0:015d06b10d37 default tip
initial
author | dwinter |
---|---|
date | Wed, 31 Jul 2013 13:49:13 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:015d06b10d37 |
---|---|
1 <?php | |
2 | |
3 /** | |
4 * @file | |
5 * Install and related hooks for apachesolr_search. | |
6 */ | |
7 | |
8 /** | |
9 * Implements hook_install(). | |
10 */ | |
11 function apachesolr_search_install() { | |
12 // Add a taxonomy search page to the database | |
13 $settings = array( | |
14 'apachesolr_search_search_type' => 'tid', | |
15 'apachesolr_search_per_page' => 10, | |
16 'apachesolr_search_browse' => 'results', | |
17 'apachesolr_search_spellcheck' => FALSE, | |
18 'apachesolr_search_search_box' => FALSE, | |
19 ); | |
20 $settings = serialize($settings); | |
21 | |
22 $fields = array( | |
23 'page_id' => 'taxonomy_search', | |
24 'label' => 'Taxonomy Search', | |
25 'description' => 'Search all items with given term', | |
26 'search_path' => 'taxonomy/term/%', | |
27 'env_id' => '', | |
28 'page_title' => '%value', | |
29 'settings' => $settings, | |
30 ); | |
31 db_insert('apachesolr_search_page')->fields($fields)->execute(); | |
32 } | |
33 | |
34 /** | |
35 * Implements hook_enable(). | |
36 */ | |
37 function apachesolr_search_enable() { | |
38 // Make sure the default core search page is installed. | |
39 $search_page = apachesolr_search_page_load('core_search'); | |
40 if (empty($search_page)) { | |
41 // Add Default search page (core search) | |
42 // This is a duplication from update_7004 but it is intended | |
43 // so future changes are possible without breaking the update | |
44 $settings = array( | |
45 'apachesolr_search_search_type' => 'custom', | |
46 'apachesolr_search_per_page' => 10, | |
47 'apachesolr_search_browse' => 'browse', | |
48 'apachesolr_search_spellcheck' => TRUE, | |
49 'apachesolr_search_not_removable' => TRUE, | |
50 'apachesolr_search_search_box' => TRUE, | |
51 ); | |
52 $settings = serialize($settings); | |
53 | |
54 $fields = array( | |
55 'page_id' => 'core_search', | |
56 'label' => 'Core Search', | |
57 'description' => 'Core Search', | |
58 'search_path' => 'search/site', | |
59 'env_id' => 'solr', | |
60 'page_title' => 'Site', | |
61 'settings' => $settings, | |
62 ); | |
63 db_insert('apachesolr_search_page')->fields($fields)->execute(); | |
64 } | |
65 | |
66 | |
67 $active = variable_get('search_active_modules', array('node', 'user')); | |
68 $active[] = 'apachesolr_search'; | |
69 variable_set('search_active_modules', array_unique($active)); | |
70 } | |
71 | |
72 /** | |
73 * Implements hook_schema(). | |
74 */ | |
75 function apachesolr_search_schema() { | |
76 $schema = array(); | |
77 | |
78 $schema['apachesolr_search_page'] = array( | |
79 'description' => 'Apache Solr Search search page settings.', | |
80 'export' => array( | |
81 // Environment machine name. | |
82 'key' => 'page_id', | |
83 // Description of key. | |
84 'key name' => 'search page machine name', | |
85 // Variable name to use in exported code. | |
86 'identifier' => 'searcher', | |
87 // Use the same hook as the API name below. | |
88 'default hook' => 'apachesolr_search_default_searchers', | |
89 'status' => 'apachesolr_search_page_status', | |
90 // CTools API implementation. | |
91 'api' => array( | |
92 'owner' => 'apachesolr_search', | |
93 'api' => 'apachesolr_search_defaults', | |
94 'minimum_version' => 3, | |
95 'current_version' => 3, | |
96 ), | |
97 // Includes all search page specific configurations. | |
98 'export callback' => 'apachesolr_search_page_settings_export', | |
99 ), | |
100 'fields' => array( | |
101 'page_id' => array( | |
102 'description' => 'The machine readable name of the search page.', | |
103 'type' => 'varchar', | |
104 'length' => 32, | |
105 'not null' => TRUE, | |
106 'default' => '', | |
107 ), | |
108 'label' => array( | |
109 'description' => 'The human readable name of the search page.', | |
110 'type' => 'varchar', | |
111 'length' => 32, | |
112 'not null' => TRUE, | |
113 'default' => '', | |
114 ), | |
115 'description' => array( | |
116 'description' => 'The description of the search page.', | |
117 'type' => 'varchar', | |
118 'length' => 255, | |
119 'not null' => TRUE, | |
120 'default' => '', | |
121 ), | |
122 'search_path' => array( | |
123 'description' => 'The path to the search page.', | |
124 'type' => 'varchar', | |
125 'length' => 255, | |
126 'not null' => TRUE, | |
127 'default' => '', | |
128 ), | |
129 'page_title' => array( | |
130 'description' => 'The title of the search page.', | |
131 'type' => 'varchar', | |
132 'length' => 255, | |
133 'not null' => TRUE, | |
134 'default' => '', | |
135 ), | |
136 'env_id' => array( | |
137 'description' => 'The machine name of the search environment.', | |
138 'type' => 'varchar', | |
139 'length' => 64, | |
140 'not null' => TRUE, | |
141 'default' => '', | |
142 ), | |
143 'settings' => array( | |
144 'description' => 'Serialized storage of general settings.', | |
145 'type' => 'text', | |
146 'serialize' => TRUE, | |
147 ), | |
148 ), | |
149 'primary key' => array('page_id'), | |
150 'indexes' => array( | |
151 'env_id' => array('env_id'), | |
152 ), | |
153 ); | |
154 | |
155 return $schema; | |
156 } | |
157 | |
158 /** | |
159 * Implements hook_uninstall(). | |
160 */ | |
161 function apachesolr_search_uninstall() { | |
162 $stored = variable_get('apachesolr_index_last', array()); | |
163 unset($stored['apachesolr_search']); | |
164 variable_set('apachesolr_index_last', $stored); | |
165 | |
166 $active = variable_get('search_active_modules', array('node', 'user')); | |
167 $idx = array_search('apachesolr_search', $active); | |
168 if ($idx !== FALSE) { | |
169 unset($active[$idx]); | |
170 variable_set('search_active_modules', $active); | |
171 } | |
172 // Remove variables. | |
173 variable_del('apachesolr_search_spellcheck'); | |
174 variable_del('apachesolr_search_mlt_blocks'); | |
175 variable_del('apachesolr_search_default_search_page'); | |
176 // Remove blocks. | |
177 db_delete('block')->condition('module', 'apachesolr_search')->execute(); | |
178 } | |
179 | |
180 /** | |
181 * Various updates for Drupal 7. | |
182 */ | |
183 function apachesolr_search_update_7000() { | |
184 $taxo_links = variable_get('apachesolr_search_taxonomy_links', 0); | |
185 // TODO - enable the new contrib module? | |
186 variable_del('apachesolr_search_taxonomy_links'); | |
187 // TODO - possibly rename block deltas, etc. | |
188 $active = variable_get('search_active_modules', array('node', 'user')); | |
189 $active[] = 'apachesolr_search'; | |
190 variable_set('search_active_modules', array_unique($active)); | |
191 if (variable_get('apachesolr_search_make_default', 0)) { | |
192 variable_set('search_default_module', 'apachesolr_search'); | |
193 } | |
194 variable_del('apachesolr_search_make_default'); | |
195 } | |
196 | |
197 /** | |
198 * Add apachesolr_search_page table. | |
199 */ | |
200 function apachesolr_search_update_7001() { | |
201 // Moved to 7002 | |
202 } | |
203 | |
204 /** | |
205 * Add apachesolr_search_page table for real. | |
206 */ | |
207 function apachesolr_search_update_7002() { | |
208 | |
209 $schema['apachesolr_search_page'] = array( | |
210 'description' => 'Apache Solr Search search page settings.', | |
211 'export' => array( | |
212 'key' => 'page_id', | |
213 'identifier' => 'searcher', | |
214 'default hook' => 'apachesolr_search_default_searchers', | |
215 'status' => 'apachesolr_search_page_status', | |
216 'api' => array( | |
217 'owner' => 'apachesolr_search', | |
218 'api' => 'apachesolr_search_defaults', | |
219 'minimum_version' => 3, | |
220 'current_version' => 3, | |
221 ), | |
222 'export callback' => 'apachesolr_search_page_settings_export', | |
223 ), | |
224 'fields' => array( | |
225 'page_id' => array( | |
226 'description' => 'The machine readable name of the search page.', | |
227 'type' => 'varchar', | |
228 'length' => 32, | |
229 'not null' => TRUE, | |
230 'default' => '', | |
231 ), | |
232 'label' => array( | |
233 'description' => 'The human readable name of the search page.', | |
234 'type' => 'varchar', | |
235 'length' => 32, | |
236 'not null' => TRUE, | |
237 'default' => '', | |
238 ), | |
239 'description' => array( | |
240 'description' => 'The description of the search page.', | |
241 'type' => 'varchar', | |
242 'length' => 255, | |
243 'not null' => TRUE, | |
244 'default' => '', | |
245 ), | |
246 'search_path' => array( | |
247 'description' => 'The path to the search page.', | |
248 'type' => 'varchar', | |
249 'length' => 255, | |
250 'not null' => TRUE, | |
251 'default' => '', | |
252 ), | |
253 'page_title' => array( | |
254 'description' => 'The title of the search page.', | |
255 'type' => 'varchar', | |
256 'length' => 255, | |
257 'not null' => TRUE, | |
258 'default' => '', | |
259 ), | |
260 'env_id' => array( | |
261 'description' => 'The machine name of the search environment.', | |
262 'type' => 'varchar', | |
263 'length' => 32, | |
264 'not null' => TRUE, | |
265 'default' => '', | |
266 ), | |
267 'settings' => array( | |
268 'description' => 'Serialized storage of general settings.', | |
269 'type' => 'text', | |
270 'serialize' => TRUE, | |
271 ), | |
272 ), | |
273 'primary key' => array('page_id'), | |
274 'indexes' => array( | |
275 'env_id' => array('env_id'), | |
276 ), | |
277 ); | |
278 if (db_table_exists('apachesolr_search_page')) { | |
279 // Just in case you are chasing HEAD. | |
280 db_drop_table('apachesolr_search_page'); | |
281 } | |
282 db_create_table('apachesolr_search_page', $schema['apachesolr_search_page']); | |
283 } | |
284 | |
285 | |
286 /** | |
287 * Delete all Apache Solr Search blocks - they moved to Facet API. | |
288 */ | |
289 function apachesolr_search_update_7003() { | |
290 // Remove blocks. | |
291 db_delete('block')->condition('module', 'apachesolr_search')->execute(); | |
292 } | |
293 | |
294 /** | |
295 * Add a default search page for core | |
296 * Add a taxonomy page if the taxonomy module was ever active | |
297 */ | |
298 function apachesolr_search_update_7004() { | |
299 // Add Default search page (core search) | |
300 $settings = array( | |
301 'apachesolr_search_search_type' => 'custom', | |
302 'apachesolr_search_per_page' => variable_get('apachesolr_rows', 10), | |
303 'apachesolr_search_browse' => variable_get('apachesolr_search_browse', 'browse'), | |
304 'apachesolr_search_spellcheck' => variable_get('apachesolr_search_spellcheck', TRUE), | |
305 'apachesolr_search_not_removable' => TRUE, | |
306 'apachesolr_search_search_box' => TRUE, | |
307 ); | |
308 $settings = serialize($settings); | |
309 | |
310 $fields = array( | |
311 'page_id' => 'core_search', | |
312 'label' => 'Core Search', | |
313 'description' => 'Site search', | |
314 'search_path' => 'search/site', | |
315 'env_id' => 'solr', | |
316 'page_title' => 'Site', | |
317 'settings' => $settings, | |
318 ); | |
319 db_insert('apachesolr_search_page')->fields($fields)->execute(); | |
320 // Remove variables. | |
321 variable_del('apachesolr_search_spellcheck'); | |
322 variable_del('apachesolr_search_browse'); | |
323 | |
324 // Add this taxonomy search page to the database | |
325 $settings = array( | |
326 'apachesolr_search_search_type' => 'tid', | |
327 'apachesolr_search_per_page' => 10, | |
328 'apachesolr_search_browse' => 'results', | |
329 'apachesolr_search_spellcheck' => FALSE, | |
330 'apachesolr_search_search_box' => FALSE, | |
331 ); | |
332 $settings = serialize($settings); | |
333 | |
334 $fields = array( | |
335 'page_id' => 'taxonomy_search', | |
336 'label' => 'Taxonomy Search', | |
337 'description' => 'Search all items with given term', | |
338 'search_path' => 'taxonomy/term/%', | |
339 'env_id' => '', | |
340 'page_title' => '%value', | |
341 'settings' => $settings, | |
342 ); | |
343 db_insert('apachesolr_search_page')->fields($fields)->execute(); | |
344 | |
345 // Check if the taxonomy module was ever present | |
346 $status = db_query("SELECT 1 FROM {system} WHERE name = 'apachesolr_taxonomy'")->fetchField(); | |
347 if ($status) { | |
348 $message = t('If you had the apachesolr_taxonomy module enabled please go to the !link and enable the Taxonomy Term page', array('!link' => l('Apache Solr custom pages', 'admin/config/search/apachesolr/search-pages'))); | |
349 drupal_set_message($message, 'warning'); | |
350 } | |
351 } | |
352 | |
353 /** | |
354 * Make the env_id length on the apachesolr_search_page table 64 characters | |
355 * to match the length of the env_id on all other tables | |
356 */ | |
357 function apachesolr_search_update_7005(&$sandbox) { | |
358 db_drop_index('apachesolr_search_page', 'env_id'); | |
359 db_change_field('apachesolr_search_page', 'env_id', 'env_id', | |
360 array( | |
361 'description' => 'The machine name of the search environment.', | |
362 'type' => 'varchar', | |
363 'length' => 64, | |
364 'not null' => TRUE, | |
365 'default' => '', | |
366 ), | |
367 array( | |
368 'indexes' => array( | |
369 'env_id' => array('env_id'), | |
370 ) | |
371 ) | |
372 ); | |
373 } | |
374 | |
375 /** | |
376 * Remove all apachesolr_search env variables for show_facets if it is zero | |
377 */ | |
378 function apachesolr_search_update_7006() { | |
379 module_load_include('module', 'apachesolr'); | |
380 $environments = apachesolr_load_all_environments(); | |
381 foreach ($environments as $environment) { | |
382 $show_facets = apachesolr_environment_variable_get($environment['env_id'], 'apachesolr_search_show_facets', 0); | |
383 if ($show_facets === 0) { | |
384 apachesolr_environment_variable_del($environment['env_id'], 'apachesolr_search_show_facets'); | |
385 } | |
386 } | |
387 } |