Browse Source

improved the message to people who access to the serach tool without an account
cf link from daily materiO'

Bachir Soussi Chiadmi 10 years ago
parent
commit
2e1e0cc05b
3 changed files with 145 additions and 125 deletions
  1. 63 47
      materio_search_api.module
  2. 75 73
      materio_search_api.pages.inc
  3. 7 5
      templates/materio-search-api-results.tpl.php

+ 63 - 47
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'] = $vars['keys'];
+
+    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 <strong>@count results</strong> 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['keywords'] = implode(', ', $vars['keys']);
+      $vars['search_performance'] = t('The search found @count result(s) with keywords @keys.', array(
+        "@count"=>$vars['result_count'],
+        "@keys"=>$vars['keywords'])
+      );
 
-  if(isset($results['breves count'])){
+      // 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.').'<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 '
     );
-    $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{
-    $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'])
-    );
+    $perfoutput .= l(t('full access to materiO\'.'), 'node/11187');
 
-    // 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');
 }
 

+ 75 - 73
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,50 +156,54 @@ 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; }
   }
 
-  $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');
+  // 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);
 
-  // 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);
-      }
 
-      // $query->setOption('search_api_bypass_access', true);
-      $query->setOption('search_api_access_account', $user);
+        $bundles_filter = isset($user->data['materiosearchapi_bundlesfilter']) ? $user->data['materiosearchapi_bundlesfilter'] : $default_bundles;
+        // dsm($bundles_filter, 'bundles_filter');
 
-      $results = $query->execute();
+        $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();
+      }
 
       # in case of utilisateur search, run a real search to indicate how much items you could find
       if(isset($could_index)){
@@ -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')){
-      $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;
+    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;
+
+          $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('<i class="icon-materio-search"></i>'.check_plain($typed), PASS_THROUGH);
 

+ 7 - 5
templates/materio-search-api-results.tpl.php

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