class views_handler_relationship_node_term_data

  1. 3.x modules/taxonomy/views_handler_relationship_node_term_data.inc views_handler_relationship_node_term_data
  2. 2.x modules/taxonomy/views_handler_relationship_node_term_data.inc views_handler_relationship_node_term_data

Relationship handler to return the taxonomy terms of nodes.

Hierarchy

Expanded class hierarchy of views_handler_relationship_node_term_data

Related topics

1 string reference to 'views_handler_relationship_node_term_data'

File

modules/taxonomy/views_handler_relationship_node_term_data.inc, line 13
Definition of views_handler_relationship_node_term_data.

View source
class views_handler_relationship_node_term_data extends views_handler_relationship {
  function init(&$view, &$options) {
    parent::init($view, $options);

    // Convert legacy vids option to machine name vocabularies.
    if (!empty($this->options['vids'])) {
      $vocabularies = taxonomy_get_vocabularies();
      foreach ($this->options['vids'] as $vid) {
        if (isset($vocabularies[$vid], $vocabularies[$vid]->machine_name)) {
          $this->options['vocabularies'][$vocabularies[$vid]->machine_name] = $vocabularies[$vid]->machine_name;
        }
      }
    }
  }

  function option_definition() {
    $options = parent::option_definition();
    $options['vocabularies'] = array('default' => array());
    return $options;
  }

  function options_form(&$form, &$form_state) {
    $vocabularies = taxonomy_get_vocabularies();
    $options = array();
    foreach ($vocabularies as $voc) {
      $options[$voc->machine_name] = check_plain($voc->name);
    }

    $form['vocabularies'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Vocabularies'),
      '#options' => $options,
      '#default_value' => $this->options['vocabularies'],
      '#description' => t('Choose which vocabularies you wish to relate. Remember that every term found will create a new record, so this relationship is best used on just one vocabulary that has only one term per node.'),
    );
    parent::options_form($form, $form_state);
  }

  /**
   * Called to implement a relationship in a query.
   */
  function query() {
    $this->ensure_my_table();

    $def = $this->definition;
    $def['table'] = 'taxonomy_term_data';

    if (!array_filter($this->options['vocabularies'])) {
      $taxonomy_index = $this->query->add_table('taxonomy_index', $this->relationship);
      $def['left_table'] = $taxonomy_index;
      $def['left_field'] = 'tid';
      $def['field'] = 'tid';
      $def['type'] = empty($this->options['required']) ? 'LEFT' : 'INNER';
    }
    else {
      // If vocabularies are supplied join a subselect instead
      $def['left_table'] = $this->table_alias;
      $def['left_field'] = 'nid';
      $def['field'] = 'nid';
      $def['type'] = empty($this->options['required']) ? 'LEFT' : 'INNER';

      $query = db_select('taxonomy_term_data', 'td');
      $query->addJoin($def['type'], 'taxonomy_vocabulary', 'tv', 'td.vid = tv.vid');
      $query->addJoin($def['type'], 'taxonomy_index', 'tn', 'tn.tid = td.tid');
      $query->condition('tv.machine_name', array_filter($this->options['vocabularies']));
      if (empty($this->query->options['disable_sql_rewrite'])) {
        $query->addTag('term_access');
      }
      $query->fields('td');
      $query->fields('tn', array('nid'));
      $def['table formula'] = $query;
    }

    $join = new views_join();

    $join->definition = $def;
    $join->construct();
    $join->adjusted = TRUE;

    // use a short alias for this:
    $alias = $def['table'] . '_' . $this->table;

    $this->alias = $this->query->add_relationship($alias, $join, 'taxonomy_term_data', $this->relationship);
  }
}

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
views_handler::$table_alias public property The alias of the table of this handler which is used in the query.
views_handler::accept_exposed_input function Take input from exposed handlers and assign to this handler, if necessary.
views_handler::access function Check whether current user has access to this handler.
views_handler::admin_summary function Provide text for the administrative summary
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::can_expose function Determine if a handler can be exposed.
views_handler::case_transform function Transform a string by a certain method.
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_form function Render our chunk of the exposed handler form when selecting
views_handler::exposed_info function Get information about the exposed form for the form renderer.
views_handler::exposed_submit function Submit the exposed handler form
views_handler::exposed_validate function Validate the exposed handler form
views_handler::expose_form function Form for exposed handler options.
views_handler::expose_options function Set new exposed option defaults when exposed setting is flipped on.
views_handler::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::expose_validate function Validate the options 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_field function Shortcut to get a handler's raw field value.
views_handler::get_join function Get the join object that should be used for this handler.
views_handler::groupby_form function Provide a form for aggregation settings.
views_handler::groupby_form_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::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_a_group function Returns TRUE if the exposed filter works like a grouped filter.
views_handler::is_exposed function Determine if this item is 'exposed', meaning it provides form elements to let users modify the view.
views_handler::multiple_exposed_input function Define if the exposed input has to be submitted multiple times. This is TRUE when exposed filters grouped are using checkboxes as widgets.
views_handler::needs_style_plugin function Determine if the argument needs a style plugin.
views_handler::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::options_validate function Validate the options form.
views_handler::placeholder function Provides a unique placeholders for handlers.
views_handler::post_execute function Run after the view is executed, before the result is cached.
views_handler::pre_query function Run before the view is built.
views_handler::sanitize_value function Sanitize the value for output.
views_handler::set_relationship function Called just prior to query(), this lets a handler set up any relationship it needs.
views_handler::show_expose_button function Shortcut to display the expose/hide button.
views_handler::show_expose_form function Shortcut to display the exposed options form.
views_handler::store_exposed_input function If set to remember exposed input in the session, store it there.
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_relationship::label function Get this field's label.
views_handler_relationship::use_group_by function You can't groupby a relationship. Overrides views_handler::use_group_by
views_handler_relationship_node_term_data::init function Init handler to let relationships live on tables other than the table they operate on. Overrides views_handler_relationship::init
views_handler_relationship_node_term_data::options_form function Default options form that provides the label widget that all fields should have. Overrides views_handler_relationship::options_form
views_handler_relationship_node_term_data::option_definition function Information about options for all kinds of purposes will be held here. @code 'option_name' => array( Overrides views_handler_relationship::option_definition
views_handler_relationship_node_term_data::query function Called to implement a relationship in a query. Overrides views_handler_relationship::query
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::export_option function
views_object::export_options function
views_object::export_option_always function Always exports the option, regardless of the default value.
views_object::options Deprecated 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::unpack_translatable function Unpack a single option definition.
views_object::unpack_translatables function Unpacks each handler to store translatable texts.
views_object::_set_option_defaults function