From 0c9afc89de068026c4151821d3c5fab1449b87f2 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:48:10 +0100 Subject: [PATCH 01/10] languagecode_criterion.md: Use regular Query w/ findContent --- docs/search/criteria_reference/languagecode_criterion.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index 775502a21a..c3fce06c77 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -45,14 +45,13 @@ You can use the `LanguageCode` Criterion to search for articles that are lacking into a specific language: ``` php hl_lines="5" -$query = new LocationQuery; +$query = new Query(); $query->query = new Criterion\LogicalAnd([ new Criterion\ContentTypeIdentifier('article'), new Criterion\LogicalNot( new Criterion\LanguageCode('ger-DE', false) ) - ] -); +]); $results = $this->searchService->findContent($query); $articles = []; From b880a2388a98ec6950936c0afd25d2169f62fb5c Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:49:26 +0100 Subject: [PATCH 02/10] languagecode_criterion.md: Another use case --- .../languagecode_criterion.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index c3fce06c77..1ff3d90223 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -63,3 +63,23 @@ return $this->render('list/articles_to_translate.html.twig', [ 'articles' => $articles, ]); ``` + +You can use the `LanguageCode` Criterion to search in +several languages while ensuring result have a translation in one language: + +```php +$query = new Query(['query' => + new Criterion\LogicalAnd([ + new Criterion\FullText($text), + new Criterion\LanguageCode(['eng-GB'], false) + ]) +]); + +$results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); + +foreach ($results->searchHits as $searchHit) { + /** @var $content \Ibexa\Core\Repository\Values\Content\Content */ + $content = $searchHit->valueObject; + dump($content->getName('eng-GB')); +} +``` From 6a698b1104fc5cdbcc1a7e868e413670816f3497 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:49:22 +0100 Subject: [PATCH 03/10] languagecode_criterion.md: Move code to PHP files --- .../language/config/append_to_routes.yaml | 4 ++ .../src/Command/SearchTestCommand.php | 52 +++++++++++++++++++ .../ArticlesToTranslateController.php | 41 +++++++++++++++ .../list/articles_to_translate.html.twig | 9 ++++ .../languagecode_criterion.md | 35 ++----------- 5 files changed, 109 insertions(+), 32 deletions(-) create mode 100644 code_samples/search/language/config/append_to_routes.yaml create mode 100644 code_samples/search/language/src/Command/SearchTestCommand.php create mode 100644 code_samples/search/language/src/Controller/ArticlesToTranslateController.php create mode 100644 code_samples/search/language/templates/themes/standard/list/articles_to_translate.html.twig diff --git a/code_samples/search/language/config/append_to_routes.yaml b/code_samples/search/language/config/append_to_routes.yaml new file mode 100644 index 0000000000..a8980d0364 --- /dev/null +++ b/code_samples/search/language/config/append_to_routes.yaml @@ -0,0 +1,4 @@ +list_articles_to_translate: + path: /list/articles_to_translate/{language} + defaults: + _controller: 'App\Controller\ArticlesToTranslateController::listView' diff --git a/code_samples/search/language/src/Command/SearchTestCommand.php b/code_samples/search/language/src/Command/SearchTestCommand.php new file mode 100644 index 0000000000..c5cc96a0e0 --- /dev/null +++ b/code_samples/search/language/src/Command/SearchTestCommand.php @@ -0,0 +1,52 @@ +searchService = $searchService; + } + + protected function configure(): void + { + $this->setDescription('Search test.') + ->addArgument('text', InputArgument::REQUIRED | InputArgument::IS_ARRAY, 'Searched text.'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $text = implode(' ', $input->getArgument('text')); + + $query = new Query(['query' => + new Criterion\LogicalAnd([ + new Criterion\FullText($text), + new Criterion\LanguageCode(['eng-GB'], false) + ]) + ]); + + $results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); + foreach ($results->searchHits as $searchHit) { + /** @var $content \Ibexa\Core\Repository\Values\Content\Content */ + $content = $searchHit->valueObject; + dump($content->getName('eng-GB')); + } + + return Command::SUCCESS; + } +} diff --git a/code_samples/search/language/src/Controller/ArticlesToTranslateController.php b/code_samples/search/language/src/Controller/ArticlesToTranslateController.php new file mode 100644 index 0000000000..15200a096e --- /dev/null +++ b/code_samples/search/language/src/Controller/ArticlesToTranslateController.php @@ -0,0 +1,41 @@ +searchService = $searchService; + } + + public function listView(Request $request): Response { + $languageCode = $request->get('language'); + + $query = new Query(); + $query->query = new Criterion\LogicalAnd([ + new Criterion\ContentTypeIdentifier('article'), + new Criterion\LogicalNot( + new Criterion\LanguageCode($languageCode, false) + ) + ]); + + $results = $this->searchService->findContent($query); + $articles = []; + foreach ($results->searchHits as $searchHit) { + $articles[] = $searchHit->valueObject; + } + + return $this->render('@ibexadesign/list/articles_to_translate.html.twig', [ + 'articles' => $articles, + ]); + } +} diff --git a/code_samples/search/language/templates/themes/standard/list/articles_to_translate.html.twig b/code_samples/search/language/templates/themes/standard/list/articles_to_translate.html.twig new file mode 100644 index 0000000000..6fa995e9e6 --- /dev/null +++ b/code_samples/search/language/templates/themes/standard/list/articles_to_translate.html.twig @@ -0,0 +1,9 @@ +{% extends '@ibexadesign/pagelayout.html.twig' %} + +{% block content %} + +{% endblock %} diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index 1ff3d90223..f80e477ec0 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -45,41 +45,12 @@ You can use the `LanguageCode` Criterion to search for articles that are lacking into a specific language: ``` php hl_lines="5" -$query = new Query(); -$query->query = new Criterion\LogicalAnd([ - new Criterion\ContentTypeIdentifier('article'), - new Criterion\LogicalNot( - new Criterion\LanguageCode('ger-DE', false) - ) -]); - -$results = $this->searchService->findContent($query); -$articles = []; -foreach ($results->searchHits as $searchHit) { - $articles[] = $searchHit; -} - -return $this->render('list/articles_to_translate.html.twig', [ - 'articles' => $articles, -]); +[[= include_file('code_samples/search/language/src/Controller/ArticlesToTranslateController.php', 22, 39) =]] ``` You can use the `LanguageCode` Criterion to search in several languages while ensuring result have a translation in one language: -```php -$query = new Query(['query' => - new Criterion\LogicalAnd([ - new Criterion\FullText($text), - new Criterion\LanguageCode(['eng-GB'], false) - ]) -]); - -$results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); - -foreach ($results->searchHits as $searchHit) { - /** @var $content \Ibexa\Core\Repository\Values\Content\Content */ - $content = $searchHit->valueObject; - dump($content->getName('eng-GB')); -} +``` php +[[= include_file('code_samples/search/language/src/Command/SearchTestCommand.php', 35, 48) =]] ``` From fccf2e2e392b3956851d7f6db26818955d5cf7a7 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:56:10 +0100 Subject: [PATCH 04/10] languagecode_criterion.md: Fix @var --- code_samples/search/language/src/Command/SearchTestCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_samples/search/language/src/Command/SearchTestCommand.php b/code_samples/search/language/src/Command/SearchTestCommand.php index c5cc96a0e0..e626aaa80a 100644 --- a/code_samples/search/language/src/Command/SearchTestCommand.php +++ b/code_samples/search/language/src/Command/SearchTestCommand.php @@ -42,7 +42,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); foreach ($results->searchHits as $searchHit) { - /** @var $content \Ibexa\Core\Repository\Values\Content\Content */ + /** @var \Ibexa\Core\Repository\Values\Content\Content $content */ $content = $searchHit->valueObject; dump($content->getName('eng-GB')); } From fc060b2ce03340e59fcb664ef21b2f7edfb98444 Mon Sep 17 00:00:00 2001 From: adriendupuis Date: Mon, 25 Nov 2024 17:05:22 +0000 Subject: [PATCH 05/10] PHP CS Fixes --- .../language/src/Command/SearchTestCommand.php | 13 ++++++------- .../Controller/ArticlesToTranslateController.php | 10 ++++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code_samples/search/language/src/Command/SearchTestCommand.php b/code_samples/search/language/src/Command/SearchTestCommand.php index e626aaa80a..5ffcf917b1 100644 --- a/code_samples/search/language/src/Command/SearchTestCommand.php +++ b/code_samples/search/language/src/Command/SearchTestCommand.php @@ -1,4 +1,4 @@ -searchService = $searchService; } @@ -33,11 +33,10 @@ protected function execute(InputInterface $input, OutputInterface $output) { $text = implode(' ', $input->getArgument('text')); - $query = new Query(['query' => - new Criterion\LogicalAnd([ + $query = new Query(['query' => new Criterion\LogicalAnd([ new Criterion\FullText($text), - new Criterion\LanguageCode(['eng-GB'], false) - ]) + new Criterion\LanguageCode(['eng-GB'], false), + ]), ]); $results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); diff --git a/code_samples/search/language/src/Controller/ArticlesToTranslateController.php b/code_samples/search/language/src/Controller/ArticlesToTranslateController.php index 15200a096e..47b117518a 100644 --- a/code_samples/search/language/src/Controller/ArticlesToTranslateController.php +++ b/code_samples/search/language/src/Controller/ArticlesToTranslateController.php @@ -1,4 +1,4 @@ -searchService = $searchService; } - public function listView(Request $request): Response { + public function listView(Request $request): Response + { $languageCode = $request->get('language'); $query = new Query(); @@ -25,7 +27,7 @@ public function listView(Request $request): Response { new Criterion\ContentTypeIdentifier('article'), new Criterion\LogicalNot( new Criterion\LanguageCode($languageCode, false) - ) + ), ]); $results = $this->searchService->findContent($query); From e2726b539e80fae0a0793690557e7618f85d4d6a Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 25 Nov 2024 18:32:48 +0100 Subject: [PATCH 06/10] languagecode_criterion.md: Fix include_file offset after PHP CS Fixes --- docs/search/criteria_reference/languagecode_criterion.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index f80e477ec0..8db547b2c5 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -45,7 +45,7 @@ You can use the `LanguageCode` Criterion to search for articles that are lacking into a specific language: ``` php hl_lines="5" -[[= include_file('code_samples/search/language/src/Controller/ArticlesToTranslateController.php', 22, 39) =]] +[[= include_file('code_samples/search/language/src/Controller/ArticlesToTranslateController.php', 24, 41) =]] ``` You can use the `LanguageCode` Criterion to search in From 3764e59c5ff8873d3bd51c4d122600adbd9eab18 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 26 Nov 2024 11:08:23 +0100 Subject: [PATCH 07/10] languagecode_criterion.md: Plural for 2 use cases --- docs/search/criteria_reference/languagecode_criterion.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index 8db547b2c5..6d39700354 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -39,7 +39,7 @@ $query->query = new Criterion\LanguageCode('ger-DE', false); } ``` -## Use case +## Use cases You can use the `LanguageCode` Criterion to search for articles that are lacking a translation into a specific language: From 689751ce66202feca1cf151af3b2e54ac3b08ea2 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:10:46 +0100 Subject: [PATCH 08/10] languagecode_criterion.md: highlighted lines, grammar --- docs/search/criteria_reference/languagecode_criterion.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index 6d39700354..54dd67bcf0 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -49,8 +49,8 @@ into a specific language: ``` You can use the `LanguageCode` Criterion to search in -several languages while ensuring result have a translation in one language: +several languages while ensuring results have a translation in one specific language: -``` php +``` php hl_lines="3 7" [[= include_file('code_samples/search/language/src/Command/SearchTestCommand.php', 35, 48) =]] ``` From f3d88f3c97f78cad89566d085ebacb1f0bbeb3ae Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:15:31 +0100 Subject: [PATCH 09/10] languagecode_criterion.md: Format code --- .../search/language/src/Command/SearchTestCommand.php | 7 +++---- docs/search/criteria_reference/languagecode_criterion.md | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code_samples/search/language/src/Command/SearchTestCommand.php b/code_samples/search/language/src/Command/SearchTestCommand.php index 5ffcf917b1..07ba6fa8ef 100644 --- a/code_samples/search/language/src/Command/SearchTestCommand.php +++ b/code_samples/search/language/src/Command/SearchTestCommand.php @@ -34,10 +34,9 @@ protected function execute(InputInterface $input, OutputInterface $output) $text = implode(' ', $input->getArgument('text')); $query = new Query(['query' => new Criterion\LogicalAnd([ - new Criterion\FullText($text), - new Criterion\LanguageCode(['eng-GB'], false), - ]), - ]); + new Criterion\FullText($text), + new Criterion\LanguageCode(['eng-GB'], false), + ])]); $results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); foreach ($results->searchHits as $searchHit) { diff --git a/docs/search/criteria_reference/languagecode_criterion.md b/docs/search/criteria_reference/languagecode_criterion.md index 54dd67bcf0..c45bc1eef1 100644 --- a/docs/search/criteria_reference/languagecode_criterion.md +++ b/docs/search/criteria_reference/languagecode_criterion.md @@ -51,6 +51,6 @@ into a specific language: You can use the `LanguageCode` Criterion to search in several languages while ensuring results have a translation in one specific language: -``` php hl_lines="3 7" -[[= include_file('code_samples/search/language/src/Command/SearchTestCommand.php', 35, 48) =]] +``` php hl_lines="3 6" +[[= include_file('code_samples/search/language/src/Command/SearchTestCommand.php', 35, 47) =]] ``` From 1ef5fa46fef06a891235e7c0db3792828ea8168f Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:48:35 +0100 Subject: [PATCH 10/10] languagecode_criterion.md: Fix $languageFilter usage --- code_samples/search/language/src/Command/SearchTestCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_samples/search/language/src/Command/SearchTestCommand.php b/code_samples/search/language/src/Command/SearchTestCommand.php index 07ba6fa8ef..716ef32ff1 100644 --- a/code_samples/search/language/src/Command/SearchTestCommand.php +++ b/code_samples/search/language/src/Command/SearchTestCommand.php @@ -38,7 +38,7 @@ protected function execute(InputInterface $input, OutputInterface $output) new Criterion\LanguageCode(['eng-GB'], false), ])]); - $results = $this->searchService->findContent($query, ['eng-GB', 'fre-FR', 'ger-DE']); + $results = $this->searchService->findContent($query, ['languages' => ['eng-GB', 'fre-FR', 'ger-DE']]); foreach ($results->searchHits as $searchHit) { /** @var \Ibexa\Core\Repository\Values\Content\Content $content */ $content = $searchHit->valueObject;