|
@@ -157,8 +157,25 @@ function materio_search_api_results_search(){
|
|
|
// dsm($keys, 'keys');
|
|
|
|
|
|
global $language;
|
|
|
- $index_machine_name = variable_get('mainsearchindex_'.$language->language, -1);
|
|
|
- $index = search_api_index_load($index_machine_name);
|
|
|
+
|
|
|
+
|
|
|
+ // if(user_access('use materio search api')){
|
|
|
+
|
|
|
+ // }else if(user_access('use materio search api for breves')){
|
|
|
+
|
|
|
+ // }
|
|
|
+
|
|
|
+ if(user_access('use materio search api')){
|
|
|
+ $index_machine_name = variable_get('mainsearchindex_'.$language->language, -1);
|
|
|
+ $index = search_api_index_load($index_machine_name);
|
|
|
+ }else if(user_access('use materio search api for breves')){
|
|
|
+ $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
|
|
|
+ // dsm($index_machine_name, '$index_machine_name');
|
|
|
+ $index = search_api_index_load($index_machine_name);
|
|
|
+ }
|
|
|
+
|
|
|
+ // $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
|
|
|
+ // dsm($index_machine_name, '$index_machine_name');
|
|
|
|
|
|
$indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'];
|
|
|
foreach ($indexed_bundles as $bundle) {
|
|
@@ -168,6 +185,7 @@ function materio_search_api_results_search(){
|
|
|
// dsm($bundles_filter, 'bundles_filter');
|
|
|
|
|
|
$viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
|
|
|
+ // dsm($viewmode, 'viewmode');
|
|
|
|
|
|
if ($keys) {
|
|
|
// TODO: cache the results with cache graceful : http://drupal.org/project/cache_graceful
|
|
@@ -220,38 +238,67 @@ function materio_search_api_results_search(){
|
|
|
|
|
|
// }
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ if(user_access('use materio search api')){
|
|
|
+ $items = $index->loadItems(array_keys($results['results']));
|
|
|
+ // dsm($items, 'items');
|
|
|
+ }else if(user_access('use materio search api for breves')){
|
|
|
+ $items = array();
|
|
|
+ $breves = $index->loadItems(array_keys($results['results']));
|
|
|
+ foreach ($breves as $nid => $breve) {
|
|
|
+
|
|
|
+ if(!node_access('view', $breve))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ $items[] = $breve;
|
|
|
+ $materiaux = field_get_items('node',$breve,'field_materiau_ref');
|
|
|
+ // dsm($materiaux, 'materiaux');
|
|
|
+ if($materiaux){
|
|
|
+ foreach ($materiaux as $value) {
|
|
|
+ $materiau = node_load($value['target_id']);
|
|
|
+ if(node_access('view', $materiau))
|
|
|
+ $items[] = $materiau;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
$ret['results']['#theme'] = 'materio_search_api_results';
|
|
|
/*
|
|
|
TODO choose index in module settings
|
|
|
*/
|
|
|
- $ret['results']['#index'] = search_api_index_load($index_machine_name);
|
|
|
+ $ret['results']['#index'] = $index;//search_api_index_load($index_machine_name);
|
|
|
$ret['results']['#results'] = $results;
|
|
|
|
|
|
+ $ret['results']['#items'] = $items;
|
|
|
+
|
|
|
$ret['results']['#view_mode'] = $viewmode;
|
|
|
$ret['results']['#keys'] = $keys;
|
|
|
|
|
|
drupal_set_title('<i class="icon-materio-search"></i>'.check_plain($typed), PASS_THROUGH);
|
|
|
|
|
|
- // Load pager.
|
|
|
- // if ($results['result count'] > $page->options['per_page']) {
|
|
|
- pager_default_initialize($results['result count'], $limit);
|
|
|
- $ret['results']['#pager'] = theme('pager');
|
|
|
- // }
|
|
|
+ if(isset($results)){
|
|
|
+ // Load pager.
|
|
|
+ // if ($results['result count'] > $page->options['per_page']) {
|
|
|
+ pager_default_initialize($results['result count'], $limit);
|
|
|
+ $ret['results']['#pager'] = theme('pager');
|
|
|
+ // }
|
|
|
|
|
|
- if (!empty($results['ignored'])) {
|
|
|
- drupal_set_message(
|
|
|
- t('The following search keys are too short or too common and were therefore ignored: "@list".',
|
|
|
- array( '@list' => implode(t('", "'), $results['ignored']) ) ),
|
|
|
- 'warning'
|
|
|
- );
|
|
|
- }
|
|
|
- if (!empty($results['warnings'])) {
|
|
|
- foreach ($results['warnings'] as $warning) {
|
|
|
- drupal_set_message($warning, 'warning');
|
|
|
+ if (!empty($results['ignored'])) {
|
|
|
+ drupal_set_message(
|
|
|
+ t('The following search keys are too short or too common and were therefore ignored: "@list".',
|
|
|
+ array( '@list' => implode(t('", "'), $results['ignored']) ) ),
|
|
|
+ 'warning'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (!empty($results['warnings'])) {
|
|
|
+ foreach ($results['warnings'] as $warning) {
|
|
|
+ drupal_set_message($warning, 'warning');
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
return $ret;
|