Skip to content

Commit 8cef987

Browse files
fix(settings): Delete settings when a user is deleted
Signed-off-by: Joas Schilling <[email protected]>
1 parent 420dd89 commit 8cef987

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

lib/Listener/UserDeletedListener.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/**
66
* @copyright Copyright (c) 2020, Daniel Kesselberg <[email protected]>
77
*
8+
* @author Joas Schilling <[email protected]>
89
* @author Daniel Kesselberg <[email protected]>
910
*
1011
* @license AGPL-3.0-or-later
@@ -27,6 +28,7 @@
2728
namespace OCA\Notifications\Listener;
2829

2930
use OCA\Notifications\Handler;
31+
use OCA\Notifications\Model\SettingsMapper;
3032
use OCP\EventDispatcher\Event;
3133
use OCP\EventDispatcher\IEventListener;
3234
use OCP\User\Events\UserDeletedEvent;
@@ -36,9 +38,14 @@
3638
*/
3739
class UserDeletedListener implements IEventListener {
3840
private Handler $handler;
41+
private SettingsMapper $settingsMapper;
3942

40-
public function __construct(Handler $handler) {
43+
public function __construct(
44+
Handler $handler,
45+
SettingsMapper $settingsMapper,
46+
) {
4147
$this->handler = $handler;
48+
$this->settingsMapper = $settingsMapper;
4249
}
4350

4451
public function handle(Event $event): void {
@@ -49,5 +56,6 @@ public function handle(Event $event): void {
4956

5057
$user = $event->getUser();
5158
$this->handler->deleteByUser($user->getUID());
59+
$this->settingsMapper->deleteSettingsByUser($user->getUID());
5260
}
5361
}

lib/Model/SettingsMapper.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,19 @@ public function getSettingsByUser(string $userId): Settings {
6161
return $this->findEntity($query);
6262
}
6363

64+
/**
65+
* @param string $userId
66+
* @throws DBException
67+
*/
68+
public function deleteSettingsByUser(string $userId): void {
69+
$query = $this->db->getQueryBuilder();
70+
71+
$query->delete($this->getTableName())
72+
->where($query->expr()->eq('user_id', $query->createNamedParameter($userId)));
73+
74+
$query->executeStatement();
75+
}
76+
6477
public function setBatchSettingForUser(string $userId, int $batchSetting): void {
6578
try {
6679
$settings = $this->getSettingsByUser($userId);

0 commit comments

Comments
 (0)