diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-08 15:41:42 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-08 15:41:42 +0000 |
| commit | 32cd280058cdb3b5f1807bfaaeffb8d79d5ebf3f (patch) | |
| tree | 1771eb1358e9658a2d513c35c9ce935395a4fa8d /app/Module/DescendancyModule.php | |
| parent | f69869410758f2d2310e9ee33db69832ca461dcc (diff) | |
| download | webtrees-32cd280058cdb3b5f1807bfaaeffb8d79d5ebf3f.tar.gz webtrees-32cd280058cdb3b5f1807bfaaeffb8d79d5ebf3f.tar.bz2 webtrees-32cd280058cdb3b5f1807bfaaeffb8d79d5ebf3f.zip | |
Create search service
Diffstat (limited to 'app/Module/DescendancyModule.php')
| -rw-r--r-- | app/Module/DescendancyModule.php | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/app/Module/DescendancyModule.php b/app/Module/DescendancyModule.php index 34fe4a907e..fd363b8db0 100644 --- a/app/Module/DescendancyModule.php +++ b/app/Module/DescendancyModule.php @@ -17,11 +17,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; -use Fisharebest\Webtrees\Database; use Fisharebest\Webtrees\Family; use Fisharebest\Webtrees\FontAwesome; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; +use Fisharebest\Webtrees\Services\SearchService; use Fisharebest\Webtrees\Tree; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -46,35 +46,25 @@ class DescendancyModule extends AbstractModule implements ModuleSidebarInterface } /** - * @param Request $request - * @param Tree $tree + * @param Request $request + * @param Tree $tree + * @param SearchService $search_service * * @return Response */ - public function getSearchAction(Request $request, Tree $tree): Response + public function getSearchAction(Request $request, Tree $tree, SearchService $search_service): Response { $search = $request->get('search', ''); $html = ''; if (strlen($search) >= 2) { - $rows = Database::prepare( - "SELECT i_id AS xref" . - " FROM `##individuals`" . - " JOIN `##name` ON i_id = n_id AND i_file = n_file" . - " WHERE n_sort LIKE CONCAT('%', :query, '%') AND i_file = :tree_id" . - " ORDER BY n_sort" - )->execute([ - 'query' => $search, - 'tree_id' => $tree->id(), - ])->fetchAll(); - - foreach ($rows as $row) { - $individual = Individual::getInstance($row->xref, $tree); - if ($individual !== null && $individual->canShow()) { - $html .= $this->getPersonLi($individual); - } - } + $html = $search_service + ->searchIndividualsByName($tree, $search) + ->map(function (Individual $individual): string { + return $this->getPersonLi($individual); + }) + ->implode(''); } if ($html !== '') { |
