function civicrm_entity_views_query_alter in CiviCRM Entity 8.3
File
- ./
civicrm_entity.module, line 492 - Module file for the CiviCRM Entity module.
Code
function civicrm_entity_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
\Drupal::service('civicrm')
->initialize();
$multilingual = \CRM_Core_I18n::isMultilingual();
if ($multilingual) {
global $dbLocale;
$columns = CRM_Core_I18n_SchemaStructure::columns();
$affectedColumns = [];
foreach ($columns as $table => $hash) {
foreach (array_keys($hash) as $column) {
$affectedColumns[] = "{$table}.{$column}";
}
}
foreach ($query->where as &$condition_group) {
foreach ($condition_group['conditions'] as &$condition) {
if (!is_object($condition['field'])) {
foreach ($affectedColumns as $aff_column) {
if (strpos($aff_column, $condition['field']) !== FALSE) {
$condition['field'] = str_replace($aff_column, $aff_column . $dbLocale, $condition['field']);
}
}
}
}
}
foreach ($query->fields as &$field) {
if (array_key_exists($field['table'], $columns) && array_key_exists($field['field'], $columns[$field['table']])) {
$field['field'] .= $dbLocale;
}
}
}
}