comparison solrsearch_search.install @ 0:a2b4f67e73dc default tip

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