コード例 #1
0
ファイル: AclResourceBuilder.php プロジェクト: reliv/rcm-user
 /**
  * buildParent
  *
  * @param AclResource $resource
  *
  * @return AclResource
  * @throws RcmUserException
  */
 public function buildParent(AclResource $resource)
 {
     $parentResourceId = $resource->getParentResourceId();
     // root parent must be null
     if ($resource->getResourceId() == $this->rootResource->getResourceId()) {
         $resource->setParentResourceId(null);
         return $resource;
     }
     if (empty($parentResourceId)) {
         $resource->setParentResourceId($this->rootResource->getResourceId());
     }
     return $resource;
 }
コード例 #2
0
 /**
  * getResourceStack
  *
  * @param AclResource $resource
  * @param array       $resources
  * @param int         $nestLevel
  *
  * @return array
  * @throws RcmUserException
  */
 public function getResourceStack(AclResource $resource, $resources = [], $nestLevel = 0)
 {
     if ($nestLevel > $this->maxResourceNesting) {
         throw new RcmUserException('Max resource nesting exceeded, max nesting level is ' . $this->maxResourceNesting);
     }
     $tempResource = [$resource->getResourceId() => $resource];
     $resources = $tempResource + $resources;
     $parentResourceId = $resource->getParentResourceId();
     $hasParent = $parentResourceId !== null;
     if ($hasParent) {
         $parentResource = $this->resourceProvider->getResource($parentResourceId);
         $nestLevel++;
         return $this->getResourceStack($parentResource, $resources, $nestLevel);
     }
     return $resources;
 }
コード例 #3
0
 /**
  * createNamespaceId
  *
  * @param AclResource $aclResource
  * @param             $aclResources
  * @param null        $namespaceSeparator
  *
  * @return string
  */
 public function createNamespaceId(AclResource $aclResource, $aclResources, $namespaceSeparator = null)
 {
     $parentId = $aclResource->getParentResourceId();
     $namespace = $aclResource->getResourceId();
     if (!empty($parentId) && isset($aclResources[$parentId])) {
         $parent = $aclResources[$parentId];
         $newNamespace = $this->createNamespaceId($parent, $aclResources, $namespaceSeparator);
         $namespace = $newNamespace . $this->getNamespaceSeparator($namespaceSeparator) . $namespace;
     }
     return $namespace;
 }