From 10aa287463b6888d2e418ad31fa3a390fbea359e Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 27 Sep 2017 13:17:34 +0200 Subject: [PATCH] Remove avatar on user deletion Signed-off-by: Roeland Jago Douma --- lib/private/Server.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/private/Server.php b/lib/private/Server.php index 0886dfd441..3f26f975f0 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -124,6 +124,7 @@ use OCP\IL10N; use OCP\IServerContainer; use OCP\ITempManager; use OCP\Contacts\ContactsMenu\IActionFactory; +use OCP\IUser; use OCP\Lock\ILockingProvider; use OCP\Remote\Api\IApiFactory; use OCP\Remote\IInstanceFactory; @@ -1126,6 +1127,8 @@ class Server extends ServerContainer implements IServerContainer { $memcacheFactory = $c->getMemCacheFactory(); return new InstanceFactory($memcacheFactory->createLocal('remoteinstance.'), $c->getHTTPClientService()); }); + + $this->connectDispatcher(); } /** @@ -1135,6 +1138,26 @@ class Server extends ServerContainer implements IServerContainer { return $this->query('CalendarManager'); } + private function connectDispatcher() { + $dispatcher = $this->getEventDispatcher(); + + // Delete avatar on user deletion + $dispatcher->addListener('OCP\IUser::preDelete', function(GenericEvent $e) { + $logger = $this->getLogger(); + $manager = $this->getAvatarManager(); + /** @var IUser $user */ + $user = $e->getSubject(); + + try { + $avatar = $manager->getAvatar($user->getUID()); + $avatar->remove(); + } catch (\Exception $e) { + // Ignore exceptions + $logger->info('Could not cleanup avatar of ' . $user->getUID()); + } + }); + } + /** * @return \OCP\Contacts\IManager */