5555use OCP \IURLGenerator ;
5656use OCP \IUserManager ;
5757use OCP \Notification \IManager as INotificationManager ;
58+ use OCP \Server ;
5859use OCP \Share \Exceptions \ShareNotFound ;
5960use OCP \Share \IManager ;
6061use OCP \Share \IShare ;
6162use OCP \Util ;
63+ use Psr \Container \ContainerExceptionInterface ;
6264
6365class CloudFederationProviderFiles implements ICloudFederationProvider {
6466
@@ -250,26 +252,29 @@ public function shareReceived(ICloudFederationShare $share) {
250252 $ this ->externalShareManager ->addShare ($ remote , $ token , '' , $ name , $ owner , $ shareType ,false , $ shareWith , $ remoteId );
251253 $ shareId = \OC ::$ server ->getDatabaseConnection ()->lastInsertId ('*PREFIX*share_external ' );
252254
255+ // get DisplayName about the owner of the share
256+ $ ownerDisplayName = $ this ->getUserDisplayName ($ ownerFederatedId );
257+
253258 if ($ shareType === IShare::TYPE_USER ) {
254259 $ event = $ this ->activityManager ->generateEvent ();
255260 $ event ->setApp ('files_sharing ' )
256261 ->setType ('remote_share ' )
257- ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED , [$ ownerFederatedId , trim ($ name , '/ ' )])
262+ ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED , [$ ownerFederatedId , trim ($ name , '/ ' ), $ ownerDisplayName ])
258263 ->setAffectedUser ($ shareWith )
259264 ->setObject ('remote_share ' , $ shareId , $ name );
260265 \OC ::$ server ->getActivityManager ()->publish ($ event );
261- $ this ->notifyAboutNewShare ($ shareWith , $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name );
266+ $ this ->notifyAboutNewShare ($ shareWith , $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name, $ ownerDisplayName );
262267 } else {
263268 $ groupMembers = $ this ->groupManager ->get ($ shareWith )->getUsers ();
264269 foreach ($ groupMembers as $ user ) {
265270 $ event = $ this ->activityManager ->generateEvent ();
266271 $ event ->setApp ('files_sharing ' )
267272 ->setType ('remote_share ' )
268- ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED , [$ ownerFederatedId , trim ($ name , '/ ' )])
273+ ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED , [$ ownerFederatedId , trim ($ name , '/ ' ), $ ownerDisplayName ])
269274 ->setAffectedUser ($ user ->getUID ())
270275 ->setObject ('remote_share ' , $ shareId , $ name );
271276 \OC ::$ server ->getActivityManager ()->publish ($ event );
272- $ this ->notifyAboutNewShare ($ user ->getUID (), $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name );
277+ $ this ->notifyAboutNewShare ($ user ->getUID (), $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name, $ ownerDisplayName );
273278 }
274279 }
275280 return $ shareId ;
@@ -335,13 +340,13 @@ private function mapShareTypeToNextcloud($shareType) {
335340 return $ result ;
336341 }
337342
338- private function notifyAboutNewShare ($ shareWith , $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name ): void {
343+ private function notifyAboutNewShare ($ shareWith , $ shareId , $ ownerFederatedId , $ sharedByFederatedId , $ name, $ displayName ): void {
339344 $ notification = $ this ->notificationManager ->createNotification ();
340345 $ notification ->setApp ('files_sharing ' )
341346 ->setUser ($ shareWith )
342347 ->setDateTime (new \DateTime ())
343348 ->setObject ('remote_share ' , $ shareId )
344- ->setSubject ('remote_share ' , [$ ownerFederatedId , $ sharedByFederatedId , trim ($ name , '/ ' )]);
349+ ->setSubject ('remote_share ' , [$ ownerFederatedId , $ sharedByFederatedId , trim ($ name , '/ ' ), $ displayName ]);
345350
346351 $ declineAction = $ notification ->createAction ();
347352 $ declineAction ->setLabel ('decline ' )
@@ -579,6 +584,8 @@ private function unshare($id, array $notification) {
579584 ->where ($ qb ->expr ()->eq ('parent ' , $ qb ->createNamedParameter ((int )$ share ['id ' ])));
580585 $ qb ->execute ();
581586
587+ $ ownerDisplayName = $ this ->getUserDisplayName ($ owner ->getId ());
588+
582589 if ((int )$ share ['share_type ' ] === IShare::TYPE_USER ) {
583590 if ($ share ['accepted ' ]) {
584591 $ path = trim ($ mountpoint , '/ ' );
@@ -594,7 +601,7 @@ private function unshare($id, array $notification) {
594601 $ event = $ this ->activityManager ->generateEvent ();
595602 $ event ->setApp ('files_sharing ' )
596603 ->setType ('remote_share ' )
597- ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_UNSHARED , [$ owner ->getId (), $ path ])
604+ ->setSubject (RemoteShares::SUBJECT_REMOTE_SHARE_UNSHARED , [$ owner ->getId (), $ path, $ ownerDisplayName ])
598605 ->setAffectedUser ($ user )
599606 ->setObject ('remote_share ' , (int )$ share ['id ' ], $ path );
600607 \OC ::$ server ->getActivityManager ()->publish ($ event );
@@ -824,4 +831,22 @@ private function isS2SEnabled($incoming = false) {
824831 public function getSupportedShareTypes () {
825832 return ['user ' , 'group ' ];
826833 }
834+
835+
836+ private function getUserDisplayName (string $ userId ): string {
837+ // check if gss is enabled and available
838+ if (!$ this ->appManager ->isInstalled ('globalsiteselector ' )
839+ || !class_exists ('\OCA\GlobalSiteSelector\Service\SlaveService ' )) {
840+ return '' ;
841+ }
842+
843+ try {
844+ $ slaveService = Server::get (\OCA \GlobalSiteSelector \Service \SlaveService::class);
845+ } catch (ContainerExceptionInterface $ e ) {
846+ \OC ::$ server ->getLogger ()->logException ($ e );
847+ return '' ;
848+ }
849+
850+ return $ slaveService ->getUserDisplayName ($ userId , false );
851+ }
827852}
0 commit comments