function lingotek_config_add_query_filters in Lingotek Translation 7.7
Same name and namespace in other branches
- 7.6 lingotek.config.inc \lingotek_config_add_query_filters()
2 calls to lingotek_config_add_query_filters()
File
- ./
lingotek.config.inc, line 228 - Config grid form elements
Code
function lingotek_config_add_query_filters($query) {
$entity_type = $_SESSION['grid_entity_type'];
if (!isset($_SESSION['grid_filters'][$entity_type])) {
return;
}
$filters = $_SESSION['grid_filters'][$entity_type];
if (isset($filters['search']) && strlen($filters['search'])) {
$query
->where("LOWER(CONVERT(source USING utf8)) LIKE :source_string", array(
':source_string' => '%' . strtolower($filters['search'] . '%'),
));
}
if (isset($filters['textgroup'])) {
if ($filters['textgroup'] == 'interface') {
$query
->condition('textgroup', 'default');
}
elseif ($filters['textgroup'] == 'menu') {
$query
->condition('textgroup', 'menu');
}
elseif ($filters['textgroup'] == 'taxonomy') {
$query
->condition('textgroup', 'taxonomy');
}
elseif ($filters['textgroup'] == 'blocks') {
$query
->condition('textgroup', 'blocks');
}
elseif ($filters['textgroup'] == 'field') {
$query
->condition('textgroup', 'field');
}
elseif ($filters['textgroup'] == 'views') {
$query
->condition('textgroup', 'views');
}
elseif ($filters['textgroup'] == 'webform') {
$query
->condition('textgroup', 'webform');
}
elseif ($filters['textgroup'] == 'misc') {
$query
->condition('textgroup', array(
'default',
'menu',
'taxonomy',
'blocks',
'field',
'views',
), 'NOT IN');
}
}
// Module Filter
if (isset($filters['location']) && $filters['location'] != '') {
$query
->condition('s.location', '%' . $filters['location'] . '%', 'LIKE');
}
lingotek_filter_by_document_id($query, $filters);
// Upload Status
if (isset($filters['upload_status']) && $filters['upload_status'] != 'all') {
$query
->leftJoin('locales_target', 'lt', 'lt.lid = s.lid');
if ($filters['upload_status'] == 'never') {
$query
->isNull('lt.lid');
}
elseif ($filters['upload_status'] == LingotekSync::STATUS_EDITED) {
// The edited status won't show in lingotek_config_metadata table so we need to check the i18n_status (1 == edited).
$query
->condition('lt.i18n_status', '1');
}
else {
$query
->havingCondition('upload_status', $filters['upload_status']);
// Do not include items with a source marked as edited in locales_target (1 == edited).
$query
->condition('lt.i18n_status', '0');
}
}
// Marked status
if (isset($filters['marked_status']) && $filters['marked_status'] != 'all') {
// Marked
if ($filters['marked_status'] == 'marked') {
$marked_query = db_select('lingotek_config_metadata', 'lcm');
$marked_query
->distinct();
$marked_query
->fields('lcm', array(
'value',
));
$marked_query
->condition('config_key', 'marked');
$query
->condition('s.lid', $marked_query, 'IN');
}
elseif ($filters['marked_status'] == 'unmarked') {
$marked_query = db_select('lingotek_config_metadata', 'lcm');
$marked_query
->distinct();
$marked_query
->fields('lcm', array(
'value',
));
$marked_query
->condition('config_key', 'marked');
$query
->condition('s.lid', $marked_query, 'NOT IN');
}
}
// Entity ID
if (isset($filters['lid']) && $filters['lid'] != '') {
$query
->condition('s.lid', $filters['lid']);
}
// Config set ID
if (isset($filters['config_set_id']) && $filters['config_set_id'] != '') {
$config_set_query = db_select('lingotek_config_map', 'lcm')
->fields('lcm', array(
'lid',
))
->condition('set_id', $filters['config_set_id']);
$query
->condition('s.lid', $config_set_query, 'IN');
}
}