From 5b6c2c32bff6c68ed5a35acf46f932aec6dad01d Mon Sep 17 00:00:00 2001 From: redmatrix Date: Wed, 28 Sep 2016 20:55:15 -0700 Subject: Bring the saved search feature in line with the spec, and publish the feature spec. --- Zotlabs/Module/Search_ac.php | 95 ++++++++++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 38 deletions(-) (limited to 'Zotlabs/Module/Search_ac.php') diff --git a/Zotlabs/Module/Search_ac.php b/Zotlabs/Module/Search_ac.php index a3bc18054..24b724c5d 100644 --- a/Zotlabs/Module/Search_ac.php +++ b/Zotlabs/Module/Search_ac.php @@ -18,49 +18,68 @@ class Search_ac extends \Zotlabs\Web\Controller { $search = $_REQUEST['query']; } + $do_people = true; + $do_tags = true; + + if(substr($search,0,1) === '@') { + $do_tags = false; + $search = substr($search,1); + } + + if(substr($search,0,1) === '#') { + $do_people = false; + $search = substr($search,1); + } + // Priority to people searches if ($search) { - $people_sql_extra = protect_sprintf(" AND `xchan_name` LIKE '%". dbesc($search) . "%' "); - $tag_sql_extra = protect_sprintf(" AND term LIKE '%". dbesc($search) . "%' "); + $people_sql_extra = protect_sprintf(" AND xchan_name LIKE '%" . dbesc($search) . "%' "); + $tag_sql_extra = protect_sprintf(" AND term LIKE '%" . dbesc($search) . "%' "); } - - - $r = q("SELECT `abook_id`, `xchan_name`, `xchan_photo_s`, `xchan_url`, `xchan_addr` FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d - $people_sql_extra - ORDER BY `xchan_name` ASC ", - intval(local_channel()) - ); - - $results = array(); - if($r) { - foreach($r as $g) { - $results[] = array( - "photo" => $g['xchan_photo_s'], - "name" => '@'.$g['xchan_name'], - "id" => $g['abook_id'], - "link" => $g['xchan_url'], - "label" => '', - "nick" => '', - ); + + $results = []; + + if($do_people) { + $r = q("SELECT abook_id, xchan_name, xchan_photo_s, xchan_url, xchan_addr FROM abook + left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d + $people_sql_extra + ORDER BY xchan_name ASC ", + intval(local_channel()) + ); + + if($r) { + foreach($r as $g) { + $results[] = [ + 'photo' => $g['xchan_photo_s'], + 'name' => '@' . $g['xchan_name'], + 'id' => $g['abook_id'], + 'link' => $g['xchan_url'], + 'label' => '', + 'nick' => '', + ]; + } } } - - $r = q("select distinct term, tid, url from term where ttype in ( %d, %d ) $tag_sql_extra group by term order by term asc", - intval(TERM_HASHTAG), - intval(TERM_COMMUNITYTAG) - ); - - if(count($r)) { - foreach($r as $g) { - $results[] = array( - "photo" => z_root() . '/images/hashtag.png', - "name" => '#'.$g['term'], - "id" => $g['tid'], - "link" => $g['url'], - "label" => '', - "nick" => '', - ); + + if($do_tags) { + $r = q("select distinct term, tid, url from term + where ttype in ( %d, %d ) $tag_sql_extra group by term order by term asc", + intval(TERM_HASHTAG), + intval(TERM_COMMUNITYTAG) + ); + + if($r) { + foreach($r as $g) { + $results[] = [ + 'photo' => z_root() . '/images/hashtag.png', + 'name' => '#' . $g['term'], + 'id' => $g['tid'], + 'link' => $g['url'], + 'label' => '', + 'nick' => '', + ]; + } } } @@ -72,7 +91,7 @@ class Search_ac extends \Zotlabs\Web\Controller { ); echo json_encode($o); - logger('search_ac: ' . print_r($x,true),LOGGER_ALL,LOG_INFO); + logger('search_ac: ' . print_r($x,true),LOGGER_DATA,LOG_INFO); killme(); } -- cgit v1.2.3