From: Philipp Holzer Date: Sun, 19 May 2019 03:01:46 +0000 (+0200) Subject: Split Directory Search as a base for further changes X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=5b44fdc2021e09a8e29081d46e5707d25a25a189;p=friendica.git Split Directory Search as a base for further changes --- diff --git a/mod/search.php b/mod/search.php index 21b6918b1c..816ebf18a9 100644 --- a/mod/search.php +++ b/mod/search.php @@ -14,7 +14,7 @@ use Friendica\Core\Logger; use Friendica\Core\Renderer; use Friendica\Database\DBA; use Friendica\Model\Item; -use Friendica\Module\DirectorySearch; +use Friendica\Module\Directory; use Friendica\Util\Strings; function search_saved_searches() { @@ -148,10 +148,10 @@ function search_content(App $a) { $search = substr($search,1); } if (strpos($search,'@') === 0) { - return DirectorySearch::performSearch(); + return Directory::performSearch(); } if (strpos($search,'!') === 0) { - return DirectorySearch::performSearch(); + return Directory::performSearch(); } if (!empty($_GET['search-option'])) @@ -162,9 +162,9 @@ function search_content(App $a) { $tag = true; break; case 'contacts': - return DirectorySearch::performSearch('@'); + return Directory::performSearch('@'); case 'forums': - return DirectorySearch::performSearch('!'); + return Directory::performSearch('!'); } if (!$search) diff --git a/src/App/Router.php b/src/App/Router.php index 4a8807fa70..02072594cd 100644 --- a/src/App/Router.php +++ b/src/App/Router.php @@ -113,7 +113,7 @@ class Router $collector->addRoute(['GET'], '/ignored', Module\Contact::class); }); $this->routeCollector->addRoute(['GET'], '/credits', Module\Credits::class); - $this->routeCollector->addRoute(['GET'], '/dirfind', Module\DirectorySearch::class); + $this->routeCollector->addRoute(['GET'], '/dirfind', Module\Search\Directory::class); $this->routeCollector->addRoute(['GET'], '/directory', Module\Directory::class); $this->routeCollector->addGroup('/feed', function (RouteCollector $collector) { $collector->addRoute(['GET'], '/{nickname}', Module\Feed::class); diff --git a/src/Module/BaseSearchModule.php b/src/Module/BaseSearchModule.php new file mode 100644 index 0000000000..d11f7e9860 --- /dev/null +++ b/src/Module/BaseSearchModule.php @@ -0,0 +1,104 @@ +getResults())) { + info(L10n::t('No matches') . EOL); + return ''; + } + + $a = self::getApp(); + + $id = 0; + $entries = []; + foreach ($results->getResults() as $result) { + + $alt_text = ''; + $location = ''; + $about = ''; + $accountType = ''; + $photo_menu = []; + + // If We already know this contact then don't show the "connect" button + if ($result->getCid() > 0 || $result->getPcid() > 0) { + $connLink = ""; + $connTxt = ""; + $contact = Model\Contact::getById( + ($result->getCid() > 0) ? $result->getCid() : $result->getPcid() + ); + + if (!empty($contact)) { + $photo_menu = Model\Contact::photoMenu($contact); + $details = Contact::getContactTemplateVars($contact); + $alt_text = $details['alt_text']; + $location = $contact['location']; + $about = $contact['about']; + $accountType = Model\Contact::getAccountType($contact); + } else { + $photo_menu = []; + } + } else { + $connLink = $a->getBaseURL() . '/follow/?url=' . $result->getUrl(); + $connTxt = L10n::t('Connect'); + + $photo_menu['profile'] = [L10n::t("View Profile"), Model\Contact::magicLink($result->getUrl())]; + $photo_menu['follow'] = [L10n::t("Connect/Follow"), $connLink]; + } + + $photo = str_replace("http:///photo/", get_server() . "/photo/", $result->getPhoto()); + + $entry = [ + 'alt_text' => $alt_text, + 'url' => Model\Contact::magicLink($result->getUrl()), + 'itemurl' => $result->getItem(), + 'name' => $result->getName(), + 'thumb' => ProxyUtils::proxifyUrl($photo, false, ProxyUtils::SIZE_THUMB), + 'img_hover' => $result->getTags(), + 'conntxt' => $connTxt, + 'connlnk' => $connLink, + 'photo_menu' => $photo_menu, + 'details' => $location, + 'tags' => $result->getTags(), + 'about' => $about, + 'account_type' => $accountType, + 'network' => ContactSelector::networkToName($result->getNetwork(), $result->getUrl()), + 'id' => ++$id, + ]; + $entries[] = $entry; + } + + $tpl = Renderer::getMarkupTemplate('viewcontact_template.tpl'); + return Renderer::replaceMacros($tpl, [ + 'title' => $header, + '$contacts' => $entries, + '$paginate' => $pager->renderFull($results->getTotal()), + ]); + } +} diff --git a/src/Module/DirectorySearch.php b/src/Module/DirectorySearch.php deleted file mode 100644 index 7e3e3c2c5f..0000000000 --- a/src/Module/DirectorySearch.php +++ /dev/null @@ -1,149 +0,0 @@ -page['aside'])) { - $a->page['aside'] = ''; - } - - $a->page['aside'] .= Widget::findPeople(); - $a->page['aside'] .= Widget::follow(); - - return self::performSearch(); - } - - public static function performSearch($prefix = '') - { - $a = self::getApp(); - $config = $a->getConfig(); - - $community = false; - - $localSearch = $config->get('system', 'poco_local_search'); - - $search = $prefix . Strings::escapeTags(trim(defaults($_REQUEST, 'search', ''))); - - if (!$search) { - return ''; - } - - $header = ''; - - if (strpos($search, '@') === 0) { - $search = substr($search, 1); - $header = L10n::t('People Search - %s', $search); - $results = Model\Search::searchUser($search); - } - - if (strpos($search, '!') === 0) { - $search = substr($search, 1); - $community = true; - $header = L10n::t('Forum Search - %s', $search); - } - - $pager = new Pager($a->query_string); - - if ($localSearch && empty($results)) { - $pager->setItemsPerPage(80); - $results = Model\Search::searchLocal($search, $pager->getStart(), $pager->getItemsPerPage(), $community); - - } elseif (strlen($config->get('system', 'directory')) && empty($results)) { - $results = Model\Search::searchDirectory($search, $pager->getPage()); - $pager->setItemsPerPage($results->getItemsPage()); - } - - if (empty($results) || empty($results->getResults())) { - info(L10n::t('No matches') . EOL); - return ''; - } - $id = 0; - - $entries = []; - foreach ($results->getResults() as $result) { - - $alt_text = ''; - $location = ''; - $about = ''; - $accountType = ''; - $photo_menu = []; - - // If We already know this contact then don't show the "connect" button - if ($result->getCid() > 0 || $result->getPcid() > 0) { - $connLink = ""; - $connTxt = ""; - $contact = Model\Contact::getById( - ($result->getCid() > 0) ? $result->getCid() : $result->getPcid() - ); - - if (!empty($contact)) { - $photo_menu = Model\Contact::photoMenu($contact); - $details = Contact::getContactTemplateVars($contact); - $alt_text = $details['alt_text']; - $location = $contact['location']; - $about = $contact['about']; - $accountType = Model\Contact::getAccountType($contact); - } else { - $photo_menu = []; - } - } else { - $connLink = $a->getBaseURL() . '/follow/?url=' . $result->getUrl(); - $connTxt = L10n::t('Connect'); - - $photo_menu['profile'] = [L10n::t("View Profile"), Model\Contact::magicLink($result->getUrl())]; - $photo_menu['follow'] = [L10n::t("Connect/Follow"), $connLink]; - } - - $photo = str_replace("http:///photo/", get_server() . "/photo/", $result->getPhoto()); - - $entry = [ - 'alt_text' => $alt_text, - 'url' => Model\Contact::magicLink($result->getUrl()), - 'itemurl' => $result->getItem(), - 'name' => $result->getName(), - 'thumb' => ProxyUtils::proxifyUrl($photo, false, ProxyUtils::SIZE_THUMB), - 'img_hover' => $result->getTags(), - 'conntxt' => $connTxt, - 'connlnk' => $connLink, - 'photo_menu' => $photo_menu, - 'details' => $location, - 'tags' => $result->getTags(), - 'about' => $about, - 'account_type' => $accountType, - 'network' => ContactSelector::networkToName($result->getNetwork(), $result->getUrl()), - 'id' => ++$id, - ]; - $entries[] = $entry; - } - - $tpl = Renderer::getMarkupTemplate('viewcontact_template.tpl'); - return Renderer::replaceMacros($tpl, [ - 'title' => $header, - '$contacts' => $entries, - '$paginate' => $pager->renderFull($results->getTotal()), - ]); - } -} diff --git a/src/Module/Search/Directory.php b/src/Module/Search/Directory.php new file mode 100644 index 0000000000..900bf818bc --- /dev/null +++ b/src/Module/Search/Directory.php @@ -0,0 +1,82 @@ +page['aside'])) { + $a->page['aside'] = ''; + } + + $a->page['aside'] .= Widget::findPeople(); + $a->page['aside'] .= Widget::follow(); + + return self::performSearch(); + } + + public static function performSearch($prefix = '') + { + $a = self::getApp(); + $config = $a->getConfig(); + + $community = false; + + $localSearch = $config->get('system', 'poco_local_search'); + + $search = $prefix . Strings::escapeTags(trim(defaults($_REQUEST, 'search', ''))); + + if (!$search) { + return ''; + } + + $header = ''; + + if (strpos($search, '@') === 0) { + $search = substr($search, 1); + $header = L10n::t('People Search - %s', $search); + $results = Model\Search::searchUser($search); + } + + if (strpos($search, '!') === 0) { + $search = substr($search, 1); + $community = true; + $header = L10n::t('Forum Search - %s', $search); + } + + $pager = new Pager($a->query_string); + + if ($localSearch && empty($results)) { + $pager->setItemsPerPage(80); + $results = Model\Search::searchLocal($search, $pager->getStart(), $pager->getItemsPerPage(), $community); + + } elseif (strlen($config->get('system', 'directory')) && empty($results)) { + $results = Model\Search::searchDirectory($search, $pager->getPage()); + $pager->setItemsPerPage($results->getItemsPage()); + } + + return self::printResult($results, $pager, $header); + } +}