Added community search mode

This commit is contained in:
Michael Vogel 2015-07-30 23:27:50 +02:00
parent 6ab304b564
commit 0a998f99df
2 changed files with 18 additions and 2 deletions

View file

@ -16,6 +16,8 @@ function dirfind_init(&$a) {
function dirfind_content(&$a) { function dirfind_content(&$a) {
$community = false;
$local = get_config('system','poco_local_search'); $local = get_config('system','poco_local_search');
$search = notags(trim($_REQUEST['search'])); $search = notags(trim($_REQUEST['search']));
@ -23,6 +25,11 @@ function dirfind_content(&$a) {
if(strpos($search,'@') === 0) if(strpos($search,'@') === 0)
$search = substr($search,1); $search = substr($search,1);
if(strpos($search,'!') === 0) {
$search = substr($search,1);
$community = true;
}
$o = ''; $o = '';
$o .= replace_macros(get_markup_template("section_title.tpl"),array( $o .= replace_macros(get_markup_template("section_title.tpl"),array(
@ -33,12 +40,17 @@ function dirfind_content(&$a) {
if ($local) { if ($local) {
if ($community)
$extra_sql = " AND `community`";
else
$extra_sql = "";
$perpage = 80; $perpage = 80;
$startrec = (($a->pager['page']) * $perpage) - $perpage; $startrec = (($a->pager['page']) * $perpage) - $perpage;
$count = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND $count = q("SELECT count(*) AS `total` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND
(`url` REGEXP '%s' OR `name` REGEXP '%s' OR `location` REGEXP '%s' OR (`url` REGEXP '%s' OR `name` REGEXP '%s' OR `location` REGEXP '%s' OR
`about` REGEXP '%s' OR `keywords` REGEXP '%s')", `about` REGEXP '%s' OR `keywords` REGEXP '%s')".$extra_sql,
dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA),
dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)),
dbesc(escape_tags($search)), dbesc(escape_tags($search))); dbesc(escape_tags($search)), dbesc(escape_tags($search)));
@ -49,7 +61,7 @@ function dirfind_content(&$a) {
WHERE `gcontact`.`network` IN ('%s', '%s', '%s') AND WHERE `gcontact`.`network` IN ('%s', '%s', '%s') AND
((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)) AND ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)) AND
(`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`location` REGEXP '%s' OR (`gcontact`.`url` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`location` REGEXP '%s' OR
`gcontact`.`about` REGEXP '%s' OR `gcontact`.`keywords` REGEXP '%s') `gcontact`.`about` REGEXP '%s' OR `gcontact`.`keywords` REGEXP '%s') $extra_sql
GROUP BY `gcontact`.`nurl` GROUP BY `gcontact`.`nurl`
ORDER BY `gcontact`.`updated` DESC LIMIT %d, %d", ORDER BY `gcontact`.`updated` DESC LIMIT %d, %d",
intval(local_user()), dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA), intval(local_user()), dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DIASPORA),

View file

@ -120,6 +120,10 @@ function search_content(&$a) {
require_once('mod/dirfind.php'); require_once('mod/dirfind.php');
return dirfind_content($a); return dirfind_content($a);
} }
if(strpos($search,'!') === 0) {
require_once('mod/dirfind.php');
return dirfind_content($a);
}
if(! $search) if(! $search)
return $o; return $o;