Skip to content
Snippets Groups Projects
Commit 7876881e authored by Peter Rotich's avatar Peter Rotich
Browse files

Merge pull request #2657 from protich/issue/user-search

Make fulltext search optional on user lookup
parents 1aaa3139 7b29289e
Branches
Tags
No related merge requests found
...@@ -22,8 +22,8 @@ require_once INCLUDE_DIR.'class.note.php'; ...@@ -22,8 +22,8 @@ require_once INCLUDE_DIR.'class.note.php';
class UsersAjaxAPI extends AjaxController { class UsersAjaxAPI extends AjaxController {
/* Assumes search by emal for now */ /* Assumes search by basic info for now */
function search($type = null) { function search($type = null, $fulltext=false) {
if(!isset($_REQUEST['q'])) { if(!isset($_REQUEST['q'])) {
Http::response(400, __('Query argument is required')); Http::response(400, __('Query argument is required'));
...@@ -53,15 +53,23 @@ class UsersAjaxAPI extends AjaxController { ...@@ -53,15 +53,23 @@ class UsersAjaxAPI extends AjaxController {
->values_flat('id', 'emails__address', 'name') ->values_flat('id', 'emails__address', 'name')
->limit($limit); ->limit($limit);
global $ost; if ($fulltext) {
$users = $ost->searcher->find($q, $users); global $ost;
$users->order_by(new SqlCode('__relevance__'), QuerySet::DESC) $users = $ost->searcher->find($q, $users);
->distinct('id'); $users->order_by(new SqlCode('__relevance__'), QuerySet::DESC)
->distinct('id');
if (!count($emails) && !count($users) && preg_match('`\w$`u', $q)) { if (!count($emails) && !count($users) && preg_match('`\w$`u', $q)) {
// Do wildcard full-text search // Do wildcard full-text search
$_REQUEST['q'] = $q."*"; $_REQUEST['q'] = $q."*";
return $this->search($type); return $this->search($type, $fulltext);
}
} else {
$users->filter(Q::any(array(
'emails__address__contains' => $q,
'name__contains' => $q,
'org__name__contains' => $q,
)));
} }
if ($emails = array_filter($emails)) { if ($emails = array_filter($emails)) {
......
...@@ -266,7 +266,7 @@ class MysqlSearchBackend extends SearchBackend { ...@@ -266,7 +266,7 @@ class MysqlSearchBackend extends SearchBackend {
if ($model instanceof Ticket) if ($model instanceof Ticket)
$attrs['title'] = $attrs['number'].' '.$attrs['title']; $attrs['title'] = $attrs['number'].' '.$attrs['title'];
elseif ($model instanceof User) elseif ($model instanceof User)
$content .= implode("\n", $attrs['emails']); $content .=' '.implode("\n", $attrs['emails']);
$title = $attrs['title'] ?: ''; $title = $attrs['title'] ?: '';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment