tripal_search_feature.module 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /*************************************************************************
  3. * tripal_search_feature_init
  4. */
  5. function tripal_search_feature_init(){
  6. drupal_add_css(drupal_get_path('theme', 'tripal').'/css/tripal_search_feature.css');
  7. drupal_add_js(drupal_get_path('theme', 'tripal').'/js/tripal_search_feature.js');
  8. }
  9. /*************************************************************************
  10. * tripal_search_feature_views_api
  11. */
  12. function tripal_search_feature_views_api() {
  13. return array(
  14. 'api' => 2.0,
  15. );
  16. }
  17. // A function to rewrite the SQL statement before submitting the query
  18. // Force GROUP BY feature_id and return only one row
  19. function tripal_search_feature_views_pre_execute(&$view){
  20. if ($view->name == 'est_search') {
  21. // AGGREGATORS
  22. $search = array('SELECT');
  23. $replace = array('SELECT min(');
  24. $view->build_info['query'] = str_replace($search, $replace, $view->build_info['query']);
  25. $view->build_info['count_query'] = str_replace($search, $replace, $view->build_info['count_query']);
  26. $search = array(',');
  27. $replace = array(', min(');
  28. $view->build_info['query'] = str_replace($search, $replace, $view->build_info['query']);
  29. $view->build_info['count_query'] = str_replace($search, $replace, $view->build_info['count_query']);
  30. $search = array(' AS ');
  31. $replace = array(') AS ');
  32. $view->build_info['query'] = str_replace($search, $replace, $view->build_info['query']);
  33. $view->build_info['count_query'] = str_replace($search, $replace, $view->build_info['count_query']);
  34. // GROUP BY
  35. if (preg_match("'ORDER BY'", $view->build_info['query'])) {
  36. $search = array('ORDER BY');
  37. $replace = array('GROUP BY feature_for_search.feature_id ORDER BY');
  38. $view->build_info['query'] = str_replace($search, $replace, $view->build_info['query']);
  39. } else {
  40. $view->build_info['query'] .= " GROUP BY feature_for_search.feature_id";
  41. }
  42. $view->build_info['count_query'] .= " GROUP BY feature_for_search.feature_id";
  43. //drupal_set_message($view->build_info['query']);
  44. //drupal_set_message($view->build_info['count_query']);
  45. }
  46. }