/** * 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)); } } }