• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/index/pathindexcollection.php
  • Класс: BitrixTranslateIndexPathIndexCollection
  • Вызов: PathIndexCollection::getAncestors
private function getAncestors($nodeId, $topNodeId = -1): array
{
	$nodeRes = IndexInternalsPathIndexTable::getList([
		'filter' => ['=ID' => (int)$nodeId],
	]);

	$result = [];
	if ($nodeInx = $nodeRes->fetchObject())
	{
		$result[$nodeInx->getId()] = $nodeInx;

		if ((int)$nodeInx->getParentId() > 0)
		{
			$nodeRes = IndexInternalsPathIndexTable::getList([
				'filter' => [
					'=DESCENDANTS.PARENT_ID' => $nodeInx->getId(),//ancestor
				],
				'order' => ['DESCENDANTS.DEPTH_LEVEL' => 'DESC'],
			]);
			while ($nodeInx = $nodeRes->fetchObject())
			{
				$result[$nodeInx->getId()] = $nodeInx;

				if ((int)$nodeInx->getParentId() == 0)
				{
					break;
				}
				if ($topNodeId > 0 && (int)$nodeInx->getId() == $topNodeId)
				{
					break;
				}
			}
		}
	}

	return array_reverse($result, true);
}