You are here

public function CurrentSearchItemActive::execute in Facet API 7.2

Same name and namespace in other branches
  1. 6.3 contrib/current_search/plugins/current_search/item_active.inc \CurrentSearchItemActive::execute()
  2. 7 contrib/current_search/plugins/current_search/item_active.inc \CurrentSearchItemActive::execute()

Implements CurrentSearchItem::execute().

Overrides CurrentSearchItem::execute

File

contrib/current_search/plugins/current_search/item_active.inc, line 22
The active current search item plugin class.

Class

CurrentSearchItemActive
Current search item plugin that displays the active facet items.

Code

public function execute(FacetapiAdapter $adapter) {
  $items = array();

  // Makes sure facet builds are initialized.
  $adapter
    ->processFacets();

  // Adds the keywords if any were passed.
  $keys = $adapter
    ->getSearchKeys();
  if ($this->settings['keys'] && $keys) {
    $items[] = theme('current_search_keys', array(
      'keys' => $keys,
      'adapter' => $adapter,
    ));
  }

  // Initializes links attributes, adds rel="nofollow" if configured.
  $attributes = $this->settings['nofollow'] ? array(
    'rel' => 'nofollow',
  ) : array();
  $attributes += array(
    'class' => array(),
  );

  // Gets the translated pattern with token replacements in tact.
  $pattern = $this
    ->translate('pattern', $this->settings['pattern']);

  // Adds active facets to the current search block.
  foreach ($adapter
    ->getAllActiveItems() as $item) {

    // Adds adapter to the active item for token replacement.
    $item['adapter'] = $adapter;

    // Builds variables to pass to theme function.
    $data = array(
      'facetapi_active_item' => $item,
    );
    $variables = array(
      'text' => token_replace($pattern, $data),
      'path' => $this
        ->getFacetPath($item, $adapter),
      'options' => array(
        'attributes' => $attributes,
        'html' => TRUE,
        'query' => $this
          ->getQueryString($item, $adapter),
      ),
    );

    // Renders the active link.
    $items[] = theme('facetapi_link_active', $variables);
  }

  // If there are items, return the render array.
  if ($items) {
    $classes = $this->settings['css'] ? current_search_get_classes($this->settings['classes']) : array();
    return array(
      '#theme' => 'item_list',
      '#items' => $items,
      '#attributes' => array(
        'class' => $classes,
      ),
    );
  }
}