@@ -47,7 +47,7 @@ public function updateForUser(IUser $user): void {
4747 $ mountsChanged = count ($ shares ) !== count ($ shareMounts );
4848 foreach ($ shares as $ share ) {
4949 [$ parentShare , $ groupedShares ] = $ share ;
50- $ mountPoint = ' / ' . $ user -> getUID () . ' /files/ ' . trim ( $ parentShare ->getTarget (), ' / ' ) . ' / ' ;
50+ $ mountPoint = $ this -> getMountPointFromTarget ( $ user , $ parentShare ->getTarget ()) ;
5151 $ mountKey = $ parentShare ->getNodeId () . ':: ' . $ mountPoint ;
5252 if (!isset ($ cachedMounts [$ mountKey ])) {
5353 $ mountsChanged = true ;
@@ -72,17 +72,34 @@ public function updateForAddedShare(IUser $user, IShare $share): void {
7272 $ mountsByPath = array_combine ($ mountPoints , $ cachedMounts );
7373
7474 $ target = $ this ->shareTargetValidator ->verifyMountPoint ($ user , $ share , $ mountsByPath , [$ share ]);
75- $ mountPoint = ' / ' . $ user -> getUID () . ' /files/ ' . trim ( $ target , ' / ' ) . ' / ' ;
75+ $ mountPoint = $ this -> getMountPointFromTarget ( $ user , $ target ) ;
7676
7777 $ this ->userMountCache ->addMount ($ user , $ mountPoint , $ share ->getNode ()->getData (), MountProvider::class);
7878 }
7979
80+ private function getMountPointFromTarget (IUser $ user , string $ target ): string {
81+ return '/ ' . $ user ->getUID () . '/files/ ' . trim ($ target , '/ ' ) . '/ ' ;
82+ }
83+
8084 /**
8185 * Process a single deleted share for a user
8286 */
8387 public function updateForDeletedShare (IUser $ user , IShare $ share ): void {
84- $ mountPoint = '/ ' . $ user ->getUID () . '/files/ ' . trim ($ share ->getTarget (), '/ ' ) . '/ ' ;
88+ $ this ->userMountCache ->removeMount ($ this ->getMountPointFromTarget ($ user , $ share ->getTarget ()));
89+ }
8590
86- $ this ->userMountCache ->removeMount ($ mountPoint );
91+ /**
92+ * Process a single moved share for a user
93+ */
94+ public function updateForMovedShare (IUser $ user , IShare $ share ): void {
95+ $ originalTarget = $ share ->getOriginalTarget ();
96+ if ($ originalTarget != null ) {
97+ $ newMountPoint = $ this ->getMountPointFromTarget ($ user , $ share ->getTarget ());
98+ $ oldMountPoint = $ this ->getMountPointFromTarget ($ user , $ originalTarget );
99+ $ this ->userMountCache ->removeMount ($ oldMountPoint );
100+ $ this ->userMountCache ->addMount ($ user , $ newMountPoint , $ share ->getNode ()->getData (), MountProvider::class);
101+ } else {
102+ $ this ->updateForUser ($ user );
103+ }
87104 }
88105}
0 commit comments