function apachesolr_search_init in Apache Solr Search 7
Same name and namespace in other branches
- 8 apachesolr_search.module \apachesolr_search_init()
- 6.3 apachesolr_search.module \apachesolr_search_init()
Implements hook_init().
Checks if we should run an empty facet query so the facet blocks can be displayed.
File
- ./
apachesolr_search.module, line 15 - Provides a content search implementation for node content for use with the Apache Solr search application.
Code
function apachesolr_search_init() {
// Useless without facetapi
if (!module_exists('facetapi')) {
return NULL;
}
// Using a simple query we will figure out if we have to execute this snippet
// on every page or exit as fast as possible.
$query = "SELECT count(env_id)\n FROM {apachesolr_environment_variable}\n WHERE name = 'apachesolr_search_show_facets'";
$count = db_query($query)
->fetchField();
if ($count == 0) {
return NULL;
}
// Load the default search page, we only support facets to link to this
// search page due to complexity and slow downs
$search_page_id = apachesolr_search_default_search_page();
$search_page = apachesolr_search_page_load($search_page_id);
// Do not continue if our search page is not valid
if (empty($search_page)) {
return NULL;
}
$show_facets = apachesolr_environment_variable_get($search_page['env_id'], 'apachesolr_search_show_facets', 0);
if ($show_facets) {
// Converts current path to lowercase for case insensitive matching.
$paths = array();
$path = drupal_strtolower(drupal_get_path_alias(current_path()));
// Use the path as the key to keep entries unique.
$paths[$path] = $path;
$path = drupal_strtolower(current_path());
$paths[$path] = $path;
// Do not continue if the current path is the default search path.
foreach ($paths as $path) {
if (drupal_match_path($path, $search_page['search_path'] . '*')) {
return;
}
}
$facet_pages = apachesolr_environment_variable_get($search_page['env_id'], 'apachesolr_search_facet_pages', '');
// Iterates over each environment to check if an empty query should be run.
if (!empty($facet_pages)) {
// Compares path with settings, runs query if there is a match.
$patterns = drupal_strtolower($facet_pages);
foreach ($paths as $path) {
if (drupal_match_path($path, $patterns)) {
try {
if (!empty($search_page['search_path'])) {
$solr = apachesolr_get_solr($search_page['env_id']);
$conditions = apachesolr_search_conditions_default($search_page);
// Initializes params for empty query.
$params = array(
'spellcheck' => 'false',
'fq' => isset($conditions['fq']) ? $conditions['fq'] : array(),
'rows' => 1,
);
$context['page_id'] = $search_page_id;
$context['search_type'] = 'apachesolr_search_show_facets';
apachesolr_search_run_empty('apachesolr', $params, $search_page['search_path'], $solr, $context);
// Exit the foreach loop if this has run.
break;
}
} catch (Exception $e) {
apachesolr_log_exception($search_page['env_id'], $e);
}
}
}
}
}
}