materio_search_api_ajax.pages.inc 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. function materio_search_api_ajax_search($keys, $page = 0){
  3. // TODO: set research path configurable
  4. $debug = false;
  5. $search_path = "explore";
  6. $_GET['page'] = $page;
  7. $path = $search_path . '/' . $keys ;//. ($page ? '?page='.$page : '');
  8. // dsm($menuhandler, 'menuhandler');
  9. // check if request is ajax, if not rediret to search_api_page page with right keys
  10. if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
  11. drupal_goto($path, array(), 301);
  12. exit ;
  13. }
  14. // get results
  15. menu_set_active_item($path);
  16. $return = menu_execute_active_handler($path, FALSE);
  17. //dsm($return, '$return');
  18. if (is_int($return)) {
  19. switch ($return) {
  20. case MENU_NOT_FOUND :
  21. drupal_add_http_header('Status', '404 Not Found');
  22. break;
  23. case MENU_ACCESS_DENIED :
  24. drupal_add_http_header('Status', '403 Forbidden');
  25. break;
  26. case MENU_SITE_OFFLINE :
  27. drupal_add_http_header('Status', '503 Service unavailable');
  28. break;
  29. }
  30. } elseif (isset($return)) {
  31. if (is_array($return)) {
  32. $return = drupal_render($return);
  33. }
  34. $rep = array(
  35. // 'id'=>$id,
  36. 'keys'=>$keys,
  37. 'search_path'=>$search_path,
  38. 'return'=>$return,
  39. );
  40. if ($debug) {
  41. dsm($rep, 'rep');
  42. return "debug display";
  43. }else{
  44. drupal_json_output($rep);
  45. }
  46. }
  47. }