function apachesolr_multisitesearch_block in Apache Solr Multisite Search 6
Same name and namespace in other branches
- 6.2 apachesolr_multisitesearch.module \apachesolr_multisitesearch_block()
Implementation of hook_block().
File
- ./
apachesolr_multisitesearch.module, line 294 - Provides a multi-site search implementation for use with the Apache Solr module
Code
function apachesolr_multisitesearch_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$enabled_facets = apachesolr_multisitesearch_enabled_facets('apachesolr_multisitesearch');
$facets = apachesolr_multisitesearch_apachesolr_multisitesearch_facets();
// Add the blocks
$blocks = array();
foreach ($enabled_facets as $delta => $facet_field) {
if (isset($facets[$delta])) {
$blocks[$delta] = $facets[$delta] + array(
'cache' => BLOCK_CACHE_PER_PAGE,
);
}
}
$blocks['currentsearch'] = array(
'info' => t('Apache Solr Multisite Search: Current search'),
'cache' => BLOCK_CACHE_PER_PAGE,
);
return $blocks;
case 'view':
if (apachesolr_multisitesearch_has_searched()) {
// Get the query and response. Without these no blocks make sense.
$response = apachesolr_static_response_cache();
if (empty($response)) {
return;
}
$query = apachesolr_current_query();
switch ($delta) {
case 'currentsearch':
return apachesolr_multisitesearch_currentsearch($response, $query);
case 'sname':
return apachesolr_facet_block($response, $query, 'apachesolr_multisitesearch', $delta, $delta, t('Filter by author'));
case 'type':
return apachesolr_facet_block($response, $query, 'apachesolr_multisitesearch', $delta, $delta, t('Filter by type'), 'apachesolr_search_get_type');
case 'changed':
return apachesolr_date_facet_block($response, $query, 'apachesolr_multisitesearch', $delta, $delta, t('Filter by modification date'));
case 'created':
return apachesolr_date_facet_block($response, $query, 'apachesolr_multisitesearch', $delta, $delta, t('Filter by post date'));
case 'hash':
return apachesolr_facet_block($response, $query, 'apachesolr_multisitesearch', $delta, $delta, t('Filter by site'), 'theme_apachesolr_breadcrumb_hash');
}
}
break;
case 'configure':
if ($delta != 'currentsearch') {
return apachesolr_facetcount_form('apachesolr_multisitesearch', $delta);
}
break;
case 'save':
if ($delta != 'currentsearch') {
apachesolr_facetcount_save($edit);
}
break;
}
}