diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2025-04-04 04:24:05 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2025-04-04 04:33:36 +0200 |
commit | 8e81c1772b7e6de4e71da4358aad88a14b4ad797 (patch) | |
tree | 51007c5d6223b7ac30cbe267e80dc79d697dc3ee /lib | |
parent | a35f4b16ac42ed73d7b540e40b72aaa160051f0f (diff) | |
download | nextcloud-server-fix/tags-events.tar.gz nextcloud-server-fix/tags-events.zip |
fix(systemtags): emit assign and unassign bulk tagging eventsfix/tags-events
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/SystemTag/SystemTagObjectMapper.php | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php index 3881336bf37..1fa5975dafb 100644 --- a/lib/private/SystemTag/SystemTagObjectMapper.php +++ b/lib/private/SystemTag/SystemTagObjectMapper.php @@ -287,6 +287,7 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { $currentObjectIds = $this->getObjectIdsForTags($tagId, $objectType); $removedObjectIds = array_diff($currentObjectIds, $objectIds); $addedObjectIds = array_diff($objectIds, $currentObjectIds); + $this->connection->beginTransaction(); $query = $this->connection->getQueryBuilder(); $query->delete(self::RELATION_TABLE) @@ -324,6 +325,8 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { $this->updateEtagForTags([$tagId]); $this->connection->commit(); + + // Dispatch assign events for new object ids foreach ($addedObjectIds as $objectId) { $this->dispatcher->dispatch(MapperEvent::EVENT_ASSIGN, new MapperEvent( MapperEvent::EVENT_ASSIGN, @@ -332,6 +335,16 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { [(int)$tagId] )); } + + // Dispatch unassign events for removed object ids + foreach ($removedObjectIds as $objectId) { + $this->dispatcher->dispatch(MapperEvent::EVENT_UNASSIGN, new MapperEvent( + MapperEvent::EVENT_UNASSIGN, + $objectType, + (string)$objectId, + [(int)$tagId] + )); + } } /** |