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