You are here

protected function TermStorage::getAncestors in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/taxonomy/src/TermStorage.php \Drupal\taxonomy\TermStorage::getAncestors()

Returns all ancestors of this term.

@internal @todo Refactor away when TreeInterface is introduced.

Return value

\Drupal\taxonomy\TermInterface[] A list of ancestor taxonomy term entities keyed by term ID.

1 call to TermStorage::getAncestors()
TermStorage::loadAllParents in core/modules/taxonomy/src/TermStorage.php
Finds all ancestors of a given term ID.

File

core/modules/taxonomy/src/TermStorage.php, line 177

Class

TermStorage
Defines a Controller class for taxonomy terms.

Namespace

Drupal\taxonomy

Code

protected function getAncestors(TermInterface $term) {
  if (!isset($this->ancestors[$term
    ->id()])) {
    $this->ancestors[$term
      ->id()] = [
      $term
        ->id() => $term,
    ];
    $search[] = $term
      ->id();
    while ($tid = array_shift($search)) {
      foreach ($this
        ->getParents(static::load($tid)) as $id => $parent) {
        if ($parent && !isset($this->ancestors[$term
          ->id()][$id])) {
          $this->ancestors[$term
            ->id()][$id] = $parent;
          $search[] = $id;
        }
      }
    }
  }
  return $this->ancestors[$term
    ->id()];
}