function select_translation_filter_handler::original_query in Select translation 7
This was the original correlated query, which is currently not used.
File
- ./
select_translation_filter_handler.inc, line 281 - Views select translation filter handler.
Class
Code
function original_query() {
// Prepare input.
$list = array();
if ($this->value == 'original') {
$list = array(
'current',
);
}
elseif ($this->value == 'default') {
$list = array(
'current',
'default',
);
}
elseif (!empty($this->options['priorities'])) {
$list = explode(',', $this->options['priorities']);
foreach ($list as $i => $v) {
$list[$i] = strtolower(trim($v));
}
}
$list[] = 'original';
foreach ($list as $i => $v) {
if ($list[$i] == 'current') {
$list[$i] = '***CURRENT_LANGUAGE***';
}
elseif ($list[$i] == 'default') {
$list[$i] = language_default('language');
}
}
$list = array_unique($list);
$views_query = $this->query;
/* @var $views_query views_plugin_query_default */
// Now build the query. For every option, we need to exclude
// the previous ones to ensure only one node gets selected in the end.
$alias = $views_query
->ensure_table('node');
// First include nodes that don't have translations.
$query = "node.tnid = 0";
$exclude = array();
foreach ($list as $v) {
if ($v == 'original') {
// Include nodes that are the base of a translation (aka original).
$add = "{$alias}.nid = {$alias}.tnid";
$exc = "lmfh_node.tnid = lmfh_node.nid";
}
else {
// Include nodes of specified language.
$add = "{$alias}.language = '{$v}'";
$exc = "lmfh_node.language = '{$v}'";
}
if (count($exclude)) {
$add = $add . " AND\n 0 = (SELECT count(lmfh_node.nid)\n FROM {node} AS lmfh_node\n WHERE lmfh_node.tnid = node.tnid AND\n ((" . implode(') OR (', $exclude) . ")))";
}
$exclude[] = $exc;
$query = $query . "\n OR ({$add})";
}
$views_query
->add_where_expression($this->options['group'], $query);
}