function apachesolr_multisitesearch_rebuild_facets in Apache Solr Multisite Search 6.2
Same name and namespace in other branches
- 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;
}