diff options
author | Roland Scheidel <kontakt@scheidel.at> | 2025-03-22 19:56:09 +0100 |
---|---|---|
committer | Roland Scheidel <kontakt@scheidel.at> | 2025-03-23 22:25:32 +0100 |
commit | a842d917cf7f1264f7c38259c96da639fa7c4910 (patch) | |
tree | 8cbd965693fc2565537a2ca950f676cbf26be4ae | |
parent | dc01363bc76cf106570df6d2566ad8b70b037a2c (diff) | |
download | nextcloud-server-a842d917cf7f1264f7c38259c96da639fa7c4910.tar.gz nextcloud-server-a842d917cf7f1264f7c38259c96da639fa7c4910.zip |
fix(systemtags): Dispatch events when bulk assigning system tags
Signed-off-by: Roland Scheidel <kontakt@scheidel.at>
-rw-r--r-- | lib/private/SystemTag/SystemTagObjectMapper.php | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php index 09a7ce1a6ed..3881336bf37 100644 --- a/lib/private/SystemTag/SystemTagObjectMapper.php +++ b/lib/private/SystemTag/SystemTagObjectMapper.php @@ -284,6 +284,9 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { * {@inheritdoc} */ public function setObjectIdsForTag(string $tagId, string $objectType, array $objectIds): void { + $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) @@ -292,6 +295,15 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { ->executeStatement(); $this->connection->commit(); + foreach ($removedObjectIds as $objectId) { + $this->dispatcher->dispatch(MapperEvent::EVENT_UNASSIGN, new MapperEvent( + MapperEvent::EVENT_UNASSIGN, + $objectType, + (string)$objectId, + [(int)$tagId] + )); + } + if (empty($objectIds)) { return; } @@ -312,6 +324,14 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper { $this->updateEtagForTags([$tagId]); $this->connection->commit(); + foreach ($addedObjectIds as $objectId) { + $this->dispatcher->dispatch(MapperEvent::EVENT_ASSIGN, new MapperEvent( + MapperEvent::EVENT_ASSIGN, + $objectType, + (string)$objectId, + [(int)$tagId] + )); + } } /** |