From a7aae9603acd3787ebb1fb937b6fdf55ea428e0d Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Sun, 19 May 2019 05:06:02 +0200 Subject: [PATCH] Split Directory Search as a base for further changes --- mod/search.php | 10 +++--- src/Module/BaseSearchModule.php | 55 ++++++++++++++++++++++++++++++++- src/Module/Search/Directory.php | 52 +------------------------------ 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/mod/search.php b/mod/search.php index 816ebf18a9..4144e2608f 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\Directory; +use Friendica\Module\BaseSearchModule; 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 Directory::performSearch(); + return BaseSearchModule::performSearch(); } if (strpos($search,'!') === 0) { - return Directory::performSearch(); + return BaseSearchModule::performSearch(); } if (!empty($_GET['search-option'])) @@ -162,9 +162,9 @@ function search_content(App $a) { $tag = true; break; case 'contacts': - return Directory::performSearch('@'); + return BaseSearchModule::performSearch('@'); case 'forums': - return Directory::performSearch('!'); + return BaseSearchModule::performSearch('!'); } if (!$search) diff --git a/src/Module/BaseSearchModule.php b/src/Module/BaseSearchModule.php index d11f7e9860..7028208286 100644 --- a/src/Module/BaseSearchModule.php +++ b/src/Module/BaseSearchModule.php @@ -10,12 +10,65 @@ use Friendica\Core\Renderer; use Friendica\Object\Search\ResultList; use Friendica\Util\Proxy as ProxyUtils; use Friendica\Model; +use Friendica\Util\Strings; /** * Base class for search modules */ -abstract class BaseSearchModule extends BaseModule +class BaseSearchModule extends BaseModule { + /** + * Performs a search with an optional prefix + * + * @param string $prefix A optional prefix (e.g. @ or !) for searching + * + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + 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); + } + /** * Prints a human readable search result * diff --git a/src/Module/Search/Directory.php b/src/Module/Search/Directory.php index 900bf818bc..76ada50d59 100644 --- a/src/Module/Search/Directory.php +++ b/src/Module/Search/Directory.php @@ -2,19 +2,12 @@ namespace Friendica\Module\Search; -use Friendica\BaseModule; -use Friendica\Content\ContactSelector; -use Friendica\Content\Pager; use Friendica\Content\Widget; use Friendica\Core\L10n; -use Friendica\Core\Renderer; use Friendica\Module\BaseSearchModule; -use Friendica\Util\Proxy as ProxyUtils; -use Friendica\Util\Strings; -use Friendica\Model; /** - * Multi search module, which is needed for further search operations + * Directory search module */ class Directory extends BaseSearchModule { @@ -36,47 +29,4 @@ class Directory extends BaseSearchModule 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); - } }