function ajax_facets_process_facet_blocks in Ajax facets 7.3
Same name and namespace in other branches
- 7 ajax_facets.module \ajax_facets_process_facet_blocks()
- 7.2 ajax_facets.module \ajax_facets_process_facet_blocks()
Generates an array of facet block data for a given searcher and realm
Parameters
string $searcher: The machine name of the searcher.
string $realm_name: The machine name of the realm
Return value
array An array of facet block data
2 calls to ajax_facets_process_facet_blocks()
- ajax_facets_refresh_facets_content in ./
ajax_facets.pages.inc - Callback to update facets content by AJAX.
- ajax_facets_views_ajax_data_alter in ./
ajax_facets.module - Implementation of hook_views_ajax_data_alter()
File
- ./
ajax_facets.module, line 253
Code
function ajax_facets_process_facet_blocks($searcher, $realm_name = 'block') {
$map = facetapi_get_delta_map();
$facets_to_proceed = [];
$enabled_facets = facetapi_get_enabled_facets($searcher, $realm_name);
foreach ($enabled_facets as $facet) {
$facets_to_proceed[] = $facet['name'];
}
// Our return array
$blocks = [
'facet_blocks' => [],
'hide_blocks' => [],
'reset_urls' => [],
'active_items' => [],
];
$group = $searcher . ':' . $realm_name;
$realm = facetapi_realm_load($realm_name);
// Process values once per searcher-realm group.
$adapter = facetapi_adapter_load($searcher);
$builds[$group] = facetapi_build_realm($searcher, $realm_name);
// Take search id.
$search_id = key(search_api_current_search());
// Process facets.
foreach ($facets_to_proceed as $facet_name) {
$facet = $adapter
->getFacet([
'name' => $facet_name,
]);
//$facet->getSettings($builds[$group])->settings['facet_search_ids']
//search_api_views:search_results:page
// First check if the facet is enabled for this search.
$settings = $facet
->getSettings()->settings;
$default_true = isset($settings['default_true']) ? $settings['default_true'] : TRUE;
$facet_search_ids = isset($settings['facet_search_ids']) ? $settings['facet_search_ids'] : [];
// If facet is enabled for this search id.
// TODO replace it on facetapi_check_block_visibility() ?
if ($default_true == empty($facet_search_ids[$search_id])) {
$blocks['reset_urls'][$facet_name] = ajax_facets_facet_build_reset_path($facet, $adapter);
if (!empty($builds[$group][$facet_name]) && ($build = $facet
->getBuild())) {
$blocks['active_items'][$facet_name] = [];
foreach ($build as $key => $value) {
if (!empty($value['#active'])) {
$blocks['active_items'][$facet_name][] = "{$facet_name}:{$key}";
}
}
if (!empty($blocks['active_items'][$facet_name])) {
sort($blocks['active_items'][$facet_name]);
}
// Skip currently checked facet - we will not refresh them.
$blocks['facet_blocks'][$builds[$group][$facet_name]['#attributes']['id']] = drupal_render($builds[$group][$facet_name]);
}
else {
$facet_name = rawurlencode($facet_name);
$delta = array_search("{$searcher}:{$realm_name}:{$facet_name}", $map);
$blocks['hide_blocks'][] = 'block-facetapi-' . strtolower($delta);
}
}
}
return $blocks;
}