contacts_events-8.x-1.x-dev/modules/teams/contacts_events_teams.views_execution.inc
modules/teams/contacts_events_teams.views_execution.inc
<?php
/**
* @file
* Views data hook for Contacts Events Teams.
*/
use Drupal\views\Plugin\views\query\QueryPluginBase;
use Drupal\views\ViewExecutable;
/**
* Implements hook_views_query_alter().
*/
function contacts_events_teams_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
if ($view->id() == 'contacts_events_teams_applications_current') {
/** @var \Drupal\views\Plugin\views\query\Sql $query */
if (in_array($view->current_display, ['team', 'data_export_2'])) {
$ticket_team_table_alias = $query->ensureTable('contacts_ticket__team');
$team_argument = &$query->where[0]['conditions'][1];
$pos = strpos($team_argument['field'], ' ');
$app_team_field = substr($team_argument['field'], 0, $pos);
$team_argument['field'] = substr_replace($team_argument['field'], "COALESCE({$app_team_field}, {$ticket_team_table_alias}.team_target_id)", 0, $pos);
}
}
$app_view_ids = [
'contacts_events_teams_applications_current',
'contacts_events_teams_applications_archived',
];
if (in_array($view->id(), $app_view_ids)) {
$table_queue = &$query->getTableQueue();
if (isset($table_queue['users_field_data_contacts_ticket__user__profile_crm_indiv'])) {
$table_queue['users_field_data_contacts_ticket__user__profile_crm_indiv']['join']->extra[] = [
'field' => 'delta',
'value' => 0,
'numeric' => TRUE,
];
}
else {
\Drupal::logger('contacts_events_team')
->error('Unable to find profile table for view %id, possibility of duplicate records.', [
'%id' => $view->id(),
]);
}
}
}
