• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/crumbstorage.php
  • Класс: BitrixDiskCrumbStorage
  • Вызов: CrumbStorage::calculateCrumb
protected function calculateCrumb(BaseObject $object)
{
	$parentId = $object->getParentId();
	if(!$parentId)
	{
		$this->crumbsByObjectId[$object->getId()] = array($this->fetchNameByObject($object));
		return $this->crumbsByObjectId[$object->getId()];
	}

	if(isset($this->crumbsByObjectId[$parentId]))
	{
		$this->crumbsByObjectId[$object->getId()] = $this->crumbsByObjectId[$parentId];
		$this->crumbsByObjectId[$object->getId()][$object->getId()] = $this->fetchNameByObject($object);

		return $this->crumbsByObjectId[$object->getId()];
	}

	$storage = $object->getStorage();
	$fake = Driver::getInstance()->getFakeSecurityContext();

	$this->crumbsByObjectId[$object->getId()] = array();
	foreach($object->getParents($fake, array('select' => array('ID', 'NAME', 'TYPE')), SORT_DESC) as $parent)
	{
		if($parent->getId() == $storage->getRootObjectId())
		{
			continue;
		}
		$this->crumbsByObjectId[$object->getId()][$parent->getId()] = $parent->getName();
	}
	unset($parent);

	$this->crumbsByObjectId[$parentId] = $this->crumbsByObjectId[$object->getId()];
	$this->crumbsByObjectId[$object->getId()][$object->getId()] = $this->fetchNameByObject($object);

	return $this->crumbsByObjectId[$object->getId()];
}