You are here

search_api.inc in Custom Search 7

Path generation for Search API.

Available vars: $keywords: user input $types: content types (machine names[]) $terms: taxonomy terms (tids[]) $page: the Search API page

To return: the complete search path

File

includes/search_api.inc
View source
<?php

/**
 * @file
 * Path generation for Search API.
 *
 * Available vars:
 * $keywords: user input
 * $types: content types (machine names[])
 * $terms: taxonomy terms (tids[])
 * $page: the Search API page
 *
 * To return:
 * the complete search path
 */
function _custom_search_search_api_search($variables) {
  $type = $variables['page']->path . '/' . $variables['keywords'];
  $keys = array();
  if (count($variables['types']) && !in_array('all', $variables['types'])) {
    foreach ($variables['types'] as $key => $value) {
      $keys["filter[type][{$key}]"] = "\"{$value}\"";
    }
  }
  if (module_exists('taxonomy') && count($variables['terms'])) {

    // Get index fields info, and keeps only the taxonomy ones.
    $index = search_api_index_load($variables['page']->index_id);
    $fields = array();
    foreach ($index->options['fields'] as $field => $data) {
      if (isset($data['entity_type']) && $data['entity_type'] == 'taxonomy_term') {
        $field_info = field_info_field($field);
        $fields[$field_info['settings']['allowed_values'][0]['vocabulary']] = $field;
      }
    }

    // Adds terms.
    foreach ($variables['terms'] as $key => $value) {
      $term = taxonomy_term_load($value);
      if (array_key_exists($term->vocabulary_machine_name, $fields)) {
        $keys['filter[' . $fields[$term->vocabulary_machine_name] . '][' . $key . ']'] = "\"{$value}\"";
      }
    }
  }
  return array(
    'path' => $type,
    'query' => $keys,
  );
}

Functions

Namesort descending Description
_custom_search_search_api_search @file Path generation for Search API.