|
|
|
@ -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] |
|
|
|
|
)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|