Issue 12096: Improve account search

This commit is contained in:
Michael 2022-11-05 22:08:28 +00:00
parent c107c5ff0d
commit 70d0f087b7
3 changed files with 24 additions and 39 deletions

View file

@ -51,19 +51,11 @@ class Search extends BaseApi
$accounts = [];
if (!$request['following']) {
if ((strrpos($request['q'], '@') > 0) && $request['resolve']) {
if ($request['resolve']) {
if ((strrpos($request['q'], '@') > 0)) {
$results = CoreSearch::getContactsFromProbe($request['q']);
}
if (empty($results)) {
if (DI::config()->get('system', 'poco_local_search')) {
$results = CoreSearch::getContactsFromLocalDirectory($request['q'], CoreSearch::TYPE_ALL, 0, $request['limit']);
} elseif (CoreSearch::getGlobalDirectory()) {
$results = CoreSearch::getContactsFromGlobalDirectory($request['q'], CoreSearch::TYPE_ALL, 1);
}
}
if (!empty($results)) {
$counter = 0;
foreach ($results->getResults() as $result) {
@ -77,17 +69,11 @@ class Search extends BaseApi
}
}
}
} else {
$contacts = Contact::searchByName($request['q'], '', $uid);
}
$counter = 0;
if (count($accounts) < $request['limit']) {
$contacts = Contact::searchByName($request['q'], '', $request['following'] ? $uid : 0, $request['limit']);
foreach ($contacts as $contact) {
if (!in_array($contact['rel'], [Contact::SHARING, Contact::FRIEND])) {
continue;
}
if (++$counter > $request['limit']) {
continue;
}
$accounts[] = DI::mstdnAccount()->createFromContactId($contact['id'], $uid);
}
DBA::close($contacts);

View file

@ -83,18 +83,11 @@ class Search extends BaseApi
{
$accounts = [];
if (!$following) {
if ((strrpos($q, '@') > 0) && $resolve) {
if ($resolve) {
if ((strrpos($q, '@') > 0)) {
$results = CoreSearch::getContactsFromProbe($q);
}
if (empty($results)) {
if (DI::config()->get('system', 'poco_local_search')) {
$results = CoreSearch::getContactsFromLocalDirectory($q, CoreSearch::TYPE_ALL, 0, $limit);
} elseif (CoreSearch::getGlobalDirectory()) {
$results = CoreSearch::getContactsFromGlobalDirectory($q, CoreSearch::TYPE_ALL, 1);
}
}
if (!empty($results)) {
$counter = 0;
foreach ($results->getResults() as $result) {
@ -108,17 +101,11 @@ class Search extends BaseApi
}
}
}
} else {
$contacts = Contact::searchByName($q, '', $uid);
}
$counter = 0;
if (count($accounts) < $limit) {
$contacts = Contact::searchByName($q, '', $following ? $uid : 0, $limit - count($accounts), $offset);
foreach ($contacts as $contact) {
if (!in_array($contact['rel'], [Contact::SHARING, Contact::FRIEND])) {
continue;
}
if (++$counter > $limit) {
continue;
}
$accounts[] = DI::mstdnAccount()->createFromContactId($contact['id'], $uid);
}
DBA::close($contacts);