class views_handler_filter_chado_select_cvterm_name

@file Purpose: This Handler provides a select list for the type field

NOTE: This handler only works when applied to the type_id field in the base_table of this view.

Hierarchy

Expanded class hierarchy of views_handler_filter_chado_select_cvterm_name

Related topics

File

tripal_views/views/handlers/deprecated/views_handler_filter_chado_select_cvterm_name.inc, line 13
Purpose: This Handler provides a select list for the type field

View source
class views_handler_filter_chado_select_cvterm_name extends views_handler_filter_string {

  /**
   * Executed when the field is added
   * Determine which cv to limit the cvterms to
   */
  function init(&$view, $options) {
    parent::init($view, $options);

    if ($this->options['show_all']) {
      $cv_id = variable_get('chado_' . $this->view->base_table . '_cv', NULL);
      if ($cv_id) {
        $results = tripal_core_chado_select('cvterm', array('cvterm_id', 'name'), array('cv_id' => $cv_id));
        if (empty($results)) {
          $results = array();
        }
        foreach ($results as $c) {
          $cvterms[$c->cvterm_id] = $c->name;
        }
      }
      else {
        //get a list of cvs currently used
        if ($this->view->base_table == 'cvterm') {
          $sql = 'SELECT distinct(cv.cv_id) FROM {' . $this->view->base_table . '}'
            . ' LEFT JOIN {cv} cv ON cv.cv_id=cvterm.cv_id';
        }
        else {
          $sql = 'SELECT distinct(cv.cv_id) FROM {' . $this->view->base_table . '}'
            . ' LEFT JOIN {cvterm} cvterm ON cvterm.cvterm_id=' . $this->view->base_table . '.type_id '
            . 'LEFT JOIN {cv} cv ON cv.cv_id=cvterm.cv_id';
        }
        $resource = chado_query($sql);
        $cvterms = array();
        while ($r = db_fetch_object($resource)) {
          $results = tripal_core_chado_select('cvterm', array('cvterm_id', 'name'), array('cv_id' => $r->cv_id));
          if (empty($results)) {
            $results = array();
          }
          foreach ($results as $c) {
            $cvterms[$c->cvterm_id] = $c->name;
          }
        }
      }
      // end of if variable not defined

    }
    else {
      // @coder-ignore: non-drupal schema therefore table prefixing does not apply
      $sql = "SELECT cvterm_id, name FROM {cvterm} WHERE cvterm_id IN (SELECT distinct(type_id) FROM {%s})";
      $resource = chado_query($sql, $this->table);
      $cvterms = array();
      while ($r = db_fetch_object($resource)) {
        $cvterms[$r->cvterm_id] = $r->name;
      }
    }
    //sort cvterms by name (case insensitive)
    natcasesort($cvterms);

    //add to this handler
    $this->cvterm_options = $cvterms;
  }

  /**
   * Defines options for the option forms
   */
  function options_form(&$form, &$form_state) {
    parent::options_form($form, $form_state);

    $form['values_form_type'] = array(
      '#type' => 'radios',
      '#title' => t('Filter Type'),
      '#options' => array(
        'textfield' => 'Text Field',
        'select' => 'Drop-Down Box',
      ),
      '#default_value' => ($this->options['values_form_type']) ? $this->options['values_form_type'] : 'select',
    );

    $form['multiple'] = array(
      '#type' => 'checkbox',
      '#title' => t('Select Multiple'),
      '#description' => t('Allows more then one option to be selected.'),
      '#default_value' => (isset($this->options['multiple'])) ? $this->options['multiple'] : FALSE,
    );

    $form['optional'] = array(
      '#type' => 'checkbox',
      '#title' => t('Optional'),
      '#description' => t('Adds --Any-- to the available options.'),
      '#default_value' => (isset($this->options['optional'])) ? $this->options['optional'] : TRUE,
    );

    $form['show_all'] = array(
      '#type' => 'checkbox',
      '#title' => t('Show All Terms'),
      '#description' => 'Otherwise only cvterms used in the base table will be used'
    );
  }

  /**
   * Alters the query so that WHERE cvterm.cvterm_id=212 is used
   */
  function query() {
    $this->ensure_table;

    if ($this->options['multiple']) {
      // Remove any if it's there
      unset($this->value['All']);

      if (sizeof($this->value)) {
        $holders = array();
        foreach ($this->value as $v) {
          if (preg_match('/^[\d\.]+$/', $v)) {
            $holders[] = '%d';
          }
          else {
            $holders[] = "'%s'";
          }
        }
        $where = "cvterm.cvterm_id IN (" . implode(", ", $holders) . ")";
      }
    }
    elseif ($this->value != 'All') {
      if (preg_match('/^\d+$/', $this->value)) {
        $where = 'cvterm.cvterm_id=%d';
      }
      else {
        $where = "cvterm.name" . $this->operator . "'%s'";
      }
    }

    if ($where) {
      $this->query->add_where($this->options['group'], $where, $this->value);
    }
  }

  /**
   * Defines the value field in both the views filter options form
   *   and the exposed form
   */
  function value_form(&$form, &$form_state) {
    parent::value_form($form, $form_state);

    if (preg_match('/select/', $this->options['values_form_type'])) {
      // Get Options
      if ($this->options['optional']) {
        $options['<select ' . $this->table . '>'] = '--None--';
        $options['All'] = '--Any--';
      }
      $max_length = 40;
      foreach ($this->cvterm_options as $cvterm_id => $cvterm_name) {
        if (drupal_strlen($cvterm_name) > $max_length) {
          $options[$cvterm_id] = drupal_substr($cvterm_name, 0, $max_length) . '...';
        }
        else {
          $options[$cvterm_id] = $cvterm_name;
        }
      }

      if (empty($options)) {
        $options[0] = '';
      }

      //Select List
      $form['value'] = array(
        '#type' => 'select',
        '#title' => t('%label', array('%label' => $this->options['label'])),
        '#options' => $options,
        '#default_value' => $this->value,
      );

      if ($this->options['multiple']) {
        $form['value']['#multiple'] = TRUE;
      }

    }
    else {
      $form['value'] = array(
        '#type' => 'textfield',
        '#title' => t('%label', array('%label' => $this->options['label'])),
        '#default_value' => $this->value,
      );
    }
  }

  /**
   * Ensures the select list gets rendered when the filter is exposed
   */
  function exposed_form(&$form, &$form_state) {
    if (empty($this->options['exposed'])) {
      return;
    }

    $value = $this->options['expose']['identifier'];
    $this->value_form($form, $form_state);
    $form[$value] = $form['value'];

    if (isset($form[$value]['#title']) && !empty($form[$value]['#type']) && $form[$value]['#type'] != 'checkbox') {
      unset($form[$value]['#title']);
    }

    $this->exposed_translate($form[$value], 'value');

    if (!empty($form['#type']) && ($form['#type'] == 'checkboxes' || ($form['#type'] == 'select' && !empty($form['#multiple'])))) {
      unset($form[$value]['#default_value']);
    }

    if (!empty($form['#type']) && $form['#type'] == 'select' && empty($form['#multiple'])) {
      $form[$value]['#default_value'] = 'All';
    }

    if ($value != 'value') {
      unset($form['value']);
    }

  }

  /**
   * This kind of construct makes it relatively easy for a child class
   * to add or remove functionality by overriding this function and
   * adding/removing items from this array.
   */
  function operators() {
    $operators = array(
      '=' => array(
        'title' => t('Is equal to'),
        'short' => t('='),
        'method' => 'op_equal',
        'values' => 1,
      ),
      '!=' => array(
        'title' => t('Is not equal to'),
        'short' => t('!='),
        'method' => 'op_equal',
        'values' => 1,
      ),
      '~' => array(
        'title' => t('Contains'),
        'short' => t('contains'),
        'method' => 'op_contains',
        'values' => 1,
      ),
    );

    return $operators;
  }
}

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
views_handler::access function Check whether current user has access to this handler.
views_handler::broken function Determine if the handler is considered 'broken', meaning it's a a placeholder used when a handler can't be found.
views_handler::ensure_my_table function Ensure the main table for this handler is in the query. This is used a lot.
views_handler::exposed_submit function Submit the exposed filter form
views_handler::exposed_validate function Validate the exposed filter form
views_handler::extra_options function Provide defaults for the handler.
views_handler::extra_options_form function Provide a form for setting options.
views_handler::extra_options_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler::extra_options_validate function Validate the options form.
views_handler::get_join function Get the join object that should be used for this handler.
views_handler::has_extra_options function If a handler has 'extra options' it will get a little settings widget and another form called extra_options.
views_handler::is_exposed function Determine if this item is 'exposed', meaning it provides form elements to let users modify the view.
views_handler::needs_style_plugin function Determine if the argument needs a style plugin.
views_handler::pre_query function Run before the view is built.
views_handler::set_relationship function Called just prior to query(), this lets a handler set up any relationship it needs.
views_handler::ui_name function Return a string representing this handler's name in the UI.
views_handler::validate function Validates the handler against the complete View.
views_handler_filter::accept_exposed_input function Check to see if input from the exposed filters should change the behavior of this filter. Overrides views_handler::accept_exposed_input
views_handler_filter::can_expose function Determine if a filter can be exposed. Overrides views_handler::can_expose
views_handler_filter::exposed_info function Tell the renderer about our exposed form. This only needs to be overridden for particularly complex forms. And maybe not even then. Overrides views_handler::exposed_info
views_handler_filter::exposed_translate function Make some translations to a form item to make it more suitable to exposing.
views_handler_filter::expose_form function Overridable form for exposed filter options.
views_handler_filter::expose_form_left function Handle the 'left' side fo the exposed options form.
views_handler_filter::expose_form_right function Handle the 'right' side fo the exposed options form.
views_handler_filter::expose_options function Provide default options for exposed filters. Overrides views_handler::expose_options
views_handler_filter::expose_submit function Perform any necessary changes to the form exposes prior to storage. There is no need for this function to actually store the data.
views_handler_filter::expose_validate function Validate the options form.
views_handler_filter::operator_form function Provide a form for setting the operator.
views_handler_filter::operator_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler_filter::operator_validate function Validate the operator form.
views_handler_filter::options_submit function Simple submit handler Overrides views_handler::options_submit
views_handler_filter::options_validate function Simple validate handler Overrides views_handler::options_validate
views_handler_filter::show_expose_button function Shortcut to display the expose/hide button.
views_handler_filter::show_expose_form function Shortcut to display the exposed options form.
views_handler_filter::show_operator_form function Shortcut to display the operator form.
views_handler_filter::show_value_form function Shortcut to display the value form.
views_handler_filter::store_exposed_input function If set to remember exposed input in the session, store it there. Overrides views_handler::store_exposed_input
views_handler_filter::value_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler_filter::value_validate function Validate the options form.
views_handler_filter_chado_select_cvterm_name::exposed_form function Ensures the select list gets rendered when the filter is exposed Overrides views_handler_filter::exposed_form
views_handler_filter_chado_select_cvterm_name::init function Executed when the field is added Determine which cv to limit the cvterms to Overrides views_handler_filter::init
views_handler_filter_chado_select_cvterm_name::operators function This kind of construct makes it relatively easy for a child class to add or remove functionality by overriding this function and adding/removing items from this array. Overrides views_handler_filter_string::operators
views_handler_filter_chado_select_cvterm_name::options_form function Defines options for the option forms Overrides views_handler_filter_string::options_form
views_handler_filter_chado_select_cvterm_name::query function Alters the query so that WHERE cvterm.cvterm_id=212 is used Overrides views_handler_filter_string::query
views_handler_filter_chado_select_cvterm_name::value_form function Defines the value field in both the views filter options form and the exposed form Overrides views_handler_filter_string::value_form
views_handler_filter_string::admin_summary function Display the filter on the administrative summary Overrides views_handler_filter::admin_summary
views_handler_filter_string::case_transform function
views_handler_filter_string::operator_options function Build strings from the operators() for 'select' options Overrides views_handler_filter::operator_options
views_handler_filter_string::operator_values function
views_handler_filter_string::option_definition function Information about options for all kinds of purposes will be held here. Overrides views_handler_filter::option_definition
views_handler_filter_string::op_contains function
views_handler_filter_string::op_empty function
views_handler_filter_string::op_ends function
views_handler_filter_string::op_equal function
views_handler_filter_string::op_not function
views_handler_filter_string::op_not_ends function
views_handler_filter_string::op_not_starts function
views_handler_filter_string::op_starts function
views_handler_filter_string::op_word function
views_object::construct function Views handlers use a special construct function so that we can more easily construct them with variable arguments.
views_object::destroy function
views_object::options function Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility.
views_object::set_default_options function Set default options. For backward compatibility, it sends the options array; this is a feature that will likely disappear at some point.
views_object::set_definition function Let the handler know what its full definition is.
views_object::unpack_options function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_object::_set_option_defaults function