You are here

function biblio_search_query in Bibliography Module 7.2

Same name and namespace in other branches
  1. 7 includes/biblio.pages.inc \biblio_search_query()
1 call to biblio_search_query()
biblio_build_query in includes/biblio.pages.inc

File

includes/biblio.pages.inc, line 921

Code

function biblio_search_query($keys) {
  if (!empty($keys)) {
    $query = db_select('search_index', 'i', array(
      'target' => 'slave',
    ))
      ->extend('SearchQuery');

    // ->extend('PagerDefault');
    $query
      ->join('node', 'n', 'n.nid = i.sid');
    $query
      ->condition('n.status', 1)
      ->addTag('node_access')
      ->searchExpression($keys, 'node');

    // Insert special keywords.
    $query
      ->setOption('type', 'n.type');
    $query
      ->setOption('language', 'n.language');
    if ($query
      ->setOption('term', 'ti.tid')) {
      $query
        ->join('taxonomy_index', 'ti', 'n.nid = ti.nid');
    }

    // Only continue if the first pass query matches.
    if (!$query
      ->executeFirstPass()) {
      return array();
    }

    // Add the ranking expressions.
    _node_rankings($query);

    // Load results.
    $find = $query
      ->execute();
    $nids = array();
    foreach ($find as $item) {
      $nids[] = $item->sid;
    }
    return $nids;
  }
}