@@ -142,24 +142,45 @@ function materio_search_api_results_search(){//, $limit = 20, $page = 0
|
||||
|
||||
// $escaper = array("+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", '"', "~", "*", "?", ":", '\\');
|
||||
foreach ($words[0] as $word) {
|
||||
|
||||
// $word = preg_replace('/\b-/', '\-', trim($word));
|
||||
// dsm($word);
|
||||
|
||||
$keys[] = $word;
|
||||
}
|
||||
|
||||
$index_machine_name = variable_get('mainsearchindex', -1);
|
||||
$index = search_api_index_load($index_machine_name);
|
||||
|
||||
$indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'];
|
||||
foreach ($indexed_bundles as $bundle) {
|
||||
$default_bundles[] = $bundle;
|
||||
}
|
||||
$bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles;
|
||||
// dsm($bundles_filter, 'bundles_filter');
|
||||
|
||||
$viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
|
||||
|
||||
if ($keys) {
|
||||
try {
|
||||
// TODO: change limit function of viewmode small card -> many items, big cards -> few items
|
||||
$limit = 15;
|
||||
$limit = variable_get($viewmode.'_limite', '10');
|
||||
$offset = pager_find_page() * $limit; //$page*$limit;//
|
||||
|
||||
$index_machine_name = variable_get('mainsearchindex', -1);
|
||||
$query = search_api_query($index_machine_name, array('parse mode'=>'direct'))
|
||||
->keys(implode(' ', $keys))
|
||||
// TODO: add bundle filter
|
||||
// ->condition('type', 'breve')
|
||||
->range($offset, $limit);
|
||||
|
||||
$filter = $query->createFilter('OR');
|
||||
foreach ($bundles_filter as $type) {
|
||||
$filter->condition('type', $type, '=');
|
||||
}
|
||||
// dsm($filter, 'filter');
|
||||
$query->filter($filter);
|
||||
|
||||
// $bundle_query_filter = $query->createFilter();
|
||||
// $bundle_query_filter->condition('type', 'materiau');//$bundles_filter);
|
||||
// $query->filter($bundle_query_filter);
|
||||
|
||||
$results = $query->execute();
|
||||
}
|
||||
catch (SearchApiException $e) {
|
||||
@@ -192,19 +213,13 @@ function materio_search_api_results_search(){//, $limit = 20, $page = 0
|
||||
*/
|
||||
$ret['results']['#index'] = search_api_index_load('materiaux_breves');
|
||||
$ret['results']['#results'] = $results;
|
||||
/*
|
||||
TODO choose view mode from user data
|
||||
*/
|
||||
|
||||
$ret['results']['#view_mode'] = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
|
||||
|
||||
$ret['results']['#view_mode'] = $viewmode;
|
||||
$ret['results']['#keys'] = $keys;
|
||||
|
||||
|
||||
// Load pager.
|
||||
// if ($results['result count'] > $page->options['per_page']) {
|
||||
/*
|
||||
TODO set per page limit as module settings
|
||||
*/
|
||||
pager_default_initialize($results['result count'], $limit);
|
||||
$ret['results']['#pager'] = theme('pager');
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user