|
@@ -30,6 +30,10 @@ function materio_search_api_permission() {
|
|
|
'title' => t('administer Materio search api'),
|
|
|
'description' => t('Administer materio search api.'),
|
|
|
),
|
|
|
+ 'use materio search api filters' => array(
|
|
|
+ 'title' => t('use Materio search api filters'),
|
|
|
+ 'description' => t('Use materio search api filters.'),
|
|
|
+ ),
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -92,6 +96,11 @@ function materio_search_api_block_info() {
|
|
|
'info' => t('Materio search api view mode selection'),
|
|
|
'cache' => DRUPAL_NO_CACHE
|
|
|
);
|
|
|
+
|
|
|
+ // $blocks['materio_search_api_filters'] = array(
|
|
|
+ // 'info' => t('Materio search api filters'),
|
|
|
+ // 'cache' => DRUPAL_NO_CACHE
|
|
|
+ // );
|
|
|
|
|
|
return $blocks;
|
|
|
}
|
|
@@ -117,6 +126,12 @@ function materio_search_api_block_view($delta = '') {
|
|
|
$block['content'] = theme('materio_search_api_select_viewmode_block', array());
|
|
|
}
|
|
|
break;
|
|
|
+ // case 'materio_search_api_filters':
|
|
|
+ // if (user_access('use materio search api filters')) {
|
|
|
+ // $block['subject'] = t('Filters');
|
|
|
+ // $block['content'] = theme('materio_search_api_filters_block', array());
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
}
|
|
|
return $block;
|
|
|
}
|
|
@@ -146,31 +161,35 @@ function materio_search_api_entity_info_alter(&$entity_info) {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
-* Implements hook_preprocess_node().
|
|
|
-*/
|
|
|
-function materio_search_api_preprocess_node(&$vars) {
|
|
|
- // $vars['theme_hook_suggestions'][] = 'node__'.$vars['view_mode'];
|
|
|
- // $vars['theme_hook_suggestions'][] = 'node__' . $vars['type'] . '__' . $vars['view_mode'];
|
|
|
- // dsm($vars, '$vars');
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
-* Implements hook_preprocess_field().
|
|
|
-*/
|
|
|
-function materio_search_api_preprocess_field(&$vars) {
|
|
|
- //$vars['theme_hook_suggestions'][] = 'field__' . $vars['element']['#view_mode'];
|
|
|
- //$vars['theme_hook_suggestions'][] = 'field__' . $vars['element']['#field_type'] . '__' . $vars['element']['#view_mode'];
|
|
|
- //$vars['theme_hook_suggestions'][] = 'field__' . $vars['element']['#field_name'] . '__' . $vars['element']['#view_mode'];
|
|
|
- // dsm($vars, '$vars');
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* materiobase_search_form()
|
|
|
*/
|
|
|
function materio_search_api_search_form($form, &$form_state){
|
|
|
+ // dsm($form_state, 'form_state');
|
|
|
+ // dsm($form, 'form');
|
|
|
+ global $user;
|
|
|
$form = array();
|
|
|
|
|
|
+ if(user_access('use materio search api filters')){
|
|
|
+
|
|
|
+ $index = search_api_index_load(variable_get('mainsearchindex', -1));
|
|
|
+ $indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'];
|
|
|
+
|
|
|
+ foreach ($indexed_bundles as $bundle) {
|
|
|
+ $bundles_options[$bundle] = $bundle;
|
|
|
+ $default_bundles[] = $bundle;
|
|
|
+ }
|
|
|
+
|
|
|
+ $user_bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles;
|
|
|
+
|
|
|
+ $form['bundles_filter'] = array(
|
|
|
+ '#type'=>'checkboxes',
|
|
|
+ '#options' => $bundles_options,
|
|
|
+ '#default_value' => $user_bundles_filter,
|
|
|
+ '#attributes' => array('class'=>array('btn-group')),
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
$args = arg();
|
|
|
$path = array_shift($args);
|
|
|
$keys = implode('/', $args);
|
|
@@ -203,9 +222,30 @@ function materio_search_api_search_form_validate($form, &$form_state){
|
|
|
}
|
|
|
|
|
|
function materio_search_api_search_form_submit($form, &$form_state){
|
|
|
- $keys = $form_state['values']['searchfield'];
|
|
|
- // drupal_go_to('base/explore/'.$keys);
|
|
|
- $form_state['redirect'] = 'explore/'.$keys;
|
|
|
+ // dsm($form_state, 'form_state');
|
|
|
+ global $user;
|
|
|
+ if(user_access('use materio search api filters')){
|
|
|
+ foreach($form_state['values']['bundles_filter'] as $bundle => $value)
|
|
|
+ if($value)
|
|
|
+ $bundles[] = $bundle;
|
|
|
+
|
|
|
+ # if no filter checked we checked them all by default
|
|
|
+ if(!isset($bundles))
|
|
|
+ foreach($form_state['values']['bundles_filter'] as $bundle => $value)
|
|
|
+ $bundles[] = $bundle;
|
|
|
+ }else{
|
|
|
+ # if user have no access to filters
|
|
|
+ $index = search_api_index_load(variable_get('mainsearchindex', -1));
|
|
|
+ $indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'];
|
|
|
+
|
|
|
+ foreach ($indexed_bundles as $bundle) {
|
|
|
+ $bundles[] = $bundle;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ user_save($user, array("data"=>array('materiosearchapi_bundlesfilter' => $bundles)));
|
|
|
+
|
|
|
+ $form_state['redirect'] = 'explore/'.$form_state['values']['searchfield'];
|
|
|
}
|
|
|
|
|
|
|
|
@@ -246,6 +286,11 @@ function materio_search_api_theme($existing, $type, $theme, $path) {
|
|
|
'template' => 'materio-search-api-select-viewmode-block',
|
|
|
'path' => drupal_get_path('module', 'materio_search_api').'/templates',
|
|
|
),
|
|
|
+ // 'materio_search_api_filters_block' => array(
|
|
|
+ // 'arguments' => array(),
|
|
|
+ // 'template' => 'materio-search-api-filters-block',
|
|
|
+ // 'path' => drupal_get_path('module', 'materio_search_api').'/templates',
|
|
|
+ // ),
|
|
|
'materio_search_api_results' => array(
|
|
|
'arguments' => array(),
|
|
|
'template' => 'materio-search-api-results',
|
|
@@ -293,6 +338,36 @@ function template_preprocess_materio_search_api_select_viewmode_block(&$vars){
|
|
|
$vars['content'] = $content;
|
|
|
}
|
|
|
|
|
|
+// function template_preprocess_materio_search_api_filters_block(&$vars){
|
|
|
+
|
|
|
+// $index_machine_name = variable_get('mainsearchindex', -1);
|
|
|
+// $index = search_api_index_load($index_machine_name);
|
|
|
+// dsm($index, 'index');
|
|
|
+
|
|
|
+// // $entity_infos = entity_get_info($index->item_type);
|
|
|
+// // dsm($entity_infos, 'entity_infos');
|
|
|
+// $indexed_bundles = $index->options['data_alter_callbacks']['search_api_alter_bundle_filter']['settings']['bundles'];
|
|
|
+
|
|
|
+// dsm($indexed_bundles, 'indexed_bundles');
|
|
|
+
|
|
|
+
|
|
|
+// $vars['content'] = drupal_get_form('materio_search_api_filters_form', $indexed_bundles);
|
|
|
+// }
|
|
|
+
|
|
|
+// function materio_search_api_filters_form($form, $form_state, $bundles){
|
|
|
+// $form = array();
|
|
|
+// dsm($bundles, 'bundles');
|
|
|
+// foreach ($bundles as $bundle) {
|
|
|
+// $form[$bundle . '_filter'] = array(
|
|
|
+// '#type'=>'checkbox',
|
|
|
+// '#default_value' => -1,
|
|
|
+// '#title' => $bundle,
|
|
|
+// );
|
|
|
+// }
|
|
|
+
|
|
|
+// return $form;
|
|
|
+// }
|
|
|
+
|
|
|
/**
|
|
|
* Function for preprocessing the variables for the search_api_page_results
|
|
|
* template.
|