* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function getContactsFromProbe(string $user): ?ResultList
+ public static function getContactsFromProbe(string $user, $only_forum = false): ResultList
{
+ $emptyResultList = new ResultList();
+
if (empty(parse_url($user, PHP_URL_SCHEME)) && !(filter_var($user, FILTER_VALIDATE_EMAIL) || Network::isEmailDomainValid($user))) {
- return null;
+ return $emptyResultList;
}
-
+
$user_data = Contact::getByURL($user);
if (empty($user_data)) {
- return null;
+ return $emptyResultList;
+ }
+
+ if ($only_forum && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) {
+ return $emptyResultList;
}
if (!Protocol::supportsProbe($user_data['network'])) {
- return null;
+ return $emptyResultList;
}
$contactDetails = Contact::getByURLForUser($user_data['url'], DI::userSession()->getLocalUserId());
$resultList = new ResultList(
($results['page'] ?? 0) ?: 1,
- $results['count'] ?? 0,
- ($results['itemsperpage'] ?? 0) ?: 30
+ ($results['itemsperpage'] ?? 0) ?: 30,
+ $results['count'] ?? 0
);
$profiles = $results['profiles'] ?? [];
$contacts = Contact::searchByName($search, $type == self::TYPE_FORUM ? 'community' : '', true);
- $resultList = new ResultList($start, $itemPage, count($contacts));
+ $resultList = new ResultList($start, count($contacts), $itemPage);
foreach ($contacts as $contact) {
$result = new ContactResult(
return 'search?q=' . urlencode($search);
}
}
-}
+}
\ No newline at end of file
use Friendica\BaseModule;
use Friendica\Content\Pager;
+use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Core\Search;
use Friendica\DI;
}
$header = '';
+ $results = new ResultList();
if (strpos($search, '@') === 0) {
$search = trim(substr($search, 1));
$type = Search::TYPE_PEOPLE;
$header = DI::l10n()->t('People Search - %s', $search);
-
- if (strrpos($search, '@') > 0) {
- $results = Search::getContactsFromProbe(Network::convertToIdn($search));
- }
- }
-
- if (strpos($search, '!') === 0) {
+ } elseif (strpos($search, '!') === 0) {
$search = trim(substr($search, 1));
$type = Search::TYPE_FORUM;
$header = DI::l10n()->t('Forum Search - %s', $search);
$pager = new Pager(DI::l10n(), DI::args()->getQueryString(), $itemsPerPage);
- if (empty($results)) {
- if ($localSearch) {
- $pager->setItemsPerPage(80);
- $results = Search::getContactsFromLocalDirectory($search, $type, $pager->getStart(), $pager->getItemsPerPage());
- } elseif (Search::getGlobalDirectory()) {
- $results = Search::getContactsFromGlobalDirectory($search, $type, $pager->getPage());
- $pager->setItemsPerPage($results->getItemsPage());
- } else {
- $results = new ResultList();
- }
+ if (!$results->getTotal() && !$localSearch && Search::getGlobalDirectory()) {
+ $results = Search::getContactsFromGlobalDirectory($search, $type, $pager->getPage());
+ $pager->setItemsPerPage($results->getItemsPage());
+ }
+
+ if (!$results->getTotal()) {
+ $pager->setItemsPerPage(80);
+ $results = Search::getContactsFromLocalDirectory($search, $type, $pager->getStart(), $pager->getItemsPerPage());
+ }
+
+ if (!$results->getTotal()) {
+ $results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_FORUM);
}
return self::printResult($results, $pager, $header);
'$paginate' => $pager->renderFull($results->getTotal()),
]);
}
-}
+}
\ No newline at end of file