function ajax_facets_process_facet_blocks in Ajax facets 7
Same name and namespace in other branches
- 7.3 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 219 - Ajax facets implementation.
Code
function ajax_facets_process_facet_blocks($searcher, $realm_name = 'block') {
$map = facetapi_get_delta_map();
$facets_to_proceed = array();
$enabled_facets = facetapi_get_enabled_facets($searcher, $realm_name);
foreach ($enabled_facets as $facet) {
$facets_to_proceed[] = $facet['name'];
}
// Our return array
$blocks = array(
'facet_blocks' => array(),
'hide_blocks' => array(),
'reset_urls' => array(),
'active_items' => array(),
);
$group = $searcher . ':' . $realm_name;
$realm = facetapi_realm_load($realm_name);
// Process values once per searcher-realm group.
$adapter = facetapi_adapter_load($searcher);
$builds[$group] = $adapter ? $adapter
->buildRealm($realm_name) : array();
foreach ($facets_to_proceed as $facet_name) {
$facet = $adapter
->getFacet(array(
'name' => $facet_name,
));
$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] = array();
foreach ($build as $key => $value) {
if ($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 = urlencode($facet_name);
$delta = array_search("{$searcher}:{$realm_name}:{$facet_name}", $map);
$blocks['hide_blocks'][] = 'block-facetapi-' . strtolower($delta);
}
// Settings for update view.
$facet_settings = $facet
->getSettings($realm);
$update_results[$facet_name] = 0;
if ($facet_settings->settings['widget'] == 'facetapi_ajax_checkboxes' && isset($facet_settings->settings['checkboxes_update_results'])) {
$blocks['update_results'][$facet_name] = $facet_settings->settings['checkboxes_update_results'];
}
elseif ($facet_settings->settings['widget'] == 'facetapi_ajax_select' && isset($facet_settings->settings['selectbox_update_results'])) {
$blocks['update_results'][$facet_name] = $facet_settings->settings['selectbox_update_results'];
}
}
return $blocks;
}