1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- /**
- * @file
- * Path generation for Apache Solr Search.
- *
- * Available vars:
- * $keywords: user input
- * $types: content types (machine names[])
- * $terms: taxonomy terms (tids[])
- * $keys: complete search phrase, as core would have done it
- *
- * To return:
- * the complete search path
- *
- */
- function _custom_search_apachesolr_search($variables) {
- // Set default path in case the core search page path isn't set yet.
- $path = 'search/apachesolr_search';
- $solr_info = apachesolr_search_page_load('core_search');
- if (isset($solr_info['search_path'])) {
- // Use the configured Solr search path instead of default path.
- $path = $solr_info['search_path'];
- }
- $type = $path . '/' . $variables['keywords'];
- $keys = array();
- if (count($variables['types']) && !in_array('all', $variables['types'])) {
- foreach ($variables['types'] as $t) {
- $keys['f[' . count($keys) . ']'] = 'bundle:' . $t;
- }
- }
- if (module_exists('taxonomy') && count($variables['terms'])) {
- // get all fields info to get correct filter names
- $fields = field_info_fields();
- $taxonomy_fields = array();
- foreach ($fields as $name => $settings) {
- if ($settings['type'] == 'taxonomy_term_reference') {
- $voc = taxonomy_vocabulary_machine_name_load($settings['settings']['allowed_values'][0]['vocabulary']);
- $taxonomy_fields[$voc->vid] = $name;
- }
- }
- // build keys for taxonomy
- foreach ($variables['terms'] as $t) {
- $vocid = taxonomy_term_load($t)->vid;
- $keys['f[' . count($keys) . ']'] = 'im_' . $taxonomy_fields[$vocid] . ':' . $t;
- }
- }
- return array('path' => $type, 'query' => $keys);
- }
|