Skip to content

Commit 5388695

Browse files
committed
feat(ShareByCircleProvider): Implement IShareProviderGetUsers
Signed-off-by: provokateurin <kate@provokateurin.de>
1 parent 9acbdc3 commit 5388695

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

lib/ShareByCircleProvider.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,27 @@
5050
use OCP\Files\IRootFolder;
5151
use OCP\Files\Node;
5252
use OCP\Files\NotFoundException;
53+
use OCP\IGroup;
54+
use OCP\IGroupManager;
5355
use OCP\IL10N;
5456
use OCP\IURLGenerator;
57+
use OCP\IUser;
5558
use OCP\IUserManager;
5659
use OCP\Share\Exceptions\AlreadySharedException;
5760
use OCP\Share\Exceptions\IllegalIDChangeException;
5861
use OCP\Share\Exceptions\ShareNotFound;
5962
use OCP\Share\IPartialShareProvider;
6063
use OCP\Share\IShare;
6164
use OCP\Share\IShareProvider;
65+
use OCP\Share\IShareProviderGetUsers;
6266
use Psr\Log\LoggerInterface;
6367

6468
/**
6569
* Class ShareByCircleProvider
6670
*
6771
* @package OCA\Circles
6872
*/
69-
class ShareByCircleProvider implements IShareProvider, IPartialShareProvider {
73+
class ShareByCircleProvider implements IShareProvider, IPartialShareProvider, IShareProviderGetUsers {
7074
use TArrayTools;
7175
use TStringTools;
7276
use TNCLogger;
@@ -85,6 +89,7 @@ public function __construct(
8589
private FederatedEventService $federatedEventService,
8690
private CircleService $circleService,
8791
private EventService $eventService,
92+
private readonly IGroupManager $groupManager,
8893
) {
8994
}
9095

@@ -845,4 +850,19 @@ public function getAllShares(): iterable {
845850
// $cursor->closeCursor();
846851
return [];
847852
}
853+
854+
public function getUsersForShare(IShare $share): iterable {
855+
$members = $this->shareWrapperService->getShareById((int)$share->getId())->getCircle()->getInheritedMembers();
856+
foreach ($members as $member) {
857+
if ($member->getUserType() === Member::TYPE_USER) {
858+
/** @var IUser $user */
859+
$user = $this->userManager->get($member->getUserId());
860+
yield $user;
861+
} elseif ($member->getUserType() === Member::TYPE_GROUP) {
862+
/** @var IGroup $group */
863+
$group = $this->groupManager->get($member->getUserId());
864+
yield from $group->getUsers();
865+
}
866+
}
867+
}
848868
}

0 commit comments

Comments
 (0)