3535use OC \Cache \CappedMemoryCache ;
3636use OC \Files \Mount \Manager ;
3737use OC \Files \Mount \MountPoint ;
38+ use OC \Files \View ;
3839use OC \Hooks \PublicEmitter ;
3940use OC \User \NoUserException ;
41+ use OCP \EventDispatcher \IEventDispatcher ;
4042use OCP \Files \Config \IUserMountCache ;
43+ use OCP \Files \Events \Node \FilesystemTearedDownEvent ;
4144use OCP \Files \IRootFolder ;
4245use OCP \Files \NotFoundException ;
4346use OCP \Files \NotPermittedException ;
4447use OCP \ILogger ;
48+ use OCP \IUser ;
4549use OCP \IUserManager ;
4650
4751/**
6468 * @package OC\Files\Node
6569 */
6670class Root extends Folder implements IRootFolder {
67- /** @var Manager */
68- private $ mountManager ;
69- /** @var PublicEmitter */
70- private $ emitter ;
71- /** @var null|\OC\User\User */
72- private $ user ;
73- /** @var CappedMemoryCache */
74- private $ userFolderCache ;
75- /** @var IUserMountCache */
76- private $ userMountCache ;
77- /** @var ILogger */
78- private $ logger ;
79- /** @var IUserManager */
80- private $ userManager ;
71+ private Manager $ mountManager ;
72+ private PublicEmitter $ emitter ;
73+ private ?IUser $ user ;
74+ private CappedMemoryCache $ userFolderCache ;
75+ private IUserMountCache $ userMountCache ;
76+ private ILogger $ logger ;
77+ private IUserManager $ userManager ;
78+ private IEventDispatcher $ eventDispatcher ;
8179
8280 /**
83- * @param \OC\Files\Mount\ Manager $manager
84- * @param \OC\Files\ View $view
85- * @param \OC\User\User |null $user
81+ * @param Manager $manager
82+ * @param View $view
83+ * @param IUser |null $user
8684 * @param IUserMountCache $userMountCache
8785 * @param ILogger $logger
8886 * @param IUserManager $userManager
8987 */
90- public function __construct ($ manager ,
88+ public function __construct (
89+ $ manager ,
9190 $ view ,
9291 $ user ,
93- IUserMountCache $ userMountCache ,
94- ILogger $ logger ,
95- IUserManager $ userManager ) {
92+ IUserMountCache $ userMountCache ,
93+ ILogger $ logger ,
94+ IUserManager $ userManager ,
95+ IEventDispatcher $ eventDispatcher
96+ ) {
9697 parent ::__construct ($ this , $ view , '' );
9798 $ this ->mountManager = $ manager ;
9899 $ this ->user = $ user ;
@@ -101,6 +102,9 @@ public function __construct($manager,
101102 $ this ->userMountCache = $ userMountCache ;
102103 $ this ->logger = $ logger ;
103104 $ this ->userManager = $ userManager ;
105+ $ eventDispatcher ->addListener (FilesystemTearedDownEvent::class, function () {
106+ $ this ->userFolderCache = new CappedMemoryCache ();
107+ });
104108 }
105109
106110 /**
@@ -393,10 +397,6 @@ public function getUserFolder($userId) {
393397 return $ this ->userFolderCache ->get ($ userId );
394398 }
395399
396- public function clearCache () {
397- $ this ->userFolderCache = new CappedMemoryCache ();
398- }
399-
400400 public function getUserMountCache () {
401401 return $ this ->userMountCache ;
402402 }
0 commit comments