abstract class SearchApiViewsHandlerFilterEntity in Search API 7
Views filter handler class for entities.
Should be extended for specific entity types, such as SearchApiViewsHandlerFilterUser and SearchApiViewsHandlerFilterTaxonomyTerm.
Based on views_handler_filter_term_node_tid.
Hierarchy
- class \views_object
- class \views_handler
- class \views_handler_filter
- class \views_handler
Expanded class hierarchy of SearchApiViewsHandlerFilterEntity
File
- contrib/
search_api_views/ includes/ handler_filter_entity.inc, line 16 - Contains SearchApiViewsHandlerFilterEntity.
View source
abstract class SearchApiViewsHandlerFilterEntity extends SearchApiViewsHandlerFilter {
/**
* If exposed form input was successfully validated, the entered entity IDs.
*
* @var array
*/
protected $validated_exposed_input;
/**
* Validates entered entity labels and converts them to entity IDs.
*
* Since this can come from either the form or the exposed filter, this is
* abstracted out a bit so it can handle the multiple input sources.
*
* @param array $form
* The form or form element for which any errors should be set.
* @param array $values
* The entered user names to validate.
*
* @return array
* The entity IDs corresponding to all entities that could be found.
*/
protected abstract function validate_entity_strings(array &$form, array $values);
/**
* Transforms an array of entity IDs into a comma-separated list of labels.
*
* @param array $ids
* The entity IDs to transform.
*
* @return string
* A string containing the labels corresponding to the IDs, separated by
* commas.
*/
protected abstract function ids_to_strings(array $ids);
/**
* {@inheritdoc}
*/
public function operator_options() {
$operators = array(
'=' => $this
->isMultiValued() ? t('Is one of') : t('Is'),
'all of' => t('Is all of'),
'<>' => $this
->isMultiValued() ? t('Is not one of') : t('Is not'),
'empty' => t('Is empty'),
'not empty' => t('Is not empty'),
);
if (!$this
->isMultiValued()) {
unset($operators['all of']);
}
return $operators;
}
/**
* {@inheritdoc}
*/
public function value_form(&$form, &$form_state) {
parent::value_form($form, $form_state);
if (!is_array($this->value)) {
$this->value = $this->value ? array(
$this->value,
) : array();
}
// Set the correct default value in case the admin-set value is used (and a
// value is present). The value is used if the form is either not exposed,
// or the exposed form wasn't submitted yet. (There doesn't seem to be an
// easier way to check for that.)
if ($this->value && (empty($form_state['input']) || !empty($form_state['input']['live_preview']))) {
$form['value']['#default_value'] = $this
->ids_to_strings($this->value);
}
}
/**
* {@inheritdoc}
*/
public function value_validate($form, &$form_state) {
if (!empty($form['value'])) {
$value =& $form_state['values']['options']['value'];
if (strlen($value)) {
$values = $this
->isMultiValued($form_state['values']['options']) ? drupal_explode_tags($value) : array(
$value,
);
$ids = $this
->validate_entity_strings($form['value'], $values);
if ($ids) {
$value = $ids;
}
}
}
}
/**
* {@inheritdoc}
*/
public function accept_exposed_input($input) {
$rc = parent::accept_exposed_input($input);
if ($rc) {
// If we have previously validated input, override.
if ($this->validated_exposed_input) {
$this->value = $this->validated_exposed_input;
}
}
return $rc;
}
/**
* {@inheritdoc}
*/
public function exposed_validate(&$form, &$form_state) {
if (empty($this->options['exposed']) || empty($this->options['expose']['identifier'])) {
return;
}
$this->validated_exposed_input = FALSE;
$identifier = $this->options['expose']['identifier'];
$input = $form_state['values'][$identifier];
if ($this->options['is_grouped'] && isset($this->options['group_info']['group_items'][$input])) {
$this->operator = $this->options['group_info']['group_items'][$input]['operator'];
$input = $this->options['group_info']['group_items'][$input]['value'];
}
if (!strlen($input)) {
return;
}
$values = $this
->isMultiValued() ? drupal_explode_tags($input) : array(
$input,
);
if (!$this->options['is_grouped'] || $this->options['is_grouped'] && $input != 'All') {
$this->validated_exposed_input = $this
->validate_entity_strings($form[$identifier], $values);
}
}
/**
* Determines whether multiple user names can be entered into this filter.
*
* This is either the case if the form isn't exposed, or if the " Allow
* multiple selections" option is enabled.
*
* @param array $options
* (optional) The options array to use. If not supplied, the options set on
* this filter will be used.
*
* @return bool
* TRUE if multiple values can be entered for this filter, FALSE otherwise.
*/
protected function isMultiValued(array $options = array()) {
$options = $options ? $options : $this->options;
return empty($options['exposed']) || !empty($options['expose']['multiple']);
}
/**
* {@inheritdoc}
*/
public function admin_summary() {
if (!is_array($this->value)) {
$this->value = $this->value ? array(
$this->value,
) : array();
}
$value = $this->value;
$this->value = empty($value) ? '' : $this
->ids_to_strings($value);
$ret = parent::admin_summary();
$this->value = $value;
return $ret;
}
/**
* {@inheritdoc}
*/
public function query() {
if ($this->operator === 'empty') {
$this->query
->condition($this->real_field, NULL, '=', $this->options['group']);
}
elseif ($this->operator === 'not empty') {
$this->query
->condition($this->real_field, NULL, '<>', $this->options['group']);
}
elseif (is_array($this->value)) {
$all_of = $this->operator === 'all of';
$operator = $all_of ? '=' : $this->operator;
if (count($this->value) == 1) {
$this->query
->condition($this->real_field, reset($this->value), $operator, $this->options['group']);
}
else {
$filter = $this->query
->createFilter($operator === '<>' || $all_of ? 'AND' : 'OR');
foreach ($this->value as $value) {
$filter
->condition($this->real_field, $value, $operator);
}
$this->query
->filter($filter, $this->options['group']);
}
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
SearchApiViewsHandlerFilter:: |
public | property |
The operator used for filtering. Overrides views_handler_filter:: |
|
SearchApiViewsHandlerFilter:: |
public | property |
The associated views query object. Overrides views_handler:: |
4 |
SearchApiViewsHandlerFilter:: |
public | property |
The value to filter for. Overrides views_handler_filter:: |
|
SearchApiViewsHandlerFilterEntity:: |
protected | property | If exposed form input was successfully validated, the entered entity IDs. | |
SearchApiViewsHandlerFilterEntity:: |
public | function |
Check to see if input from the exposed filters should change the behavior. Overrides views_handler_filter:: |
1 |
SearchApiViewsHandlerFilterEntity:: |
public | function |
Display the filter on the administrative summary Overrides SearchApiViewsHandlerFilter:: |
|
SearchApiViewsHandlerFilterEntity:: |
public | function |
Validate the exposed handler form. Overrides views_handler:: |
1 |
SearchApiViewsHandlerFilterEntity:: |
abstract protected | function | Transforms an array of entity IDs into a comma-separated list of labels. | 2 |
SearchApiViewsHandlerFilterEntity:: |
protected | function | Determines whether multiple user names can be entered into this filter. | |
SearchApiViewsHandlerFilterEntity:: |
public | function |
Provide a list of options for the operator form. Overrides SearchApiViewsHandlerFilter:: |
|
SearchApiViewsHandlerFilterEntity:: |
public | function |
Add this filter to the query. Overrides SearchApiViewsHandlerFilter:: |
|
SearchApiViewsHandlerFilterEntity:: |
abstract protected | function | Validates entered entity labels and converts them to entity IDs. | 2 |
SearchApiViewsHandlerFilterEntity:: |
public | function |
Provide a form for setting the filter value. Overrides SearchApiViewsHandlerFilter:: |
2 |
SearchApiViewsHandlerFilterEntity:: |
public | function |
Validate the options form. Overrides views_handler_filter:: |
1 |
views_handler:: |
public | property | The type of the handler, for example filter/footer/field. | |
views_handler:: |
public | property | The actual field in the database table, maybe different on other kind of query plugins/special handlers. | |
views_handler:: |
public | property | The relationship used for this field. | |
views_handler:: |
public | property | The alias of the table of this handler which is used in the query. | |
views_handler:: |
public | property |
The top object of a view. Overrides views_object:: |
|
views_handler:: |
public | function | Check whether current user has access to this handler. | 10 |
views_handler:: |
public | function | Determine if the handler is considered 'broken'. | 6 |
views_handler:: |
public | function | Transform a string by a certain method. | |
views_handler:: |
public | function | Ensure the main table for this handler is in the query. This is used a lot. | 8 |
views_handler:: |
public | function | Submit the exposed handler form. | |
views_handler:: |
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:: |
public | function | Provide defaults for the handler. | |
views_handler:: |
public | function | Provide a form for setting options. | 1 |
views_handler:: |
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:: |
public | function | Validate the options form. | |
views_handler:: |
public | function | Shortcut to get a handler's raw field value. | |
views_handler:: |
public | function | Get the join object that should be used for this handler. | |
views_handler:: |
public | function | Provide a form for aggregation settings. | 1 |
views_handler:: |
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:: |
public | function | If a handler has 'extra options' it will get a little settings widget and another form called extra_options. | 1 |
views_handler:: |
public | function | Determine if this item is 'exposed', meaning it provides form elements to let users modify the view. | |
views_handler:: |
public | function | Determine if the argument needs a style plugin. | 1 |
views_handler:: |
public | function | Provides a unique placeholders for handlers. | |
views_handler:: |
public | function | Run after the view is executed, before the result is cached. | 1 |
views_handler:: |
public | function | Run before the view is built. | 1 |
views_handler:: |
public | function | Sanitize the value for output. | |
views_handler:: |
public | function | Called just prior to query(), this lets a handler set up any relationship it needs. | |
views_handler:: |
public | function | Shortcut to display the exposed options form. | |
views_handler:: |
public | function | Return a string representing this handler's name in the UI. | 9 |
views_handler:: |
public | function | Provides the handler some groupby. | 2 |
views_handler:: |
public | function | Validates the handler against the complete View. | 1 |
views_handler_filter:: |
public | property | Disable the possibility to force a single value. | 6 |
views_handler_filter:: |
public | property | Disable the possibility to allow a exposed input to be optional. | |
views_handler_filter:: |
public | property | Contains the information of the selected item in a gruped filter. | |
views_handler_filter:: |
public | property | Disable the possibility to use operators. | 2 |
views_handler_filter:: |
public | function | Build the form to let users create the group of exposed filters. | |
views_handler_filter:: |
public | function | Provide default options for exposed filters. | |
views_handler_filter:: |
public | function | Save new group items, re-enumerates and remove groups marked to delete. | |
views_handler_filter:: |
public | function | Validate the build group options form. | 1 |
views_handler_filter:: |
public | function | Determine if a filter can be converted into a group. | |
views_handler_filter:: |
public | function |
Determine if a filter can be exposed. Overrides views_handler:: |
5 |
views_handler_filter:: |
public | function | Can this filter be used in OR groups? | 1 |
views_handler_filter:: |
public | function | Transform the input from a grouped filter into a standard filter. | |
views_handler_filter:: |
public | function |
Render our chunk of the exposed filter form when selecting. Overrides views_handler:: |
|
views_handler_filter:: |
public | function |
Tell the renderer about our exposed form. Overrides views_handler:: |
|
views_handler_filter:: |
public | function | Make some translations to a form item to make it more suitable to exposing. | |
views_handler_filter:: |
public | function |
Options form subform for exposed filter options. Overrides views_handler:: |
2 |
views_handler_filter:: |
public | function |
Provide default options for exposed filters. Overrides views_handler:: |
2 |
views_handler_filter:: |
public | function |
Validate the options form. Overrides views_handler:: |
|
views_handler_filter:: |
public | function | Build a form with a group of operator | values to apply as a single filter. | |
views_handler_filter:: |
public | function | Options available for a grouped filter which uses checkboxes. | |
views_handler_filter:: |
public | function |
Provide some extra help to get the operator/value easier to use. Overrides views_handler:: |
2 |
views_handler_filter:: |
public | function |
Returns TRUE if the exposed filter works like a grouped filter. Overrides views_handler:: |
|
views_handler_filter:: |
public | function |
Indicate whether users can select multiple group items. Overrides views_handler:: |
|
views_handler_filter:: |
public | function | Options form subform for setting the operator. | 6 |
views_handler_filter:: |
public | function | Perform any necessary changes to the form values prior to storage. | |
views_handler_filter:: |
public | function | Validate the operator form. | |
views_handler_filter:: |
public | function |
Provide the basic form which calls through to subforms. Overrides views_handler:: |
4 |
views_handler_filter:: |
public | function |
Simple submit handler. Overrides views_handler:: |
|
views_handler_filter:: |
public | function |
Simple validate handler. Overrides views_handler:: |
1 |
views_handler_filter:: |
public | function |
Information about options for all kinds of purposes will be held here. Overrides views_handler:: |
7 |
views_handler_filter:: |
public | function | Sanitizes the HTML select element's options. | |
views_handler_filter:: |
public | function | Shortcut to display the build_group/hide button. | |
views_handler_filter:: |
public | function | Shortcut to display the exposed options form. | |
views_handler_filter:: |
public | function |
Shortcut to display the expose/hide button. Overrides views_handler:: |
|
views_handler_filter:: |
public | function | Shortcut to display the operator form. | |
views_handler_filter:: |
public | function | Shortcut to display the value form. | |
views_handler_filter:: |
public | function |
Store the exposed input for processing later. Overrides views_handler:: |
|
views_handler_filter:: |
public | function | If set to remember exposed input in the session, store it there. | |
views_handler_filter:: |
public | function | Perform any necessary changes to the form values prior to storage. | 1 |
views_object:: |
public | property | Handler's definition. | |
views_object:: |
public | property | Except for displays, options for the object will be held here. | 1 |
views_object:: |
function | Collect this handler's option definition and alter them, ready for use. | ||
views_object:: |
public | function | Views handlers use a special construct function. | 4 |
views_object:: |
public | function | Destructor. | 2 |
views_object:: |
public | function | 1 | |
views_object:: |
public | function | ||
views_object:: |
public | function | Always exports the option, regardless of the default value. | |
views_object:: |
public | function | Set default options on this object. | 1 |
views_object:: |
public | function | Set default options. | |
views_object:: |
public | function | Let the handler know what its full definition is. | |
views_object:: |
public | function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
public | function | Unpack a single option definition. | |
views_object:: |
public | function | Unpacks each handler to store translatable texts. | |
views_object:: |
public | function |