diff options
| author | Greg Roach <greg@subaqua.co.uk> | 2021-03-02 13:41:25 +0000 |
|---|---|---|
| committer | Greg Roach <greg@subaqua.co.uk> | 2021-03-02 14:03:11 +0000 |
| commit | ca2d6785e88b0b2a61b6ad9e066776ff8ff6f9d1 (patch) | |
| tree | 381cfe5650acd14a4210621896c160d0680654b4 /app/Http/RequestHandlers/SearchGeneralPage.php | |
| parent | e7d2081ea9e5d6a73f445669c96f8cd9ee8e38cf (diff) | |
| download | webtrees-ca2d6785e88b0b2a61b6ad9e066776ff8ff6f9d1.tar.gz webtrees-ca2d6785e88b0b2a61b6ad9e066776ff8ff6f9d1.tar.bz2 webtrees-ca2d6785e88b0b2a61b6ad9e066776ff8ff6f9d1.zip | |
Fix: #3713 - collapse list of trees in general/phonetic search pages
Diffstat (limited to 'app/Http/RequestHandlers/SearchGeneralPage.php')
| -rw-r--r-- | app/Http/RequestHandlers/SearchGeneralPage.php | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/app/Http/RequestHandlers/SearchGeneralPage.php b/app/Http/RequestHandlers/SearchGeneralPage.php index 2993f448d3..024d12e1c4 100644 --- a/app/Http/RequestHandlers/SearchGeneralPage.php +++ b/app/Http/RequestHandlers/SearchGeneralPage.php @@ -98,19 +98,20 @@ class SearchGeneralPage implements RequestHandlerInterface // What trees to search? if (Site::getPreference('ALLOW_CHANGE_GEDCOM') === '1') { - $all_trees = $this->tree_service->all()->all(); + $all_trees = $this->tree_service->all(); } else { - $all_trees = [$tree]; + $all_trees = new Collection([$tree]); } - $search_tree_names = $params['search_trees'] ?? []; + $search_tree_names = new Collection($params['search_trees'] ?? []); - $search_trees = array_filter($all_trees, static function (Tree $tree) use ($search_tree_names): bool { - return in_array($tree->name(), $search_tree_names, true); - }); + $search_trees = $all_trees + ->filter(static function (Tree $tree) use ($search_tree_names): bool { + return $search_tree_names->containsStrict($tree->name()); + }); - if ($search_trees === []) { - $search_trees = [$tree]; + if ($search_trees->isEmpty()) { + $search_trees->add($tree); } // Do the search @@ -122,12 +123,12 @@ class SearchGeneralPage implements RequestHandlerInterface if ($search_terms !== []) { if ($search_individuals) { - $individuals = $this->search_service->searchIndividuals($search_trees, $search_terms); + $individuals = $this->search_service->searchIndividuals($search_trees->all(), $search_terms); } if ($search_families) { - $tmp1 = $this->search_service->searchFamilies($search_trees, $search_terms); - $tmp2 = $this->search_service->searchFamilyNames($search_trees, $search_terms); + $tmp1 = $this->search_service->searchFamilies($search_trees->all(), $search_terms); + $tmp2 = $this->search_service->searchFamilyNames($search_trees->all(), $search_terms); $families = $tmp1->merge($tmp2)->unique(static function (Family $family): string { return $family->xref() . '@' . $family->tree()->id(); @@ -135,15 +136,15 @@ class SearchGeneralPage implements RequestHandlerInterface } if ($search_repositories) { - $repositories = $this->search_service->searchRepositories($search_trees, $search_terms); + $repositories = $this->search_service->searchRepositories($search_trees->all(), $search_terms); } if ($search_sources) { - $sources = $this->search_service->searchSources($search_trees, $search_terms); + $sources = $this->search_service->searchSources($search_trees->all(), $search_terms); } if ($search_notes) { - $notes = $this->search_service->searchNotes($search_trees, $search_terms); + $notes = $this->search_service->searchNotes($search_trees->all(), $search_terms); } } |
