Split Directory Search as a base for further changes
This commit is contained in:
		
					parent
					
						
							
								5b44fdc202
							
						
					
				
			
			
				commit
				
					
						a7aae9603a
					
				
			
		
					 3 changed files with 60 additions and 57 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
	 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue