3737use OCP \Sharing \Source \IShareSourceType ;
3838use OCP \Sharing \Source \ShareSource ;
3939use OCP \Snowflake \ISnowflakeGenerator ;
40+ use RuntimeException ;
4041
4142// TODO: Add mapping table for class names in sources, recipients, permissions and properties
4243
@@ -59,7 +60,7 @@ public function __construct(
5960 }
6061
6162 #[\Override]
62- public function createShare (IUser $ owner ): string {
63+ public function createShare (ShareUser $ owner ): string {
6364 $ id = $ this ->snowflakeGenerator ->nextId ();
6465 $ lastUpdated = $ this ->manager ->generateTimestamp ();
6566
@@ -68,7 +69,8 @@ public function createShare(IUser $owner): string {
6869 ->insert ('sharing_share ' )
6970 ->values ([
7071 'id ' => $ qb ->createNamedParameter ($ id ),
71- 'owner_user_id ' => $ qb ->createNamedParameter ($ owner ->getUID ()),
72+ 'owner_user_id ' => $ qb ->createNamedParameter ($ owner ->userId ),
73+ 'owner_instance ' => $ qb ->createNamedParameter ($ owner ->instance ),
7274 'last_updated ' => $ qb ->createNamedParameter ($ lastUpdated ),
7375 'state ' => $ qb ->createNamedParameter (ShareState::Draft->value ),
7476 ])
@@ -78,13 +80,18 @@ public function createShare(IUser $owner): string {
7880 }
7981
8082 #[\Override]
81- public function onOwnerDeleted (IUser $ owner ): void {
83+ public function onOwnerDeleted (ShareUser $ owner ): void {
8284 $ qb = $ this ->connection ->getQueryBuilder ();
8385 $ qb
8486 ->delete ('sharing_share ' )
85- ->where ($ qb ->expr ()->eq ('owner_user_id ' , $ qb ->createNamedParameter ($ owner ->getUID ())))
86- ->andWhere ($ qb ->expr ()->isNull ('owner_instance ' ))
87- ->executeStatement ();
87+ ->where ($ qb ->expr ()->eq ('owner_user_id ' , $ qb ->createNamedParameter ($ owner ->userId )));
88+ if ($ owner ->instance === null ) {
89+ $ qb ->andWhere ($ qb ->expr ()->isNull ('owner_instance ' ));
90+ } else {
91+ $ qb ->andWhere ($ qb ->expr ()->eq ('owner_instance ' , $ qb ->createNamedParameter ($ owner ->instance )));
92+ }
93+
94+ $ qb ->executeStatement ();
8895 }
8996
9097 #[\Override]
@@ -164,7 +171,11 @@ public function onSourceDeleted(ShareSource $source): array {
164171 }
165172
166173 #[\Override]
167- public function addShareRecipient (string $ id , IUser $ initiator , ShareRecipient $ recipient ): void {
174+ public function addShareRecipient (string $ id , ShareRecipient $ recipient ): void {
175+ if (!$ recipient ->initiator instanceof ShareUser) {
176+ throw new RuntimeException ('The initiator must not be null. ' );
177+ }
178+
168179 try {
169180 $ qb = $ this ->connection ->getQueryBuilder ();
170181
@@ -174,7 +185,8 @@ public function addShareRecipient(string $id, IUser $initiator, ShareRecipient $
174185 'recipient_value ' => $ qb ->createNamedParameter ($ recipient ->value ),
175186 'recipient_instance ' => $ qb ->createNamedParameter ($ recipient ->instance ),
176187 'recipient_secret ' => $ qb ->createNamedParameter ($ this ->manager ->generateSecret ()),
177- 'initiator_user_id ' => $ qb ->createNamedParameter ($ initiator ->getUID (), IQueryBuilder::PARAM_STR ),
188+ 'initiator_user_id ' => $ qb ->createNamedParameter ($ recipient ->initiator ->userId ),
189+ 'initiator_instance ' => $ qb ->createNamedParameter ($ recipient ->initiator ->instance ),
178190 ];
179191
180192 $ qb
@@ -248,14 +260,19 @@ public function onRecipientDeleted(ShareRecipient $recipient): array {
248260 }
249261
250262 #[\Override]
251- public function onInitiatorDeleted (IUser $ initiator ): array {
263+ public function onInitiatorDeleted (ShareUser $ initiator ): array {
252264 $ qb = $ this ->connection ->getQueryBuilder ();
253- $ result = $ qb
265+ $ qb
254266 ->selectDistinct ('share_id ' )
255267 ->from ('sharing_share_recipients ' )
256- ->andWhere ($ qb ->expr ()->isNull ('initiator_instance ' ))
257- ->andWhere ($ qb ->expr ()->eq ('initiator_user_id ' , $ qb ->createNamedParameter ($ initiator ->getUID ())))
258- ->executeQuery ();
268+ ->where ($ qb ->expr ()->eq ('initiator_user_id ' , $ qb ->createNamedParameter ($ initiator ->userId )));
269+ if ($ initiator ->instance === null ) {
270+ $ qb ->andWhere ($ qb ->expr ()->isNull ('initiator_instance ' ));
271+ } else {
272+ $ qb ->andWhere ($ qb ->expr ()->eq ('initiator_instance ' , $ qb ->createNamedParameter ($ initiator ->instance )));
273+ }
274+
275+ $ result = $ qb ->executeQuery ();
259276
260277 /** @var list<string|int> $ids */
261278 $ ids = $ result ->fetchFirstColumn ();
@@ -274,9 +291,14 @@ public function onInitiatorDeleted(IUser $initiator): array {
274291 ->set ('initiator_user_id ' , $ qb ->createNamedParameter ($ owner ->userId ))
275292 ->set ('initiator_instance ' , $ qb ->createNamedParameter ($ owner ->instance ))
276293 ->where ($ qb ->expr ()->eq ('share_id ' , $ qb ->createNamedParameter ($ id )))
277- ->andWhere ($ qb ->expr ()->isNull ('initiator_instance ' ))
278- ->andWhere ($ qb ->expr ()->eq ('initiator_user_id ' , $ qb ->createNamedParameter ($ initiator ->getUID ())))
279- ->executeStatement ();
294+ ->andWhere ($ qb ->expr ()->eq ('initiator_user_id ' , $ qb ->createNamedParameter ($ initiator ->userId )));
295+ if ($ initiator ->instance === null ) {
296+ $ qb ->andWhere ($ qb ->expr ()->isNull ('initiator_instance ' ));
297+ } else {
298+ $ qb ->andWhere ($ qb ->expr ()->eq ('initiator_instance ' , $ qb ->createNamedParameter ($ initiator ->instance )));
299+ }
300+
301+ $ qb ->executeStatement ();
280302 }
281303
282304 return $ ids ;
0 commit comments