/** * Collect all subscribers by object (@see Sharing) * Return associative array: storageId => userId. * * @param \Bitrix\Disk\BaseObject|BaseObject $object Target object. * @return array */ public function collectSubscribers(BaseObject $object) { $subscribers = array(); foreach ($object->getParents($this->getFakeSecurityContext()) as $parent) { if (!$parent instanceof Folder) { continue; } $subscribers = $this->appendSubscribersBySharings($parent, $subscribers); } unset($parent); $subscribers = $this->appendSubscribersBySharings($object, $subscribers); $storage = Storage::loadById($object->getStorageId()); if ($storage && $storage->getProxyType() instanceof ProxyType\User) { $subscribers[$storage->getId()] = $storage->getEntityId(); } return $subscribers; }
protected function calculateCrumb(BaseObject $object) { $parentId = $object->getParentId(); if (!$parentId) { $this->crumbsByObjectId[$object->getId()] = array($object->getName()); return $this->crumbsByObjectId[$object->getId()]; } if (isset($this->crumbsByObjectId[$parentId])) { $this->crumbsByObjectId[$object->getId()] = $this->crumbsByObjectId[$parentId]; $this->crumbsByObjectId[$object->getId()][] = $object->getName(); 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->getName(); } unset($parent); $this->crumbsByObjectId[$parentId] = $this->crumbsByObjectId[$object->getId()]; $this->crumbsByObjectId[$object->getId()][] = $object->getName(); return $this->crumbsByObjectId[$object->getId()]; }