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
- class \views_object
- class \views_handler
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
Name | Modifiers | Type | Description |
---|---|---|---|
views_handler:: |
function | Check whether current user has access to this handler. | |
views_handler:: |
function | Determine if the handler is considered 'broken', meaning it's a a placeholder used when a handler can't be found. | |
views_handler:: |
function | Ensure the main table for this handler is in the query. This is used a lot. | |
views_handler:: |
function | Submit the exposed filter form | |
views_handler:: |
function | Validate the exposed filter form | |
views_handler:: |
function | Provide defaults for the handler. | |
views_handler:: |
function | Provide a form for setting options. | |
views_handler:: |
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:: |
function | Validate the options form. | |
views_handler:: |
function | Get the join object that should be used for this handler. | |
views_handler:: |
function | If a handler has 'extra options' it will get a little settings widget and another form called extra_options. | |
views_handler:: |
function | Determine if this item is 'exposed', meaning it provides form elements to let users modify the view. | |
views_handler:: |
function | Determine if the argument needs a style plugin. | |
views_handler:: |
function | Run before the view is built. | |
views_handler:: |
function | Called just prior to query(), this lets a handler set up any relationship it needs. | |
views_handler:: |
function | Return a string representing this handler's name in the UI. | |
views_handler:: |
function | Validates the handler against the complete View. | |
views_handler_filter:: |
function |
Check to see if input from the exposed filters should change
the behavior of this filter. Overrides views_handler:: |
|
views_handler_filter:: |
function |
Determine if a filter can be exposed. Overrides views_handler:: |
|
views_handler_filter:: |
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:: |
|
views_handler_filter:: |
function | Make some translations to a form item to make it more suitable to exposing. | |
views_handler_filter:: |
function | Overridable form for exposed filter options. | |
views_handler_filter:: |
function | Handle the 'left' side fo the exposed options form. | |
views_handler_filter:: |
function | Handle the 'right' side fo the exposed options form. | |
views_handler_filter:: |
function |
Provide default options for exposed filters. Overrides views_handler:: |
|
views_handler_filter:: |
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:: |
function | Validate the options form. | |
views_handler_filter:: |
function | Provide a form for setting the operator. | |
views_handler_filter:: |
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:: |
function | Validate the operator form. | |
views_handler_filter:: |
function |
Simple submit handler Overrides views_handler:: |
|
views_handler_filter:: |
function |
Simple validate handler Overrides views_handler:: |
|
views_handler_filter:: |
function | Shortcut to display the expose/hide button. | |
views_handler_filter:: |
function | Shortcut to display the exposed options form. | |
views_handler_filter:: |
function | Shortcut to display the operator form. | |
views_handler_filter:: |
function | Shortcut to display the value form. | |
views_handler_filter:: |
function |
If set to remember exposed input in the session, store it there. Overrides views_handler:: |
|
views_handler_filter:: |
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:: |
function | Validate the options form. | |
views_handler_filter_chado_select_cvterm_name:: |
function |
Ensures the select list gets rendered when the filter is exposed Overrides views_handler_filter:: |
|
views_handler_filter_chado_select_cvterm_name:: |
function |
Executed when the field is added
Determine which cv to limit the cvterms to Overrides views_handler_filter:: |
|
views_handler_filter_chado_select_cvterm_name:: |
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:: |
|
views_handler_filter_chado_select_cvterm_name:: |
function |
Defines options for the option forms Overrides views_handler_filter_string:: |
|
views_handler_filter_chado_select_cvterm_name:: |
function |
Alters the query so that WHERE cvterm.cvterm_id=212 is used Overrides views_handler_filter_string:: |
|
views_handler_filter_chado_select_cvterm_name:: |
function |
Defines the value field in both the views filter options form
and the exposed form Overrides views_handler_filter_string:: |
|
views_handler_filter_string:: |
function |
Display the filter on the administrative summary Overrides views_handler_filter:: |
|
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function |
Build strings from the operators() for 'select' options Overrides views_handler_filter:: |
|
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function |
Information about options for all kinds of purposes will be held here. Overrides views_handler_filter:: |
|
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_handler_filter_string:: |
function | ||
views_object:: |
function | Views handlers use a special construct function so that we can more easily construct them with variable arguments. | |
views_object:: |
function | ||
views_object:: |
function | Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility. | |
views_object:: |
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:: |
function | Let the handler know what its full definition is. | |
views_object:: |
function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
function |