You are here

public function ForumManager::unreadTopics in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/forum/src/ForumManager.php \Drupal\forum\ForumManager::unreadTopics()
  2. 10 core/modules/forum/src/ForumManager.php \Drupal\forum\ForumManager::unreadTopics()

Calculates the number of new posts in a forum that the user has not yet read.

Nodes are new if they are newer than HISTORY_READ_LIMIT.

Parameters

int $term: The term ID of the forum.

int $uid: The user ID.

Return value

The number of new posts in the forum that have not been read by the user.

Overrides ForumManagerInterface::unreadTopics

File

core/modules/forum/src/ForumManager.php, line 482

Class

ForumManager
Provides forum manager service.

Namespace

Drupal\forum

Code

public function unreadTopics($term, $uid) {
  $query = $this->connection
    ->select('node_field_data', 'n');
  $query
    ->join('forum', 'f', '[n].[vid] = [f].[vid] AND [f].[tid] = :tid', [
    ':tid' => $term,
  ]);
  $query
    ->leftJoin('history', 'h', '[n].[nid] = [h].[nid] AND [h].[uid] = :uid', [
    ':uid' => $uid,
  ]);
  $query
    ->addExpression('COUNT([n].[nid])', 'count');
  return $query
    ->condition('status', 1)
    ->condition('n.default_langcode', 1)
    ->condition('n.created', HISTORY_READ_LIMIT, '>')
    ->isNull('h.nid')
    ->addTag('node_access')
    ->execute()
    ->fetchField();
}