private function prepareDataForAddLink(BaseObject $object, array $data, $generateUniqueName = false) { if (empty($data['NAME'])) { $data['NAME'] = $object->getName(); } $this->checkRequiredInputParams($data, array('NAME')); if ($generateUniqueName) { $data['NAME'] = $this->generateUniqueName($data['NAME'], $this->id); } if (!$this->isUniqueName($data['NAME'], $this->id)) { $this->errorCollection->add(array(new Error(Loc::getMessage('DISK_FOLDER_MODEL_ERROR_NON_UNIQUE_NAME'), self::ERROR_NON_UNIQUE_NAME))); return null; } $data['PARENT_ID'] = $this->id; $data['STORAGE_ID'] = $this->storageId; $data['REAL_OBJECT_ID'] = $object->getRealObject()->getId(); return $data; }
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]; }
/** * This is specific function for Sharing model. And you can't use this in another contexts. * @param BaseObject $object * @param $userId * @return null|string * @internal */ public function getPseudoMaxTaskByObjectForUser(BaseObject $object, $userId) { $maxTaskName = null; foreach ($this->getAllListNormalizeRightsForUserId($object->getRealObject(), $userId) as $rightOnObject) { if (empty($rightOnObject['NEGATIVE'])) { $taskName = $this->getTaskNameById($rightOnObject['TASK_ID']); if ($taskName && $this->pseudoCompareTaskName($taskName, $maxTaskName) > 0) { $maxTaskName = $taskName; } } } unset($rightOnObject); return $maxTaskName; }