$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); } }