You are here

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;
      }
    }
  }
}