change view mode ++ type filters

Signed-off-by: bachy <git@g-u-i.net>
This commit is contained in:
bachy
2012-10-30 18:03:56 +01:00
parent 3faebabce1
commit 65ea77dea2
7 changed files with 243 additions and 76 deletions

View File

@@ -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');
// }