tripal_search_unigene.module 2.1 KB

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