summaryrefslogtreecommitdiff
path: root/app/Module/DescendancyModule.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-01-08 15:41:42 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-01-08 15:41:42 +0000
commit32cd280058cdb3b5f1807bfaaeffb8d79d5ebf3f (patch)
tree1771eb1358e9658a2d513c35c9ce935395a4fa8d /app/Module/DescendancyModule.php
parentf69869410758f2d2310e9ee33db69832ca461dcc (diff)
downloadwebtrees-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.php32
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 !== '') {