Skip to content
Snippets Groups Projects
Commit 3273ca09 authored by Pierre Fleutot's avatar Pierre Fleutot
Browse files

API : fix création entrée en mode "force", on crée dans l'agora et pas dans les lexiques spécifiés

parent e9bf5547
No related branches found
No related tags found
No related merge requests found
......@@ -110,7 +110,7 @@ class ApiEntryController extends AppBaseController
}
/**
* Crée une entrée dans les lexiques spécifiés à partir d'un mot. Si force=true, on crée l'entrée même si le mot n'est pas trouvé dans le wiktionnaire
* Crée une entrée dans les lexiques spécifiés à partir d'un mot. Si force=true, on crée l'entrée même si le mot n'est pas trouvé dans le wiktionnaire, mais on la crée uniquement dans le lexique des nouveaux mots (Agora)
*
* @Route("/create", name="api_create_entry", methods={"POST"})
*
......@@ -159,20 +159,27 @@ class ApiEntryController extends AppBaseController
// On récupère ou on crée le mot-vedette
if (!$headword) {
if ($forceCreation || $wiktionaryManager->search($data['graphy'], $language)) {
$wiktionaryData = $wiktionaryManager->search($data['graphy'], $language);
if ($forceCreation || $wiktionaryData) {
$headword = $this->newHeadword($data['graphy'], $language);
} else {
return $this->createJsonResponse(401, ['warning' => sprintf("Le mot «%s» n'existe ni dans Balex ni dans le wiktionnaire.", $data['graphy'])]);
}
}
// On crée l'entrée dans chaque lexique si elle n'y existe pas (et dans le lexique Zéro si possible)
foreach ($lexicons as $lexicon) {
if (!$this->doctrine->getRepository(Entry::class)->findBy(['lexicon' => $lexicon, 'headword' => $headword])) {
$entry = $this->getOrCreateEntryInLexicon($headword, $lexicon);
$this->success[] = sprintf("Entrée créée dans le lexique : %s.", $lexicon);
} else {
$this->warning[] = sprintf("Cette entrée est déjà présente dans le lexique %s.", $lexicon);
// Si le mot n'existe pas dans le wiktionnaire, on le crée uniquement dans le lexique des nouveaux mots
if (!$wiktionaryData) {
$this->createEntryInNewWordsLexicon($headword);
$this->success[] = sprintf("Entrée créée dans le lexique des nouveaux mots.");
} else {
// Sinon on crée l'entrée dans chaque lexique si elle n'y existe pas (et dans le lexique Zéro si possible)
foreach ($lexicons as $lexicon) {
if (!$this->doctrine->getRepository(Entry::class)->findBy(['lexicon' => $lexicon, 'headword' => $headword])) {
$entry = $this->getOrCreateEntryInLexicon($headword, $lexicon);
$this->success[] = sprintf("Entrée créée dans le lexique : %s.", $lexicon);
} else {
$this->warning[] = sprintf("Cette entrée est déjà présente dans le lexique %s.", $lexicon);
}
}
}
$this->doctrine->getManager()->flush();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment