function lingotek_bulk_grid_filter_search_box in Lingotek Translation 7.7
Same name and namespace in other branches
- 7.6 lingotek.bulk_grid.inc \lingotek_bulk_grid_filter_search_box()
1 call to lingotek_bulk_grid_filter_search_box()
File
- ./
lingotek.bulk_grid.inc, line 2049
Code
function lingotek_bulk_grid_filter_search_box($query, $filters, $eid, $label_col, $entity_type) {
if (isset($filters['search_type']) && $filters['search_type'] == 'all') {
$filters['title'] = $filters['body'] = $filters['search'];
}
$title_query = $body_query = array(
-1,
);
if ($entity_type == 'comment') {
$title_field_table = 'field_data_subject_field';
$title_field_col = 'subject_field_value';
$body_field_table = 'field_data_comment_body';
$body_field_col = 'comment_body_value';
}
elseif ($entity_type === 'paragraphs_item') {
$title_field_table = 'field_data_title_field';
$title_field_col = 'title_field_value';
$paragraphs = db_select('paragraphs_item', 'pi')
->distinct()
->fields('pi')
->execute()
->fetchAll();
$filtered_paragraphs = array();
if (isset($filters['title']) && db_table_exists($title_field_table)) {
foreach ($paragraphs as $paragraph) {
$item_id = $paragraph->item_id;
list($parent_id, $parent_title) = lingotek_get_paragraph_parent_info($entity_type, $item_id);
$found_title = db_select($title_field_table, 'tf')
->fields('tf')
->condition('entity_id', $parent_id)
->condition('tf.' . $title_field_col, '%' . $filters['title'] . '%', 'LIKE')
->execute()
->fetchAll();
if (!empty($found_title)) {
$filtered_paragraphs[$item_id] = $item_id;
}
}
}
if (!empty($filtered_paragraphs)) {
$query
->condition('n.item_id', $filtered_paragraphs, 'IN');
}
else {
if (isset($filters['title'])) {
$filtered_paragraphs = array(
-1,
);
$query
->condition('n.item_id', $filtered_paragraphs, 'IN');
}
}
return;
}
else {
$title_field_table = 'field_data_title_field';
$title_field_col = 'title_field_value';
$body_field_table = 'field_data_body';
$body_field_col = 'body_value';
}
if (isset($filters['title']) && db_table_exists($title_field_table)) {
$title_query = db_select($title_field_table, 'tf')
->distinct()
->fields('tf', array(
'entity_id',
))
->condition('tf.' . $title_field_col, '%' . $filters['title'] . '%', 'LIKE');
}
if (isset($filters['body']) && db_table_exists($body_field_table)) {
$body_query = db_select($body_field_table, 'tb')
->distinct()
->fields('tb', array(
'entity_id',
))
->condition('tb.' . $body_field_col, '%' . $filters['body'] . '%', 'LIKE');
}
// Search
if (isset($filters['search_type']) && $filters['search_type'] == 'all' && isset($filters['search']) && strlen($filters['search'])) {
$or = db_or();
if (!empty($label_col)) {
$or
->condition('n.' . $label_col, '%' . $filters['search'] . '%', 'LIKE');
}
$or
->condition('' . $eid . '', $title_query, 'IN');
$or
->condition('' . $eid . '', $body_query, 'IN');
$query
->condition($or);
}
else {
// Title Field
if (isset($filters['title']) && $filters['title'] != '') {
$or = db_or();
$or
->condition('' . $eid . '', $title_query, 'IN');
if (!empty($label_col)) {
$or
->condition('n.' . $label_col, '%' . $filters['search'] . '%', 'LIKE');
}
$query
->condition($or);
}
// Body Field
if (isset($filters['body']) && $filters['body'] != '') {
$query
->condition('' . $eid . '', $body_query, 'IN');
}
}
}