You are here

public function ForumManager::getChildren in Drupal 9

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

Utility method to fetch the child forums for a given forum.

Parameters

int $vid: The forum vocabulary ID.

int $tid: The forum ID to fetch the children for.

Return value

array Array of children.

Overrides ForumManagerInterface::getChildren

1 call to ForumManager::getChildren()
ForumManager::getIndex in core/modules/forum/src/ForumManager.php
Generates and returns the forum index.

File

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

Class

ForumManager
Provides forum manager service.

Namespace

Drupal\forum

Code

public function getChildren($vid, $tid) {
  if (!empty($this->forumChildren[$tid])) {
    return $this->forumChildren[$tid];
  }
  $forums = [];
  $_forums = $this->entityTypeManager
    ->getStorage('taxonomy_term')
    ->loadTree($vid, $tid, NULL, TRUE);
  foreach ($_forums as $forum) {

    // Merge in the topic and post counters.
    if ($count = $this
      ->getForumStatistics($forum
      ->id())) {
      $forum->num_topics = $count->topic_count;
      $forum->num_posts = $count->topic_count + $count->comment_count;
    }
    else {
      $forum->num_topics = 0;
      $forum->num_posts = 0;
    }

    // Merge in last post details.
    $forum->last_post = $this
      ->getLastPost($forum
      ->id());
    $forums[$forum
      ->id()] = $forum;
  }
  $this->forumChildren[$tid] = $forums;
  return $forums;
}