You are here

function apachesolr_multisitesearch_block in Apache Solr Multisite Search 6

Same name and namespace in other branches
  1. 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;
  }
}