You are here

function social_private_message_views_query_alter in Open Social 8.5

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  2. 8.2 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  3. 8.3 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  4. 8.4 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  5. 8.6 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  6. 8.7 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  7. 8.8 modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  8. 10.3.x modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  9. 10.0.x modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  10. 10.1.x modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()
  11. 10.2.x modules/social_features/social_private_message/social_private_message.module \social_private_message_views_query_alter()

Implements hook_views_query_alter().

File

modules/social_features/social_private_message/social_private_message.module, line 599
The Social Privagte Message module.

Code

function social_private_message_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
  if ($view
    ->id() == 'inbox') {

    // Current user.
    $current_user_id = \Drupal::currentUser()
      ->id();

    // Add join definition.
    $definition = [
      'table' => 'pm_thread_delete_time',
      'field' => 'id',
      'left_table' => 'private_message_thread__last_delete_time',
      'left_field' => 'last_delete_time_target_id',
      'operator' => '=',
      'extra' => 'pm_thread_delete_time.delete_time <= private_messages_private_message_thread__private_messages.created',
    ];

    // Create a join stement from plugin.
    $join = Drupal::service('plugin.manager.views.join')
      ->createInstance('standard', $definition);

    // Add join to the query.
    $query
      ->addRelationship('pm_thread_delete_time', $join, 'delete_time');

    // Add some extra where statements.
    $query
      ->addWhere(NULL, 'private_message_thread__members.members_target_id', $current_user_id, '=');
    $query
      ->addWhere(NULL, 'pm_thread_delete_time.owner', $current_user_id, '=');
  }
}