Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2022-09-14 09:40:32 +0300
committerJoas Schilling <coding@schilljs.com>2022-09-14 10:02:12 +0300
commitcf58a31c928174166aab6bfdf81c9a99e6308b39 (patch)
treec138745e8ef73884d6332a6b9eb7624b6dcb441c /lib
parent17db5d12d9aceab08d3efa3b4155bf81d1d91e6b (diff)
Reset the poll and vote author information to be GDPR compliant
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Listener/UserDeletedListener.php8
-rw-r--r--lib/Service/PollService.php20
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/Listener/UserDeletedListener.php b/lib/Listener/UserDeletedListener.php
index 17a589f4c..229616ecb 100644
--- a/lib/Listener/UserDeletedListener.php
+++ b/lib/Listener/UserDeletedListener.php
@@ -24,15 +24,19 @@ declare(strict_types=1);
namespace OCA\Talk\Listener;
use OCA\Talk\Manager;
+use OCA\Talk\Model\Attendee;
+use OCA\Talk\Service\PollService;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\User\Events\UserDeletedEvent;
class UserDeletedListener implements IEventListener {
private Manager $manager;
+ private PollService $pollService;
- public function __construct(Manager $manager) {
+ public function __construct(Manager $manager, PollService $pollService) {
$this->manager = $manager;
+ $this->pollService = $pollService;
}
public function handle(Event $event): void {
@@ -43,5 +47,7 @@ class UserDeletedListener implements IEventListener {
$user = $event->getUser();
$this->manager->removeUserFromAllRooms($user);
+
+ $this->pollService->neutralizeDeletedUser(Attendee::ACTOR_USERS, $user->getUID());
}
}
diff --git a/lib/Service/PollService.php b/lib/Service/PollService.php
index 78cdb87fc..10f6cdda1 100644
--- a/lib/Service/PollService.php
+++ b/lib/Service/PollService.php
@@ -333,4 +333,24 @@ class PollService {
->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
$update->executeStatement();
}
+
+ public function neutralizeDeletedUser(string $actorType, string $actorId): void {
+ $update = $this->connection->getQueryBuilder();
+ $update->update('talk_polls')
+ ->set('display_name', $update->createNamedParameter(''))
+ ->set('actor_type', $update->createNamedParameter('deleted_users'))
+ ->set('actor_id', $update->createNamedParameter('deleted_users'))
+ ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType)))
+ ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
+ $update->executeStatement();
+
+ $update = $this->connection->getQueryBuilder();
+ $update->update('talk_poll_votes')
+ ->set('display_name', $update->createNamedParameter(''))
+ ->set('actor_type', $update->createNamedParameter('deleted_users'))
+ ->set('actor_id', $update->createNamedParameter('deleted_users'))
+ ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType)))
+ ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId)));
+ $update->executeStatement();
+ }
}