tripal_views_handler_filter_textarea.inc

  1. 2.x tripal_views/views/handlers/tripal_views_handler_filter_textarea.inc
  2. 3.x tripal_chado_views/views/handlers/tripal_views_handler_filter_textarea.inc
  3. 1.x tripal_views/views/handlers/tripal_views_handler_filter_textarea.inc

Purpose: This Handler provides a file upload field by extending the views_handler_filter object.

File

tripal_views/views/handlers/tripal_views_handler_filter_textarea.inc
View source
  1. <?php
  2. /**
  3. * @file
  4. * Purpose: This Handler provides a file upload field by extending the
  5. * views_handler_filter object.
  6. *
  7. * @ingroup tripal_views_integration
  8. */
  9. class tripal_views_handler_filter_textarea extends views_handler_filter {
  10. /**
  11. * Defines the value field in both the views filter options form
  12. * and the exposed form
  13. */
  14. function value_form(&$form, &$form_state) {
  15. parent::value_form($form, $form_state);
  16. $this->value_form = array(
  17. '#type' => 'textarea',
  18. '#title' => t('%label', array('%label' => $this->options['expose']['label'])),
  19. '#default_value' => $this->value,
  20. '#multiple' => FALSE,
  21. '#description' => t('Provide search values for %label. Please place each search
  22. item on a separate line or separated by commas.', array('%label' => $this->options['expose']['label'])),
  23. );
  24. $form['value'] = &$this->value_form;
  25. }
  26. /**
  27. * Ensures the textarea field gets rendered when the filter is exposed.
  28. */
  29. function exposed_form(&$form, &$form_state) {
  30. // don't do anything if the form isn't exposed.
  31. if (empty($this->options['exposed'])) {
  32. return;
  33. }
  34. // rebuild the form elements
  35. $value = $this->options['expose']['identifier'];
  36. $this->value_form($form, $form_state);
  37. $form[$value] = $form['value'];
  38. unset($form[$value]['#title']);
  39. $this->exposed_translate($form[$value], 'value');
  40. if ($value != 'value') {
  41. unset($form['value']);
  42. }
  43. }
  44. /**
  45. * Validates the input form
  46. */
  47. function exposed_validate(&$form, &$form_state) {
  48. //dpm($form_state);
  49. }
  50. /**
  51. *
  52. */
  53. function query() {
  54. $this->ensure_my_table();
  55. $field = "$this->table.$this->real_field";
  56. // get the form element value
  57. if (is_array($this->value)) {
  58. $value = $this->value[0];
  59. }
  60. else {
  61. $value = $this->value;
  62. }
  63. // remove extra spaces and new lines
  64. $value = preg_replace("/\s+,/", ",", $value);
  65. $value = preg_replace("/\s+\n/", "\n", $value);
  66. $value = preg_replace("/,\n/", "\n", $value);
  67. $values = preg_split("/[\n,]+/", $value);
  68. // iterate through all of the values and generate the corresponding
  69. // sprintf style holders
  70. $holders = array();
  71. for ($i = 0 ; $i < count($values); $i++) {
  72. $values[$i] = trim($values[$i]);
  73. $holders[] = "'%s'";
  74. }
  75. // if we have any values supplied then update the where clause for
  76. // the views query
  77. if (count($holders) > 0) {
  78. $where = "$field IN (" . implode(", ", $holders) . ")";
  79. $this->query->add_where($this->options['group'], $where, $values);
  80. }
  81. }
  82. }