@@ -270,22 +270,6 @@ private function createShareObject(array $data): IShare {
270270 return $ share ;
271271 }
272272
273- private function applyBoardPermission ($ share , $ permissions , $ userId ) {
274- try {
275- $ this ->permissionService ->checkPermission ($ this ->cardMapper , $ share ->getSharedWith (), Acl::PERMISSION_EDIT , $ userId , true );
276- } catch (NoPermissionException $ e ) {
277- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE ;
278- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE ;
279- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE ;
280- }
281-
282- try {
283- $ this ->permissionService ->checkPermission ($ this ->cardMapper , $ share ->getSharedWith (), Acl::PERMISSION_SHARE , $ userId , true );
284- } catch (NoPermissionException $ e ) {
285- $ permissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE ;
286- }
287- $ share ->setPermissions ($ permissions );
288- }
289273 /**
290274 * @inheritDoc
291275 */
@@ -653,11 +637,13 @@ private function resolveSharesForRecipient(array $shares, string $userId): array
653637
654638 /** @var int[] $ids */
655639 $ ids = [];
640+ $ cardIds = [];
656641 /** @var IShare[] $shareMap */
657642 $ shareMap = [];
658643
659644 foreach ($ shareSlice as $ share ) {
660645 $ ids [] = (int )$ share ->getId ();
646+ $ cardIds [] = (int )$ share ->getSharedWith ();
661647 $ shareMap [$ share ->getId ()] = $ share ;
662648 }
663649
@@ -674,8 +660,22 @@ private function resolveSharesForRecipient(array $shares, string $userId): array
674660
675661 $ stmt = $ query ->executeQuery ();
676662
663+ $ permissions = $ this ->permissionService ->getPermissionsForCards ($ cardIds , $ userId );
664+
677665 while ($ data = $ stmt ->fetch ()) {
678- $ this ->applyBoardPermission ($ shareMap [$ data ['parent ' ]], (int )$ data ['permissions ' ], $ userId );
666+ $ parent = $ shareMap [$ data ['parent ' ]];
667+ $ sharePermissions = (int )$ data ['permissions ' ];
668+ if (isset ($ permissions [(int )$ parent ->getSharedWith ()])) {
669+ if ($ permissions [(int )$ parent ->getSharedWith ()][Acl::PERMISSION_EDIT ] === false ) {
670+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_UPDATE ;
671+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE ;
672+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_DELETE ;
673+ }
674+ if ($ permissions [(int )$ parent ->getSharedWith ()][Acl::PERMISSION_SHARE ] === false ) {
675+ $ sharePermissions &= Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE ;
676+ }
677+ }
678+ $ shareMap [$ data ['parent ' ]]->setPermissions ($ sharePermissions );
679679 $ shareMap [$ data ['parent ' ]]->setTarget ($ data ['file_target ' ]);
680680 }
681681
0 commit comments