From c5f5eb4f6409ba3b315931db69829adbbfac81e1 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Fri, 5 Sep 2014 11:37:36 +0200 Subject: [PATCH] added some comments --- materio_search_api.pages.inc | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/materio_search_api.pages.inc b/materio_search_api.pages.inc index eb228985..61ade9da 100755 --- a/materio_search_api.pages.inc +++ b/materio_search_api.pages.inc @@ -189,47 +189,52 @@ function materio_search_api_results_search(){ // TODO: cache the results with cache graceful : http://drupal.org/project/cache_graceful try { - $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full'); - // dsm($viewmode, 'viewmode'); + # retrieve viewmode and then use it to define the query range + $viewmode = isset($user->data['materiosearchapi_viewmode']) + ? $user->data['materiosearchapi_viewmode'] + : variable_get('defaultviewmode', 'full'); $limit = variable_get($viewmode.'_limite', '10'); $offset = pager_find_page() * $limit; //$page*$limit;// if(isset($index)){ - // $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1); - // dsm($index_machine_name, '$index_machine_name'); + # define default bundle option (materiaux, breves) $default_bundles = array(); if(isset($index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'])){ $indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles']; foreach ($indexed_bundles as $bundle) { $default_bundles[] = $bundle; } } + # choose solr query bundle option + $bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) + ? $user->data['materiosearchapi_bundlesfilter'] + : $default_bundles; - $bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles; - // dsm($bundles_filter, 'bundles_filter'); - if($advanced){ - $query_options = array('conjunction'=>'AND', 'parse mode'=>'direct'); - } - else{ - $query_options = array('conjunction'=>'OR', 'parse mode'=>'direct'); - } + # choose solr query options + $query_options = $advanced + ? array('conjunction'=>'AND', 'parse mode'=>'direct') + : array('conjunction'=>'OR', 'parse mode'=>'direct'); + #create the solr query $query = search_api_query($index_machine_name, $query_options) ->keys($typed) ->range($offset, $limit); + # apply bundle options to solr query if usefull if(count($bundles_filter)){ $filter = $query->createFilter('OR'); - foreach ($bundles_filter as $type) { + foreach ($bundles_filter as $type) $filter->condition('type', $type, '='); - } - // dsm($filter, 'filter'); + $query->filter($filter); } // $query->setOption('search_api_bypass_access', true); + + # add user access solr query option $query->setOption('search_api_access_account', $user); + # execute solr query and record results $results = $query->execute(); }