Fix duplicate tags creation when assigning search results to tag

Fixes #6330
This commit is contained in:
Nicolas Lœuillet 2023-06-17 15:19:59 +02:00
parent bfbcee1df5
commit 28db6c22eb
No known key found for this signature in database
GPG key ID: FA576177B1EBB573
2 changed files with 15 additions and 3 deletions

View file

@ -247,11 +247,16 @@ class TagController extends AbstractController
$filter
);
$this->entityManager->persist($entry);
// check to avoid duplicate tags creation
foreach ($this->entityManager->getUnitOfWork()->getScheduledEntityInsertions() as $entity) {
if ($entity instanceof Tag && strtolower($entity->getLabel()) === strtolower($filter)) {
continue 2;
}
$this->entityManager->persist($entry);
}
$this->entityManager->flush();
}
$this->entityManager->flush();
return $this->redirect($this->redirectHelper->to($request->headers->get('referer'), '', true));
}

View file

@ -560,5 +560,12 @@ class TagControllerTest extends WallabagCoreTestCase
$this->assertContains('title', $tags);
}
$tag = $client->getContainer()
->get(EntityManagerInterface::class)
->getRepository(Tag::class)
->findByLabelsAndUser(['title'], $this->getLoggedInUserId());
$this->assertCount(1, $tag);
}
}