improved the message to people who access to the serach tool without an account

cf link from daily materiO'
This commit is contained in:
Bachir Soussi Chiadmi 2014-07-15 19:45:08 +02:00
parent 488d4c19aa
commit 2e1e0cc05b
3 changed files with 144 additions and 124 deletions

View File

@ -96,7 +96,8 @@ function materio_search_api_menu() {
} }
function materio_search_api_access_search(){ 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']; return $term->name_field[$lang][0]['value'];
} }
/** /**
* - - -- - - - - - - blocks - - - - - - - - - - - * - - -- - - - - - - blocks - - - - - - - - - - -
* *
@ -766,15 +763,16 @@ function template_preprocess_materio_search_api_select_viewmode_block(&$vars){
function template_preprocess_materio_search_api_results(array &$vars) { function template_preprocess_materio_search_api_results(array &$vars) {
// dsm($vars, '$vars'); // dsm($vars, '$vars');
$results = $vars['results']; $results = $vars['results'];
$keys = $vars['keys'];
if(isset($results['result count'])){
// $vars['items'] = $vars['index']->loadItems(array_keys($vars['results']['results'])); // $vars['items'] = $vars['index']->loadItems(array_keys($vars['results']['results']));
$vars['result_count'] = $results['result count']; $vars['result_count'] = $results['result count'];
$vars['sec'] = round($results['performance']['complete'], 3); $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['perfascard'] = true;
$vars['search_performance'] = format_plural( $vars['search_performance'] = format_plural(
$results['breves count'], $results['breves count'],
@ -796,6 +794,7 @@ function template_preprocess_materio_search_api_results(array &$vars) {
$vars['search_performance'] .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button')))); $vars['search_performance'] .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button'))));
}else{ }else{
// for members
$vars['perfascard'] = false; $vars['perfascard'] = false;
// $vars['search_performance'] = format_plural( // $vars['search_performance'] = format_plural(
@ -817,8 +816,25 @@ function template_preprocess_materio_search_api_results(array &$vars) {
// "@mat"=>4, // "@mat"=>4,
// "@new"=>7) // "@new"=>7)
// ); // );
} }
}else{
//for anonymous
$vars['perfascard'] = true;
$perfoutput = t('Your can\'t access to the materiO\' search tool without an account.').'<br />';
$perfoutput .= format_plural(
$results['could results']['result count'],
' You could have found 1 result with a ',
' You could have found <strong>@count results</strong> with a '
);
$perfoutput .= l(t('full access to materiO\'.'), 'node/11187');
$perfoutput .= l(t('Pricing'), 'node/11187', array("attributes"=>array("class"=>array('button'))));
$vars['search_performance'] = $perfoutput;
}
//dsm($vars, '$vars'); //dsm($vars, '$vars');
} }

View File

@ -127,7 +127,6 @@ function materio_search_api_results_search(){
// retreive typed words separated by slahes as a sentence // retreive typed words separated by slahes as a sentence
$args = func_get_args(); $args = func_get_args();
$typed = implode('/', $args); $typed = implode('/', $args);
// dsm($typed, 'typed');
// remove query page params // remove query page params
preg_match_all('/\?page=([0-9]+)/', $typed, $pages); preg_match_all('/\?page=([0-9]+)/', $typed, $pages);
@ -135,6 +134,7 @@ function materio_search_api_results_search(){
if($pages[0]){ if($pages[0]){
$typed = str_replace($pages[0][0], '', $typed); $typed = str_replace($pages[0][0], '', $typed);
} }
// dsm($typed, 'typed');
global $language; global $language;
global $user; global $user;
@ -156,10 +156,23 @@ function materio_search_api_results_search(){
$index_machine_name = variable_get('brevessearchindex_'.$language->language, -1); $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
// dsm($index_machine_name, '$index_machine_name'); // dsm($index_machine_name, '$index_machine_name');
$index = search_api_index_load($index_machine_name); $index = search_api_index_load($index_machine_name);
}
// potential results index for anonymous and free user
$could_index_machine_name = variable_get('mainsearchindex_'.$language->language, -1); $could_index_machine_name = variable_get('mainsearchindex_'.$language->language, -1);
$could_index = search_api_index_load($index_machine_name); $could_index = search_api_index_load($index_machine_name);
}
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;//
if(isset($index)){
// $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1); // $index_machine_name = variable_get('brevessearchindex_'.$language->language, -1);
// dsm($index_machine_name, '$index_machine_name'); // dsm($index_machine_name, '$index_machine_name');
@ -172,16 +185,6 @@ function materio_search_api_results_search(){
$bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles; $bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles;
// dsm($bundles_filter, 'bundles_filter'); // 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 {
$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')) $query = search_api_query($index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))
// ->keys(implode(' ', $keys)) // ->keys(implode(' ', $keys))
->keys($typed) ->keys($typed)
@ -200,6 +203,7 @@ function materio_search_api_results_search(){
$query->setOption('search_api_access_account', $user); $query->setOption('search_api_access_account', $user);
$results = $query->execute(); $results = $query->execute();
}
# in case of utilisateur search, run a real search to indicate how much items you could find # in case of utilisateur search, run a real search to indicate how much items you could find
if(isset($could_index)){ if(isset($could_index)){
@ -217,24 +221,15 @@ 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.'); $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'])); watchdog('materiobasemod', 'search error: !msg.', array('!msg' => $e->getMessage()), WATCHDOG_ERROR, l(t('search page'), $_GET['q']));
} }
// dsm($results, 'results'); // dsm($results, 'results');
// $accessible_results = array(); if(user_access('use materio search api for breves') || user_access('use materio search api')){
// 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')){ if(user_access('use materio search api')){
$items = $index->loadItems(array_keys($results['results'])); $items = $index->loadItems(array_keys($results['results']));
// dsm($items, 'items'); // dsm($items, 'items');
// $count = $results['result count']; // $count = $results['result count'];
}else if(user_access('use materio search api for breves')){ }
else{
$items = array(); $items = array();
$breves = $index->loadItems(array_keys($results['results'])); $breves = $index->loadItems(array_keys($results['results']));
foreach ($breves as $nid => $breve) { foreach ($breves as $nid => $breve) {
@ -261,14 +256,21 @@ function materio_search_api_results_search(){
$results['could results'] = $could_results; $results['could results'] = $could_results;
} }
$ret['results']['#theme'] = 'materio_search_api_results';
$ret['results']['#index'] = $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']['#items'] = $items;
$ret['results']['#view_mode'] = $viewmode; }
// $ret['results']['#keys'] = $keys; else{
// for anonymous
$results['could results'] = $could_results;
}
// dsm($typed, 'typed');
// for all case
$ret['results']['#results'] = $results;
$ret['results']['#theme'] = 'materio_search_api_results';
$ret['results']['#keys'] = $typed; $ret['results']['#keys'] = $typed;
$ret['results']['#view_mode'] = $viewmode;
drupal_set_title('<i class="icon-materio-search"></i>'.check_plain($typed), PASS_THROUGH); drupal_set_title('<i class="icon-materio-search"></i>'.check_plain($typed), PASS_THROUGH);

View File

@ -37,7 +37,7 @@
<?php //if (!empty($result_count)) : ?> <?php //if (!empty($result_count)) : ?>
<div class="materiobase-results <?php print ' view-mode-' . $variables['view_mode'];?>"> <div class="materiobase-results <?php print ' view-mode-' . $variables['view_mode'];?>">
<?php if ($result_count) : ?> <?php //if ($result_count) : ?>
<?php if(!$perfascard): ?> <?php if(!$perfascard): ?>
<p class="search-performance"><?php print render($search_performance); ?></P> <p class="search-performance"><?php print render($search_performance); ?></P>
<?php endif; ?> <?php endif; ?>
@ -55,11 +55,13 @@
<?php <?php
// TODO: use cache system to gain in speed, view http://drupal.org/node/930760 // TODO: use cache system to gain in speed, view http://drupal.org/node/930760
?> ?>
<?php if ($result_count) : ?>
<?php print render(entity_view($index->item_type, $items, $variables['view_mode'])); ?> <?php print render(entity_view($index->item_type, $items, $variables['view_mode'])); ?>
</div>
<?php print $pager; ?>
<?php else : ?>
<p class="search-noresults"><?php print t('Your search yielded no results.');?></p>
<?php endif; ?> <?php endif; ?>
</div> </div>
<?php print $pager; ?>
<?php //else : ?>
<!-- <p class="search-noresults"><?php print t('Your search yielded no results.');?></p> -->
<?php //endif; ?>
</div>
<?php //endif; ?> <?php //endif; ?>