@@ -269,22 +269,6 @@ private function createShareObject(array $data): IShare {
269269 return $ share ;
270270 }
271271
272- private function applyBoardPermission ($ share , $ permissions , $ userId ) {
273- try {
274- $ this ->permissionService ->checkPermission ($ this ->cardMapper , $ share ->getSharedWith (), Acl::PERMISSION_EDIT , $ userId , true );
275- } catch (NoPermissionException $ e ) {
276- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE ;
277- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE ;
278- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE ;
279- }
280-
281- try {
282- $ this ->permissionService ->checkPermission ($ this ->cardMapper , $ share ->getSharedWith (), Acl::PERMISSION_SHARE , $ userId , true );
283- } catch (NoPermissionException $ e ) {
284- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE ;
285- }
286- $ share ->setPermissions ($ permissions );
287- }
288272 /**
289273 * @inheritDoc
290274 */
@@ -652,11 +636,13 @@ private function resolveSharesForRecipient(array $shares, string $userId): array
652636
653637 /** @var int[] $ids */
654638 $ ids = [];
639+ $ cardIds = [];
655640 /** @var IShare[] $shareMap */
656641 $ shareMap = [];
657642
658643 foreach ($ shareSlice as $ share ) {
659644 $ ids [] = (int )$ share ->getId ();
645+ $ cardIds [] = (int )$ share ->getSharedWith ();
660646 $ shareMap [$ share ->getId ()] = $ share ;
661647 }
662648
@@ -673,8 +659,22 @@ private function resolveSharesForRecipient(array $shares, string $userId): array
673659
674660 $ stmt = $ query ->executeQuery ();
675661
662+ $ permissions = $ this ->permissionService ->getPermissionsForCards ($ cardIds , $ userId );
663+
676664 while ($ data = $ stmt ->fetch ()) {
677- $ this ->applyBoardPermission ($ shareMap [$ data ['parent ' ]], (int )$ data ['permissions ' ], $ userId );
665+ $ parent = $ shareMap [$ data ['parent ' ]];
666+ $ sharePermissions = (int )$ data ['permissions ' ];
667+ if (isset ($ permissions [(int )$ parent ->getSharedWith ()])) {
668+ if ($ permissions [(int )$ parent ->getSharedWith ()][Acl::PERMISSION_EDIT ] === false ) {
669+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE ;
670+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE ;
671+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE ;
672+ }
673+ if ($ permissions [(int )$ parent ->getSharedWith ()][Acl::PERMISSION_SHARE ] === false ) {
674+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE ;
675+ }
676+ }
677+ $ shareMap [$ data ['parent ' ]]->setPermissions ($ sharePermissions );
678678 $ shareMap [$ data ['parent ' ]]->setTarget ($ data ['file_target ' ]);
679679 }
680680
0 commit comments