function _views_add_vocabulary in Views (for Drupal 7) 5
1 call to _views_add_vocabulary()
- views_handler_filter_voc in modules/
views_taxonomy.inc
File
- modules/
views_taxonomy.inc, line 545
Code
function _views_add_vocabulary($op, $value, $depth, &$query) {
$value = array_map('intval', $value);
if ($op == 'OR' || $op == 'NOR') {
$num = $query
->add_table('term_node');
$tablename1 = $query
->get_table_name('term_node', $num);
$joininfo = array(
'left' => array(
'table' => $tablename1,
'field' => 'tid',
'alias' => '',
),
'right' => array(
'field' => 'tid',
),
);
$joininfo['extra'] = array(
'vid' => $value,
);
$num = $query
->add_table('term_data', false, 1, $joininfo);
$tablename2 = $query
->get_table_name('term_data', $num);
if ($op == 'OR') {
$query
->add_where("{$tablename1}.tid IS NOT NULL");
$query
->add_where("{$tablename2}.tid IS NOT NULL");
}
else {
$query
->add_where("({$tablename1}.tid IS NULL AND {$tablename2}.tid IS NULL)");
}
}
else {
foreach ($value as $vid) {
// For every vocabulary we have to match, add a views_get_title table
$num = $query
->add_table('term_node');
$tablename = $query
->get_table_name('term_node', $num);
$num = $query
->add_table('term_data', false, 1, array(
'left' => array(
'table' => $tablename,
'field' => 'tid',
'alias' => '',
),
'right' => array(
'field' => 'tid',
),
));
$tablename = $query
->get_table_name('term_data', $num);
$query
->add_where("{$tablename}.vid = '{$vid}'");
}
}
}