aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2025-04-04 04:24:05 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2025-04-04 04:33:36 +0200
commit8e81c1772b7e6de4e71da4358aad88a14b4ad797 (patch)
tree51007c5d6223b7ac30cbe267e80dc79d697dc3ee /lib
parenta35f4b16ac42ed73d7b540e40b72aaa160051f0f (diff)
downloadnextcloud-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.php13
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]
+ ));
+ }
}
/**