function _views_filter_selective_query in Views Hacks 6
Helper function to create selective query.
2 calls to _views_filter_selective_query()
- views_filters_selective_handler_filter in views_filters_selective/
views_filters_selective.module - Callback implementation for generic filter.
- views_filters_selective_handler_filter_term_node_tid_depth in views_filters_selective/
views_filters_selective.module - Callback implementation for term_node_tid_depth filter.
File
- views_filters_selective/
views_filters_selective.module, line 256
Code
function _views_filter_selective_query($filter, $field_name, $table_name, $oids) {
// Create new Views query object to make the SQL statement for us.
$views_data = views_fetch_data($filter->view->base_table);
$query_options = $filter->view->display_handler
->get_option('query');
$plugin = !empty($views_data['table']['base']['query class']) ? $views_data['table']['base']['query class'] : 'views_query';
$query = views_get_plugin('query', $plugin);
$query
->init($filter->view->base_table, $filter->view->base_field, $query_options['options']);
$query
->add_field($table_name, $field_name, $field_name);
$placeholders = db_placeholders($oids, 'int');
$query
->add_where(0, "{$filter->view->base_table}.{$filter->view->base_field} IN ({$placeholders})", $oids);
$query->view = (object) array(
'name' => 'selective_query',
'selective_query' => TRUE,
);
// needed to avoid PHP notice and for views_query_alter
$query
->alter($query->view);
// Return the results.
$options = array();
$result = db_query($query
->query(), $oids);
while ($id = db_fetch_object($result)) {
$options[] = $id->{$field_name};
}
return $options;
}