You are here

function apachesolr_multisitesearch_rebuild_facets in Apache Solr Multisite Search 6.2

Same name and namespace in other branches
  1. 6 apachesolr_multisitesearch.admin.inc \apachesolr_multisitesearch_rebuild_facets()
1 call to apachesolr_multisitesearch_rebuild_facets()
apachesolr_multisitesearch_apachesolr_multisitesearch_facets in ./apachesolr_multisitesearch.module
Implementation of hook_apachesolr_multisitesearch_facets().

File

./apachesolr_multisitesearch.admin.inc, line 273
Provides a multi-site search admin pages and functionality

Code

function apachesolr_multisitesearch_rebuild_facets() {
  $facets = array();
  $facets['type'] = array(
    'info' => t('Apache Solr Multisite Search: Filter by content type'),
    'facet_field' => 'type',
  );
  $facets['sname'] = array(
    'info' => t('Apache Solr Multisite Search: Filter by author'),
    'facet_field' => 'sname',
  );
  $facets['changed'] = array(
    'info' => t('Apache Solr Multisite Search: Filter by updated date'),
    'facet_field' => 'changed',
  );
  $facets['created'] = array(
    'info' => t('Apache Solr Multisite Search: Filter by post date'),
    'facet_field' => 'created',
  );
  $facets['hash'] = array(
    'info' => t('Apache Solr Multisite Search: Filter by site'),
    'facet_field' => 'hash',
  );
  $this_site_hash = apachesolr_site_hash();

  // Get taxonomy vocabulary facets.
  // @todo - use meta data also/instead.
  if (module_exists('taxonomy')) {
    module_load_include('inc', 'apachesolr', 'apachesolr.index');
    $data = variable_get('apachesolr_multisitesearch_metadata', array());
    $taxo = array();
    foreach ($data as $hash => $site) {
      if ($hash == $this_site_hash) {
        continue;
      }
      foreach ($site['sm_multisite_meta_taxonomy'] as $name) {
        $delta = 'sm_vid_' . $name;
        $taxo[$delta]['name'] = $name;
        $taxo[$delta]['sites'][] = $site['ss_multisite_meta_sitename'];
      }
    }
    $vocabs = taxonomy_get_vocabularies();
    foreach ($vocabs as $vid => $vocab) {

      // In this case the delta and facet field are the same.
      $delta = 'sm_vid_' . apachesolr_vocab_name($vid);
      $name = $vocab->name;
      if (isset($taxo[$delta])) {
        $name .= t(' (this site and !sites)', array(
          '!sites' => implode(', ', $taxo[$delta]['sites']),
        ));
        unset($taxo[$delta]);
      }
      $facets[$delta] = array(
        'info' => t('Apache Solr Multisite Search: Filter by taxonomy @name', array(
          '@name' => $name,
        )),
        'facet_field' => $delta,
      );
    }
    if (variable_get('apachesolr_multisitesearch_include_remote_taxonomies', TRUE)) {

      // Handle taxonomies only present at other sites.
      foreach ($taxo as $delta => $data) {
        $name = $data['name'] . ' (' . implode(', ', $data['sites']) . ')';
        $facets[$delta] = array(
          'info' => t('Apache Solr Multisite Search: Filter by taxonomy @name', array(
            '@name' => $name,
          )),
          'facet_field' => $delta,
        );
      }
    }
  }
  cache_set('apachesolr_multisitesearch:facets', $facets, 'cache_apachesolr');
  return $facets;
}