Exemplo n.º 1
0
 private function getBreadcrumbs(BaseObject $object)
 {
     $parentId = $object->isLink() ? $object->getParentId() : $object->getRealObject()->getParentId();
     $realId = $object->isLink() ? $object->getId() : $object->getRealObject()->getId();
     if (isset($this->cacheBreadcrumbs[$parentId])) {
         if ($object instanceof File) {
             return $this->cacheBreadcrumbs[$parentId] . '/' . $object->getName();
         }
         $this->cacheBreadcrumbs[$realId] = $this->cacheBreadcrumbs[$parentId] . '/' . $object->getName();
         if ($object->isLink()) {
             $this->cacheBreadcrumbs[$object->getRealObject()->getId()] = $this->cacheBreadcrumbs[$realId];
         }
     } else {
         if ($parentId == $this->storage->getRootObjectId()) {
             $this->cacheBreadcrumbs[$realId] = '/' . $object->getName();
             if ($object->isLink()) {
                 if (!$object->getRealObject()) {
                     return null;
                 }
                 $this->cacheBreadcrumbs[$object->getRealObject()->getId()] = $this->cacheBreadcrumbs[$realId];
             }
             return $this->cacheBreadcrumbs[$realId];
         }
         $path = '';
         $parents = ObjectTable::getAncestors($realId, array('select' => array('ID', 'NAME', 'TYPE', 'CODE')));
         while ($parent = $parents->fetch()) {
             if ($parent['CODE'] == Folder::CODE_FOR_UPLOADED_FILES) {
                 //todo hack. CODE_FOR_UPLOADED_FILES
                 return null;
             }
             if ($this->storage->getRootObjectId() == $parent['ID']) {
                 continue;
             }
             $path .= '/' . $parent['NAME'];
             if (!isset($this->cacheBreadcrumbs[$parent['ID']])) {
                 $this->cacheBreadcrumbs[$parent['ID']] = $path;
             }
         }
         if (isset($this->cacheBreadcrumbs[$parentId])) {
             $this->cacheBreadcrumbs[$realId] = $this->cacheBreadcrumbs[$parentId];
             if ($object->isLink()) {
                 $this->cacheBreadcrumbs[$object->getRealObject()->getId()] = $this->cacheBreadcrumbs[$realId];
             }
         } else {
             $this->cacheBreadcrumbs[$realId] = null;
         }
     }
     return $this->cacheBreadcrumbs[$realId];
 }