class views_handler_filter_entity_bundle
Filter class which allows to filter by certain bundles of an entity.
This class provides workarounds for taxonomy and comment.
Hierarchy
- class \views_object
- class \views_handler
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;
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.
*/
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;
}
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.
*/
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
Name | Modifiers | Type | Description |
---|---|---|---|
views_object:: |
function | ||
views_object:: |
function | Unpacks each handler to store translatable texts. | |
views_object:: |
function | Unpack a single option definition. | |
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 | Let the handler know what its full definition is. | |
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 | Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility. | |
views_object:: |
function | Always exports the option, regardless of the default value. | |
views_object:: |
function | ||
views_object:: |
function | ||
views_object:: |
function | ||
views_handler_filter_in_operator:: |
function |
Perform any necessary changes to the form values prior to storage.
There is no need for this function to actually store the data. Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function |
Options form subform for setting options. Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function |
Validates the handler against the complete View. Overrides views_handler:: |
|
views_handler_filter_in_operator:: |
function | When using exposed filters, we may be required to reduce the set. | |
views_handler_filter_in_operator:: |
function | ||
views_handler_filter_in_operator:: |
function | ||
views_handler_filter_in_operator:: |
function |
Information about options for all kinds of purposes will be held here.
@code
'option_name' => array( Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function | ||
views_handler_filter_in_operator:: |
function |
Build strings from the operators() for 'select' options Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
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. | |
views_handler_filter_in_operator:: |
function |
Provide default options for exposed filters. Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function |
Options form subform for exposed filter options. Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function |
Views handlers use a special construct function so that we can more
easily construct them with variable arguments. Overrides views_object:: |
|
views_handler_filter_in_operator:: |
function |
Display the filter on the administrative summary Overrides views_handler_filter:: |
|
views_handler_filter_in_operator:: |
function |
Check to see if input from the exposed filters should change
the behavior of this filter. Overrides views_handler_filter:: |
|
views_handler_filter_entity_bundle:: |
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:: |
|
views_handler_filter_entity_bundle:: |
function |
Provide some extra help to get the operator/value easier to use. Overrides views_handler_filter:: |
|
views_handler_filter_entity_bundle:: |
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:: |
|
views_handler_filter_entity_bundle:: |
function | Set and returns the entity_type. | |
views_handler_filter_entity_bundle:: |
public | property | Stores the entity type on which the filter filters. |
views_handler_filter:: |
function | Validate the options form. | |
views_handler_filter:: |
function | If set to remember exposed input in the session, store it there. This function is similar to store_exposed_input but modified to work properly when the filter is a group. | |
views_handler_filter:: |
function |
If set to remember exposed input in the session, store it there. Overrides views_handler:: |
|
views_handler_filter:: |
function | Shortcut to display the value form. | |
views_handler_filter:: |
function | Shortcut to display the operator form. | |
views_handler_filter:: |
function |
Shortcut to display the expose/hide button. Overrides views_handler:: |
|
views_handler_filter:: |
function | Shortcut to display the exposed options form. | |
views_handler_filter:: |
function | Shortcut to display the build_group/hide button. | |
views_handler_filter:: |
function | Sanitizes the HTML select element's options. | |
views_handler_filter:: |
function |
Simple validate handler Overrides views_handler:: |
|
views_handler_filter:: |
function |
Simple submit handler Overrides views_handler:: |
|
views_handler_filter:: |
function |
Provide the basic form which calls through to subforms.
If overridden, it is best to call through to the parent,
or to at least make sure all of the functions in this form
are called. Overrides views_handler:: |
|
views_handler_filter:: |
function | Validate the operator form. | |
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 | Options form subform for setting the operator. | |
views_handler_filter:: |
function |
Returns TRUE if users can select multiple groups items of a
grouped exposed filter. Overrides views_handler:: |
|
views_handler_filter:: |
function |
Returns TRUE if the exposed filter works like a grouped filter. Overrides views_handler:: |
|
views_handler_filter:: |
function | Returns the options available for a grouped filter that users checkboxes as widget, and therefore has to be applied several times, one per item selected. | |
views_handler_filter:: |
function | Build a form containing a group of operator | values to apply as a single filter. | |
views_handler_filter:: |
function |
Validate the options form. 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 |
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 |
Render our chunk of the exposed filter form when selecting Overrides views_handler:: |
|
views_handler_filter:: |
function | ||
views_handler_filter:: |
function | Can this filter be used in OR groups? | |
views_handler_filter:: |
function |
Determine if a filter can be exposed. Overrides views_handler:: |
|
views_handler_filter:: |
function | Determine if a filter can be converted into a group. Only exposed filters with operators available can be converted into groups. | |
views_handler_filter:: |
function | Validate the build group options form. | |
views_handler_filter:: |
function | Save new group items, re-enumerates and remove groups marked to delete. | |
views_handler_filter:: |
function | Provide default options for exposed filters. | |
views_handler_filter:: |
function | Build the form to let users create the group of exposed filters. This form is displayed when users click on button 'Build group' | |
views_handler:: |
function | Provides the handler some groupby. | |
views_handler:: |
function | Return a string representing this handler's name in the UI. | |
views_handler:: |
function | Shortcut to display the exposed options form. | |
views_handler:: |
function | Called just prior to query(), this lets a handler set up any relationship it needs. | |
views_handler:: |
function | Sanitize the value for output. | |
views_handler:: |
function | Run before the view is built. | |
views_handler:: |
function | Run after the view is executed, before the result is cached. | |
views_handler:: |
function | Provides a unique placeholders for handlers. | |
views_handler:: |
function | Determine if the argument needs a style plugin. | |
views_handler:: |
function | Determine if this item is 'exposed', meaning it provides form elements to let users modify the view. | |
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 | 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 | Provide a form for aggregation settings. | |
views_handler:: |
function | Get the join object that should be used for this handler. | |
views_handler:: |
function | Shortcut to get a handler's raw field value. | |
views_handler:: |
function | Validate the options form. | |
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 | Provide a form for setting options. | |
views_handler:: |
function | Provide defaults for the handler. | |
views_handler:: |
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:: |
function | Validate the exposed handler form | |
views_handler:: |
function | Submit the exposed handler form | |
views_handler:: |
function | Ensure the main table for this handler is in the query. This is used a lot. | |
views_handler:: |
function | Transform a string by a certain method. | |
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 | Check whether current user has access to this handler. | |
views_handler:: |
public | property | The alias of the table of this handler which is used in the query. |