| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 | 
							- <?php
 
- function materio_search_api_ajax_search($page = 0){
 
-   $debug = false;
 
-   global $user, $base_url;
 
-   // TODO:  set research path configurable  
 
-   $search_path = "explore";
 
-   # execute search
 
-   $_GET['page'] = $page;
 
-   $keys = rawurldecode($_GET['keys']);
 
-   foreach(explode(' ', $keys) as $word){
 
-     $words[] = rawurlencode($word);
 
-   }
 
-   $keys_encoded = implode(' ', $words);
 
-   // dsm($words, 'words');
 
-   $path = $search_path . '/' . $keys;//. ($page ? '?page='.$page : '');
 
-   // check if request is ajax, if not rediret to search_api_page page with right keys
 
-   if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
 
-     drupal_goto($path, array(), 301);
 
-     exit ;
 
-   }
 
-   // TODO:  if no permission, redirect to home  
 
-   # content type filter s
 
-   // $types = $_GET['types'];
 
-   if(isset($_GET['types'])){
 
-     # if user have access to filters;
 
-     foreach($_GET['types'] as $type => $value)
 
-       if($value == 'true')
 
-         $active_types[] = $type;
 
-     // if no filter checked we checked them all by default
 
-     if(!isset($active_types))
 
-       foreach($_GET['types'] as $type => $value)
 
-           $active_types[] = $type;
 
-   }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) {
 
-       $active_types[] = $bundle;
 
-     }
 
-   }
 
-   user_save($user, array("data"=>array('materiosearchapi_bundlesfilter' => $active_types)));
 
-   # if we are not already on the search page then don't respond with search results but redirect to search page 
 
-   if(isset($_GET['current_path'])){
 
-     // url() generates the prefix using hook_url_outbound_alter(). Instead of
 
-     // running the hook_url_outbound_alter() again here, extract the prefix
 
-     // from url().
 
-     url('', array('prefix' => &$prefix));
 
-     $cur_path = str_replace($base_url.base_path().$prefix, '', $_GET['current_path']);
 
-     // dsm($cur_path, 'cur_path');
 
-     $cur_is_search_path = strpos($cur_path, $search_path);
 
-     // dsm($matches, '$matches');
 
-     if($cur_is_search_path === false){
 
-       $rep = array(
 
-         "redirect" => $base_url.base_path().$prefix.$path,
 
-       );
 
-       drupal_json_output($rep);
 
-       exit;
 
-     }
 
-   }
 
-   // define mode (between full text or only term selected on autocompletion)
 
-   // TODO implement the new search mode (only term)
 
-   if(isset($_GET['searchmode'])){
 
-     $searchmode = $_GET['searchmode'];
 
-     user_save($user, array("data"=>array('materiosearchapi_searchmode' => $searchmode)));  
 
-   }
 
-   // dsm($path, 'path');
 
-   // execute the searcj path and retrive results
 
-   menu_set_active_item($path);
 
-   $return = menu_execute_active_handler($path, FALSE);
 
-   //dsm($return, '$return');
 
-   
 
-   if (is_int($return)) {
 
-     switch ($return) {
 
-       case MENU_NOT_FOUND :
 
-         drupal_add_http_header('Status', '404 Not Found');
 
-         break;
 
-       case MENU_ACCESS_DENIED :
 
-         drupal_add_http_header('Status', '403 Forbidden');
 
-         break;
 
-       case MENU_SITE_OFFLINE :
 
-         drupal_add_http_header('Status', '503 Service unavailable');
 
-         break;
 
-     }
 
-   } elseif (isset($return)) {
 
-     if (is_array($return)) {
 
-       $count = $return['results']['#results']['result count'];
 
-       $return = drupal_render($return);
 
-       // $return = theme($return['#theme'], $return);
 
-     }
 
-       
 
-     $rep = array(
 
-       'path'=>$search_path.'/'.$keys_encoded,
 
-       'keys'=>$keys,
 
-       'keys_encoded'=>$keys_encoded,
 
-       'search_path'=>$search_path,
 
-       'returned'=>$return,
 
-       'active_types'=>$active_types,
 
-       'title' => drupal_get_title(),
 
-     );
 
-     if(isset($count))
 
-       $rep['count'] = $count;
 
-     
 
-     if ($debug) {
 
-       //dsm($rep, 'rep');
 
-       return "debug display";
 
-     }else{
 
-       drupal_json_output($rep);  
 
-     }
 
-     
 
-   }
 
- }
 
- function materio_search_api_ajax_viewmode_change($vm){
 
-   // dsm($vm);
 
-   // global $user;
 
-   // // dsm($user, 'user');
 
-   // $entity_infos = entity_get_info();
 
-   // // dsm($entity_infos, 'entity_infos');
 
-   // if (in_array($vm, variable_get('availableviewmodes', array()))) {
 
-   //   user_save($user, array("data"=>array('materiosearchapi_viewmode' => $vm)));
 
-   //   $rep = array('statut'=>'saved');
 
-   // }else{
 
-   //   $rep = array('statut'=>'viewmode not allowed');
 
-   // }
 
-   $_GET['page'] = 0;
 
-   $rep = _materio_search_api_change_viewmode($vm);
 
-   
 
-   drupal_json_output($rep);
 
- }
 
- function materio_search_api_ajax_actuality($page = 0){
 
-   $debug = false;
 
-   
 
-   $_GET['page'] = $page;
 
-   $path = 'actuality';
 
-   // check if request is ajax, if not rediret to search_api_page page with right keys
 
-   if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
 
-     drupal_goto($path, array(), 301);
 
-     exit ;
 
-   }
 
-   // if(isset($_GET['current_path'])){
 
-   //   // dsm($_GET['current_path'], '$_GET[current_path]');
 
-   //   // url() generates the prefix using hook_url_outbound_alter(). Instead of
 
-   //   // running the hook_url_outbound_alter() again here, extract the prefix
 
-   //   // from url().
 
-   //   url('', array('prefix' => &$prefix));
 
-   //   $cur_path = str_replace($base_url.base_path().$prefix, '', $_GET['current_path']);
 
-   //   // dsm($cur_path, 'cur_path');
 
-   //   $cur_is_search_path = strpos($cur_path, $search_path);
 
-   //   // dsm($matches, '$matches');
 
-   //   if($cur_is_search_path === false){
 
-   //     $rep = array(
 
-   //       "redirect" => $base_url.base_path().$prefix.$path,
 
-   //     );
 
-   //     drupal_json_output($rep);
 
-   //     exit;
 
-   //   }
 
-   // }
 
-   
 
-   // get results
 
-   menu_set_active_item($path);
 
-   $return = menu_execute_active_handler($path, FALSE);
 
-   //dsm($return, '$return');
 
-   
 
-   if (is_int($return)) {
 
-     switch ($return) {
 
-       case MENU_NOT_FOUND :
 
-         drupal_add_http_header('Status', '404 Not Found');
 
-         break;
 
-       case MENU_ACCESS_DENIED :
 
-         drupal_add_http_header('Status', '403 Forbidden');
 
-         break;
 
-       case MENU_SITE_OFFLINE :
 
-         drupal_add_http_header('Status', '503 Service unavailable');
 
-         break;
 
-     }
 
-   } elseif (isset($return)) {
 
-     if (is_array($return)) {
 
-       $return = drupal_render($return);
 
-     }
 
-       
 
-     $rep = array(
 
-       'path' => $path,
 
-       'returned'=>$return,
 
-       'title' => drupal_get_title(),
 
-     );
 
-     
 
-     if ($debug) {
 
-       //dsm($rep, 'rep');
 
-       return "debug display";
 
-     }else{
 
-       drupal_json_output($rep);  
 
-     }
 
-   }
 
- }
 
- function materio_search_api_ajax_node($nid){
 
-   global $user;
 
-   
 
-   $viewmode = isset($_GET['viewmode']) ? $_GET['viewmode'] : (isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full'));
 
-   $rep = array(
 
-     "get" => $_GET,
 
-     "viewmode" => $viewmode
 
-   );
 
-   if($nodeview = node_view(node_load($nid),$viewmode)){
 
-     $rep = $rep+array(
 
-       'nid' => $nid,
 
-       'node' => drupal_render($nodeview),
 
-     );
 
-     drupal_json_output($rep);  
 
-   }
 
- }
 
 
  |