예제 #1
0
 /**
  * Adds permissions to the given $privilege.
  *
  * @param SID $sid
  * @param AclPrivilege $privilege
  * @param OID $oid
  * @param \SplObjectStorage $acls
  * @param AclExtensionInterface $extension
  * @param AclInterface $rootAcl
  */
 protected function addPermissions(SID $sid, AclPrivilege $privilege, OID $oid, \SplObjectStorage $acls, AclExtensionInterface $extension, AclInterface $rootAcl = null)
 {
     $allowedPermissions = $extension->getAllowedPermissions($oid);
     $acl = $this->findAclByOid($acls, $oid);
     if ($rootAcl !== null) {
         $this->addAclPermissions($sid, null, $privilege, $allowedPermissions, $extension, $rootAcl, $acl);
     }
     foreach ($allowedPermissions as $permission) {
         if (!$privilege->hasPermission($permission)) {
             $privilege->addPermission(new AclPermission($permission, AccessLevel::NONE_LEVEL));
         }
     }
 }