views_filters_selective.views.inc in Views Hacks 6
File
views_filters_selective/views_filters_selective.views.inc
View source
<?php
function views_filters_selective_views_data_alter(&$data) {
foreach ($data as $table_name => $table_info) {
foreach ($table_info as $field_name => $field_info) {
if (!empty($field_info['filter']['handler']) && $field_info['filter']['handler'] != 'views_handler_filter_selective') {
$selective = $field_info;
$selective['title'] = $field_info['title'] . ' (selective)';
$selective['filter']['handler'] = 'views_handler_filter_selective';
$selective['filter']['proxy'] = $field_info['filter']['handler'];
$selective['filter']['field'] = $field_name;
unset($selective['argument'], $selective['field'], $selective['relationship'], $selective['sort']);
$data[$table_name][$field_name . '_selective'] = $selective;
}
}
}
}
function views_filters_selective_views_handlers() {
return array(
'handlers' => array(
'views_handler_filter_selective' => array(
'parent' => 'views_handler_filter_in_operator',
),
),
);
}
function views_filters_selective_views_plugins() {
return array(
'exposed_form' => array(
'views_filters_selective' => array(
'title' => t('Selective Exposed Filters'),
'help' => t('Restrict exposed filter values to those present in the result set.'),
'handler' => 'views_filters_selective_exposed_form_plugin',
'uses row plugin' => FALSE,
'uses fields' => TRUE,
'uses options' => TRUE,
'type' => 'normal',
'parent' => 'basic',
),
),
);
}