You are here

protected function ActivityFilterPersonalisedHomepage::getAvailableCommentIds in Open Social 10.3.x

Same name and namespace in other branches
  1. 10.1.x modules/custom/activity_viewer/src/Plugin/views/filter/ActivityFilterPersonalisedHomepage.php \Drupal\activity_viewer\Plugin\views\filter\ActivityFilterPersonalisedHomepage::getAvailableCommentIds()
  2. 10.2.x modules/custom/activity_viewer/src/Plugin/views/filter/ActivityFilterPersonalisedHomepage.php \Drupal\activity_viewer\Plugin\views\filter\ActivityFilterPersonalisedHomepage::getAvailableCommentIds()

Gets list of comment IDs to which user has access.

Parameters

array $node_ids: List of node IDs.

array $post_ids: List of post IDs.

Return value

array List of comment IDs.

1 call to ActivityFilterPersonalisedHomepage::getAvailableCommentIds()
ActivityFilterPersonalisedHomepage::query in modules/custom/activity_viewer/src/Plugin/views/filter/ActivityFilterPersonalisedHomepage.php
Filters out activity items the user is not allowed to see.

File

modules/custom/activity_viewer/src/Plugin/views/filter/ActivityFilterPersonalisedHomepage.php, line 360

Class

ActivityFilterPersonalisedHomepage
Filters activity for a personalised homepage.

Namespace

Drupal\activity_viewer\Plugin\views\filter

Code

protected function getAvailableCommentIds(array $node_ids, array $post_ids) {
  $query = $this->connection
    ->select('comment_field_data', 'cfd');
  $query
    ->fields('cfd', [
    'cid',
  ]);
  $or = $query
    ->orConditionGroup();

  // Return empty array if any nodes or posts are not available.
  if (empty($node_ids) && empty($post_ids)) {
    return [];
  }

  // Comments related to available nodes.
  if (!empty($node_ids)) {
    $node_access = $or
      ->andConditionGroup();
    $node_access
      ->condition('entity_type', 'node');
    $node_access
      ->condition('entity_id', $node_ids, 'IN');
    $or
      ->condition($node_access);
  }

  // Comments related to available posts.
  if (!empty($post_ids)) {
    $post_access = $or
      ->andConditionGroup();
    $post_access
      ->condition('entity_type', 'post');
    $post_access
      ->condition('entity_id', $post_ids, 'IN');
    $or
      ->condition($post_access);
  }
  if (!empty($or
    ->conditions()[0])) {
    $query
      ->condition($or);
  }
  $query
    ->condition('cfd.status', '1');
  $cids = $query
    ->execute()
    ->fetchCol();
  return array_unique($cids);
}