diff --git a/materio_search_api.module b/materio_search_api.module
index 967e04a3..2a6a48e0 100755
--- a/materio_search_api.module
+++ b/materio_search_api.module
@@ -96,7 +96,8 @@ function materio_search_api_menu() {
}
function materio_search_api_access_search(){
- return user_access('use materio search api for breves') || user_access('use materio search api');
+ return true;
+ // return user_access('use materio search api for breves') || user_access('use materio search api');
}
@@ -355,10 +356,6 @@ function materio_search_api_term_property_dup_name($term){
return $term->name_field[$lang][0]['value'];
}
-
-
-
-
/**
* - - -- - - - - - - blocks - - - - - - - - - - -
*
@@ -766,60 +763,79 @@ function template_preprocess_materio_search_api_select_viewmode_block(&$vars){
function template_preprocess_materio_search_api_results(array &$vars) {
// dsm($vars, '$vars');
$results = $vars['results'];
- $keys = $vars['keys'];
- // $vars['items'] = $vars['index']->loadItems(array_keys($vars['results']['results']));
- $vars['result_count'] = $results['result count'];
- $vars['sec'] = round($results['performance']['complete'], 3);
+ if(isset($results['result count'])){
+ // $vars['items'] = $vars['index']->loadItems(array_keys($vars['results']['results']));
+ $vars['result_count'] = $results['result count'];
+ $vars['sec'] = round($results['performance']['complete'], 3);
- $vars['keywords'] = implode(', ', $vars['keys']);
+ $vars['keywords'] = $vars['keys'];
- if(isset($results['breves count'])){
+ if(isset($results['breves count'])){
+ // for free users
+ $vars['perfascard'] = true;
+ $vars['search_performance'] = format_plural(
+ $results['breves count'],
+ 'The search found 1 news ',
+ 'The search found @count news '
+ );
+ $vars['search_performance'] .= format_plural(
+ $vars['result_count'] - $results['breves count'],
+ 'with 1 associated matter.',
+ 'with @count associated matters.'
+ );
+ $vars['search_performance'] .= format_plural(
+ $results['could results']['result count'],
+ ' You could have found 1 result with a ',
+ ' You could have found @count results with a '
+ );
+ $vars['search_performance'] .= l(t('full access to materiO\'.'), 'node/11187');
+
+ $vars['search_performance'] .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button'))));
+
+ }else{
+ // for members
+ $vars['perfascard'] = false;
+
+ // $vars['search_performance'] = format_plural(
+ // // $results['result count'],
+ // $vars['result_count'],
+ // 'The search found 1 result ',
+ // 'The search found @count results '
+ // )
+
+ $vars['search_performance'] = t('The search found @count result(s) with keywords @keys.', array(
+ "@count"=>$vars['result_count'],
+ "@keys"=>$vars['keywords'])
+ );
+
+ // TODO indicate how many materials and how many news
+ // $vars['search_performance'] = t('The search found @count result(s) with keywords @keys. @mat materials and @new news.', array(
+ // "@count"=>$vars['result_count'],
+ // "@keys"=>$vars['keywords'],
+ // "@mat"=>4,
+ // "@new"=>7)
+ // );
+ }
+ }else{
+ //for anonymous
$vars['perfascard'] = true;
- $vars['search_performance'] = format_plural(
- $results['breves count'],
- 'The search found 1 news ',
- 'The search found @count news '
- );
- $vars['search_performance'] .= format_plural(
- $vars['result_count'] - $results['breves count'],
- 'with 1 associated matter.',
- 'with @count associated matters.'
- );
- $vars['search_performance'] .= format_plural(
+
+ $perfoutput = t('Your can\'t access to the materiO\' search tool without an account.').'
';
+
+ $perfoutput .= format_plural(
$results['could results']['result count'],
' You could have found 1 result with a ',
' You could have found @count results with a '
);
- $vars['search_performance'] .= l(t('full access to materiO\'.'), 'node/11187');
+ $perfoutput .= l(t('full access to materiO\'.'), 'node/11187');
- $vars['search_performance'] .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button'))));
-
- }else{
- $vars['perfascard'] = false;
-
- // $vars['search_performance'] = format_plural(
- // // $results['result count'],
- // $vars['result_count'],
- // 'The search found 1 result ',
- // 'The search found @count results '
- // )
-
- $vars['search_performance'] = t('The search found @count result(s) with keywords @keys.', array(
- "@count"=>$vars['result_count'],
- "@keys"=>$vars['keywords'])
- );
-
- // TODO indicate how many materials and how many news
- // $vars['search_performance'] = t('The search found @count result(s) with keywords @keys. @mat materials and @new news.', array(
- // "@count"=>$vars['result_count'],
- // "@keys"=>$vars['keywords'],
- // "@mat"=>4,
- // "@new"=>7)
- // );
+ $perfoutput .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button'))));
+ $vars['search_performance'] = $perfoutput;
}
+
//dsm($vars, '$vars');
}
diff --git a/materio_search_api.pages.inc b/materio_search_api.pages.inc
index 7d743b0b..6e401492 100755
--- a/materio_search_api.pages.inc
+++ b/materio_search_api.pages.inc
@@ -127,7 +127,6 @@ function materio_search_api_results_search(){
// retreive typed words separated by slahes as a sentence
$args = func_get_args();
$typed = implode('/', $args);
- // dsm($typed, 'typed');
// remove query page params
preg_match_all('/\?page=([0-9]+)/', $typed, $pages);
@@ -135,6 +134,7 @@ function materio_search_api_results_search(){
if($pages[0]){
$typed = str_replace($pages[0][0], '', $typed);
}
+ // dsm($typed, 'typed');
global $language;
global $user;
@@ -156,51 +156,55 @@ function materio_search_api_results_search(){
$index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
// dsm($index_machine_name, '$index_machine_name');
$index = search_api_index_load($index_machine_name);
-
- $could_index_machine_name = variable_get('mainsearchindex_'.$language->language, -1);
- $could_index = search_api_index_load($index_machine_name);
}
- // $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
- // dsm($index_machine_name, '$index_machine_name');
- $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; }
- }
+ // potential results index for anonymous and free user
+ $could_index_machine_name = variable_get('mainsearchindex_'.$language->language, -1);
+ $could_index = search_api_index_load($index_machine_name);
- $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');
- // dsm($viewmode, 'viewmode');
-
- // if ($keys) {
if ($typed) {
// 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');
+
$limit = variable_get($viewmode.'_limite', '10');
$offset = pager_find_page() * $limit; //$page*$limit;//
- $query = search_api_query($index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))
- // ->keys(implode(' ', $keys))
- ->keys($typed)
- ->range($offset, $limit);
+ if(isset($index)){
- if(count($bundles_filter)){
- $filter = $query->createFilter('OR');
- foreach ($bundles_filter as $type) {
- $filter->condition('type', $type, '=');
+ // $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
+ // dsm($index_machine_name, '$index_machine_name');
+ $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; }
}
- // dsm($filter, 'filter');
- $query->filter($filter);
+
+ $bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles;
+ // dsm($bundles_filter, 'bundles_filter');
+
+ $query = search_api_query($index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))
+ // ->keys(implode(' ', $keys))
+ ->keys($typed)
+ ->range($offset, $limit);
+
+ if(count($bundles_filter)){
+ $filter = $query->createFilter('OR');
+ foreach ($bundles_filter as $type) {
+ $filter->condition('type', $type, '=');
+ }
+ // dsm($filter, 'filter');
+ $query->filter($filter);
+ }
+
+ // $query->setOption('search_api_bypass_access', true);
+ $query->setOption('search_api_access_account', $user);
+
+ $results = $query->execute();
}
- // $query->setOption('search_api_bypass_access', true);
- $query->setOption('search_api_access_account', $user);
-
- $results = $query->execute();
-
# in case of utilisateur search, run a real search to indicate how much items you could find
if(isset($could_index)){
$could_query = search_api_query($could_index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))
@@ -217,58 +221,56 @@ function materio_search_api_results_search(){
$ret['message'] = t('An error occurred while executing the search. Please try again or contact the site administrator if the problem persists.');
watchdog('materiobasemod', 'search error: !msg.', array('!msg' => $e->getMessage()), WATCHDOG_ERROR, l(t('search page'), $_GET['q']));
}
-
// dsm($results, 'results');
- // $accessible_results = array();
- // foreach ($results['results'] as $nid => $entity) {
- // if(node_access('view', node_load($nid)))
- // $accessible_results[$nid] = $entity;
- // }
- // $results['results'] = $accessible_results;
- // $results['result count'] = count($accessible_results);
+ if(user_access('use materio search api for breves') || user_access('use materio search api')){
+ if(user_access('use materio search api')){
+ $items = $index->loadItems(array_keys($results['results']));
+ // dsm($items, 'items');
+ // $count = $results['result count'];
+ }
+ else{
+ $items = array();
+ $breves = $index->loadItems(array_keys($results['results']));
+ foreach ($breves as $nid => $breve) {
+ if(!node_access('view', $breve))
+ continue;
-
- if(user_access('use materio search api')){
- $items = $index->loadItems(array_keys($results['results']));
- // dsm($items, 'items');
- // $count = $results['result count'];
- }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) {
- if(!isset($could_results['results'][$value['target_id']]))
- continue;
- $materiau = node_load($value['target_id']);
- if(node_access('view', $materiau))
- $items[] = $materiau;
+ $items[] = $breve;
+ $materiaux = field_get_items('node',$breve,'field_materiau_ref');
+ // dsm($materiaux, 'materiaux');
+ if($materiaux){
+ foreach ($materiaux as $value) {
+ if(!isset($could_results['results'][$value['target_id']]))
+ continue;
+ $materiau = node_load($value['target_id']);
+ if(node_access('view', $materiau))
+ $items[] = $materiau;
+ }
}
}
+
+ $results['breves count'] = $results['result count'];
+ $results['result count'] = count($items);
+ $results['could results'] = $could_results;
}
- $results['breves count'] = $results['result count'];
- $results['result count'] = count($items);
+ $ret['results']['#index'] = $index;//search_api_index_load($index_machine_name);
+ $ret['results']['#items'] = $items;
+ }
+ else{
+ // for anonymous
$results['could results'] = $could_results;
}
-
- $ret['results']['#theme'] = 'materio_search_api_results';
- $ret['results']['#index'] = $index;//search_api_index_load($index_machine_name);
+ // dsm($typed, 'typed');
+ // for all case
$ret['results']['#results'] = $results;
- $ret['results']['#items'] = $items;
- $ret['results']['#view_mode'] = $viewmode;
- // $ret['results']['#keys'] = $keys;
+ $ret['results']['#theme'] = 'materio_search_api_results';
$ret['results']['#keys'] = $typed;
+ $ret['results']['#view_mode'] = $viewmode;
+
drupal_set_title(''.check_plain($typed), PASS_THROUGH);
diff --git a/templates/materio-search-api-results.tpl.php b/templates/materio-search-api-results.tpl.php
index aef05f00..1897bd96 100755
--- a/templates/materio-search-api-results.tpl.php
+++ b/templates/materio-search-api-results.tpl.php
@@ -37,7 +37,7 @@