]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/BaseSearch.php
Decouple conversation creation from rendering
[friendica.git] / src / Module / BaseSearch.php
index 3593e8a632d15cdfd8eae3170f7797ef8c2ee620..4a25b71a561d56fc641205121b63d5193b420e69 100644 (file)
@@ -23,6 +23,7 @@ namespace Friendica\Module;
 
 use Friendica\BaseModule;
 use Friendica\Content\Pager;
+use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
 use Friendica\Core\Search;
 use Friendica\DI;
@@ -62,21 +63,16 @@ class BaseSearch extends BaseModule
                }
 
                $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);
+                       $type   = Search::TYPE_GROUP;
+                       $header = DI::l10n()->t('Group Search - %s', $search);
                }
 
                $search = Network::convertToIdn($search);
@@ -91,16 +87,18 @@ class BaseSearch extends BaseModule
 
                $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_GROUP);
                }
 
                return self::printResult($results, $pager, $header);