You are here

class views_handler_filter_entity_bundle in Views (for Drupal 7) 7.3

Filter class which allows to filter by certain bundles of an entity.

This class provides workarounds for taxonomy and comment.

Hierarchy

Expanded class hierarchy of views_handler_filter_entity_bundle

Related topics

File

handlers/views_handler_filter_entity_bundle.inc, line 15
Definition of views_handler_filter_entity_bundle.

View source
class views_handler_filter_entity_bundle extends views_handler_filter_in_operator {

  /**
   * Stores the entity type on which the filter filters.
   *
   * @var string
   */
  public $entity_type;

  /**
   * {@inheritdoc}
   */
  public function init(&$view, &$options) {
    parent::init($view, $options);
    $this
      ->get_entity_type();
  }

  /**
   * Set and returns the entity_type.
   *
   * @return string
   *   The entity type on the filter.
   */
  public function get_entity_type() {
    if (!isset($this->entity_type)) {
      $data = views_fetch_data($this->table);
      if (isset($data['table']['entity type'])) {
        $this->entity_type = $data['table']['entity type'];
      }

      // If the current filter is under a relationship you can't be sure that
      // the entity type of the view is the entity type of the current filter
      // For example a filter from a node author on a node view does have users
      // as entity type.
      if (!empty($this->options['relationship']) && $this->options['relationship'] != 'none') {
        $relationships = $this->view->display_handler
          ->get_option('relationships');
        if (!empty($relationships[$this->options['relationship']])) {
          $options = $relationships[$this->options['relationship']];
          $data = views_fetch_data($options['table']);
          $this->entity_type = $data['table']['entity type'];
        }
      }
    }
    return $this->entity_type;
  }

  /**
   * {@inheritdoc}
   */
  public function get_value_options() {
    if (!isset($this->value_options)) {
      $info = entity_get_info($this->entity_type);
      $types = $info['bundles'];
      $this->value_title = t('@entity types', array(
        '@entity' => $info['label'],
      ));
      $options = array();
      foreach ($types as $type => $info) {
        $options[$type] = t($info['label']);
      }
      asort($options);
      $this->value_options = $options;
    }
  }

  /**
   * All entity types beside comment and taxonomy terms have a proper implement
   * bundle, though these two need an additional join to node/vocab table
   * to work as required.
   */
  public function query() {
    $this
      ->ensure_my_table();

    // Adjust the join for the comment case.
    if ($this->entity_type == 'comment') {
      $join = new views_join();
      $def = array(
        'table' => 'node',
        'field' => 'nid',
        'left_table' => $this->table_alias,
        'left_field' => 'nid',
      );
      $join->definition = $def;
      $join
        ->construct();
      $join->adjusted = TRUE;
      $this->table_alias = $this->query
        ->add_table('node', $this->relationship, $join);
      $this->real_field = 'type';

      // Replace the value to match the node type column.
      foreach ($this->value as &$value) {
        $value = str_replace('comment_node_', '', $value);
      }
    }
    elseif ($this->entity_type == 'taxonomy_term') {
      $join = new views_join();
      $def = array(
        'table' => 'taxonomy_vocabulary',
        'field' => 'vid',
        'left_table' => $this->table_alias,
        'left_field' => 'vid',
      );
      $join->definition = $def;
      $join
        ->construct();
      $join->adjusted = TRUE;
      $this->table_alias = $this->query
        ->add_table('taxonomy_vocabulary', $this->relationship, $join);
      $this->real_field = 'machine_name';
    }
    else {
      $entity_info = entity_get_info($this->entity_type);
      $this->real_field = $entity_info['bundle keys']['bundle'];
    }
    parent::query();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
views_handler::$handler_type public property The type of the handler, for example filter/footer/field.
views_handler::$query public property Where the $query object will reside:. 1
views_handler::$real_field public property The actual field in the database table, maybe different on other kind of query plugins/special handlers.
views_handler::$relationship public property The relationship used for this field.
views_handler::$table_alias public property The alias of the table of this handler which is used in the query.
views_handler::$view public property The top object of a view. Overrides views_object::$view
views_handler::access public function Check whether current user has access to this handler. 10
views_handler::broken public function Determine if the handler is considered 'broken'. 6
views_handler::case_transform public function Transform a string by a certain method.
views_handler::ensure_my_table public function Ensure the main table for this handler is in the query. This is used a lot. 8
views_handler::exposed_submit public function Submit the exposed handler form.
views_handler::exposed_validate public function Validate the exposed handler form. 4
views_handler::expose_submit public 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::extra_options public function Provide defaults for the handler.
views_handler::extra_options_form public function Provide a form for setting options. 1
views_handler::extra_options_submit public 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 public function Validate the options form.
views_handler::get_field public function Shortcut to get a handler's raw field value.
views_handler::get_join public function Get the join object that should be used for this handler.
views_handler::groupby_form public function Provide a form for aggregation settings. 1
views_handler::groupby_form_submit public function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. 1
views_handler::has_extra_options public function If a handler has 'extra options' it will get a little settings widget and another form called extra_options. 1
views_handler::is_exposed public function Determine if this item is 'exposed', meaning it provides form elements to let users modify the view.
views_handler::needs_style_plugin public function Determine if the argument needs a style plugin. 1
views_handler::placeholder public function Provides a unique placeholders for handlers.
views_handler::post_execute public function Run after the view is executed, before the result is cached. 1
views_handler::pre_query public function Run before the view is built. 1
views_handler::sanitize_value public function Sanitize the value for output.
views_handler::set_relationship public function Called just prior to query(), this lets a handler set up any relationship it needs.
views_handler::show_expose_form public function Shortcut to display the exposed options form.
views_handler::ui_name public function Return a string representing this handler's name in the UI. 9
views_handler::use_group_by public function Provides the handler some groupby. 2
views_handler_filter::$always_multiple public property Disable the possibility to force a single value. 6
views_handler_filter::$always_required public property Disable the possibility to allow a exposed input to be optional.
views_handler_filter::$group_info public property Contains the information of the selected item in a gruped filter.
views_handler_filter::$no_operator public property Disable the possibility to use operators. 2
views_handler_filter::$operator public property Contains the operator which is used on the query.
views_handler_filter::$value public property Contains the actual value of the field.
views_handler_filter::build_group_form public function Build the form to let users create the group of exposed filters.
views_handler_filter::build_group_options public function Provide default options for exposed filters.
views_handler_filter::build_group_submit public function Save new group items, re-enumerates and remove groups marked to delete.
views_handler_filter::build_group_validate public function Validate the build group options form. 1
views_handler_filter::can_build_group public function Determine if a filter can be converted into a group.
views_handler_filter::can_expose public function Determine if a filter can be exposed. Overrides views_handler::can_expose 5
views_handler_filter::can_group public function Can this filter be used in OR groups? 1
views_handler_filter::convert_exposed_input public function Transform the input from a grouped filter into a standard filter.
views_handler_filter::exposed_form public function Render our chunk of the exposed filter form when selecting. Overrides views_handler::exposed_form
views_handler_filter::exposed_info public function Tell the renderer about our exposed form. Overrides views_handler::exposed_info
views_handler_filter::exposed_translate public function Make some translations to a form item to make it more suitable to exposing.
views_handler_filter::expose_validate public function Validate the options form. Overrides views_handler::expose_validate
views_handler_filter::group_form public function Build a form with a group of operator | values to apply as a single filter.
views_handler_filter::group_multiple_exposed_input public function Options available for a grouped filter which uses checkboxes.
views_handler_filter::is_a_group public function Returns TRUE if the exposed filter works like a grouped filter. Overrides views_handler::is_a_group
views_handler_filter::multiple_exposed_input public function Indicate whether users can select multiple group items. Overrides views_handler::multiple_exposed_input
views_handler_filter::operator_form public function Options form subform for setting the operator. 6
views_handler_filter::operator_submit public function Perform any necessary changes to the form values prior to storage.
views_handler_filter::operator_validate public function Validate the operator form.
views_handler_filter::options_form public function Provide the basic form which calls through to subforms. Overrides views_handler::options_form 4
views_handler_filter::options_submit public function Simple submit handler. Overrides views_handler::options_submit
views_handler_filter::options_validate public function Simple validate handler. Overrides views_handler::options_validate 1
views_handler_filter::prepare_filter_select_options public function Sanitizes the HTML select element's options.
views_handler_filter::show_build_group_button public function Shortcut to display the build_group/hide button.
views_handler_filter::show_build_group_form public function Shortcut to display the exposed options form.
views_handler_filter::show_expose_button public function Shortcut to display the expose/hide button. Overrides views_handler::show_expose_button
views_handler_filter::show_operator_form public function Shortcut to display the operator form.
views_handler_filter::show_value_form public function Shortcut to display the value form.
views_handler_filter::store_exposed_input public function Store the exposed input for processing later. Overrides views_handler::store_exposed_input
views_handler_filter::store_group_input public function If set to remember exposed input in the session, store it there.
views_handler_filter::value_validate public function Validate the options form. 3
views_handler_filter_entity_bundle::$entity_type public property Stores the entity type on which the filter filters.
views_handler_filter_entity_bundle::get_entity_type public function Set and returns the entity_type.
views_handler_filter_entity_bundle::get_value_options public function Child classes should be used to override this function and set the 'value options', unless 'options callback' is defined as a valid function or static public method to generate these values. Overrides views_handler_filter_in_operator::get_value_options
views_handler_filter_entity_bundle::init public function Provide some extra help to get the operator/value easier to use. Overrides views_handler_filter::init
views_handler_filter_entity_bundle::query public function All entity types beside comment and taxonomy terms have a proper implement bundle, though these two need an additional join to node/vocab table to work as required. Overrides views_handler_filter_in_operator::query
views_handler_filter_in_operator::$value_form_type public property 1
views_handler_filter_in_operator::$value_options public property Stores all operations which are available on the form.
views_handler_filter_in_operator::accept_exposed_input public function Check to see if input from the exposed filters should change the behavior. Overrides views_handler_filter::accept_exposed_input 2
views_handler_filter_in_operator::admin_summary public function Display the filter on the administrative summary. Overrides views_handler_filter::admin_summary 2
views_handler_filter_in_operator::construct public function Views handlers use a special construct function. Overrides views_object::construct
views_handler_filter_in_operator::expose_form public function Options form subform for exposed filter options. Overrides views_handler_filter::expose_form 1
views_handler_filter_in_operator::expose_options public function Provide default options for exposed filters. Overrides views_handler_filter::expose_options
views_handler_filter_in_operator::operators public 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. 1
views_handler_filter_in_operator::operator_options public function Build strings from the operators() for 'select' options. Overrides views_handler_filter::operator_options 2
views_handler_filter_in_operator::operator_values public function
views_handler_filter_in_operator::option_definition public function Information about options for all kinds of purposes will be held here. Overrides views_handler_filter::option_definition 1
views_handler_filter_in_operator::op_empty public function
views_handler_filter_in_operator::op_simple public function
views_handler_filter_in_operator::reduce_value_options public function When using exposed filters, we may be required to reduce the set.
views_handler_filter_in_operator::validate public function Validates the handler against the complete View. Overrides views_handler::validate
views_handler_filter_in_operator::value_form public function Options form subform for setting options. Overrides views_handler_filter::value_form 2
views_handler_filter_in_operator::value_submit public function Perform any necessary changes to the form values prior to storage. Overrides views_handler_filter::value_submit 2
views_object::$definition public property Handler's definition.
views_object::$options public property Except for displays, options for the object will be held here. 1
views_object::altered_option_definition function Collect this handler's option definition and alter them, ready for use.
views_object::destroy public function Destructor. 2
views_object::export_option public function 1
views_object::export_options public function
views_object::export_option_always public function Always exports the option, regardless of the default value.
views_object::options Deprecated public function Set default options on this object. 1
views_object::set_default_options public function Set default options.
views_object::set_definition public function Let the handler know what its full definition is.
views_object::unpack_options public function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_object::unpack_translatable public function Unpack a single option definition.
views_object::unpack_translatables public function Unpacks each handler to store translatable texts.
views_object::_set_option_defaults public function