function ForumManager::unreadTopics

Same name and namespace in other branches
  1. 9 core/modules/forum/src/ForumManager.php \Drupal\forum\ForumManager::unreadTopics()
  2. 8.9.x core/modules/forum/src/ForumManager.php \Drupal\forum\ForumManager::unreadTopics()
  3. 11.x 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

int 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 485

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

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.