From f3d351621d8f098524ccbfcad82863beafab5393 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 1 Oct 2013 19:54:22 -0700 Subject: Saved searches on the matrix/network page just got a lot more interesting. Hint: it's all about autocomplete --- mod/network.php | 29 ++++++++++++++++++++++++++--- mod/search_ac.php | 51 +++++++++++++++++---------------------------------- 2 files changed, 43 insertions(+), 37 deletions(-) (limited to 'mod') diff --git a/mod/network.php b/mod/network.php index 72391497b..81b38a5ae 100644 --- a/mod/network.php +++ b/mod/network.php @@ -64,7 +64,6 @@ function network_init(&$a) { } } - $group_id = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0); require_once('include/group.php'); require_once('include/contact_widgets.php'); @@ -74,8 +73,10 @@ function network_init(&$a) { $a->page['aside'] = ''; $search = ((x($_GET,'search')) ? $_GET['search'] : ''); + - if(x($_GET,'save')) { + + if(x($_GET,'save') && $search) { $r = q("select * from `term` where `uid` = %d and `type` = %d and `term` = '%s' limit 1", intval(local_user()), intval(TERM_SAVEDSEARCH), @@ -104,6 +105,28 @@ function network_init(&$a) { $a->page['aside'] .= saved_searches($search); $a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : '')); + + if($search) { + if(strpos($search,'@') === 0) { + $r = q("select abook_id from abook left join xchan on abook_xchan = xchan_hash where xchan_name = '%s' and abook_channel = %d limit 1", + dbesc(substr($search,1)), + intval(local_user()) + ); + if($r) { + $_GET['cid'] = $r[0]['abook_id']; + $search = $_GET['search'] = ''; + } + } + elseif(strpos($search,'#') === 0) { + $search = $_GET['search'] = substr($search,1); + } + } + + $group_id = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0); + + + + } function saved_searches($search) { @@ -149,7 +172,7 @@ function saved_searches($search) { $o = replace_macros($tpl, array( '$title' => t('Saved Searches'), '$add' => t('add'), - '$searchbox' => search($search,'netsearch-box',$srchurl,true), + '$searchbox' => search('','netsearch-box',$srchurl,true), '$saved' => $saved, )); diff --git a/mod/search_ac.php b/mod/search_ac.php index 8e87f8449..36da21376 100644 --- a/mod/search_ac.php +++ b/mod/search_ac.php @@ -27,42 +27,25 @@ function search_ac_init(&$a){ // Priority to people searches if ($search) { - $people_sql_extra = protect_sprintf(" AND `name` LIKE '%". dbesc($search) . "%' "); + $people_sql_extra = protect_sprintf(" AND `xchan_name` LIKE '%". dbesc($search) . "%' "); $tag_sql_extra = protect_sprintf(" AND term LIKE '%". dbesc($search) . "%' "); } -// FIXME - this is whacked -// $r = q("SELECT `id`, `name`, `micro`, `url` FROM `contact` -// WHERE `uid` = %d AND `pending` = 0 -// $people_sql_extra -// ORDER BY `name` ASC ", -// intval(local_user()) -// ); - -// if($r) { -// foreach($r as $g) { -// $x['photos'][] = $g['micro']; -// $x['links'][] = $g['url']; -// $x['suggestions'][] = '@' . $g['name']; -// $x['data'][] = intval($g['id']); -// } -// } -// FIXME - extend search to non-connnections if you couldn't find any connections with that name, use poco or directory -// else { -// -// $r = q("SELECT `id`, `name`, `photo`, `url` FROM `gcontact` where 1 -// $people_sql_extra -// ORDER BY `name` ASC " -// ); - -// if(count($r)) { -// foreach($r as $g) { -// $x['photos'][] = $g['photo']; -// $x['links'][] = $g['url']; -// $x['suggestions'][] = '@' . $g['name']; -// $x['data'][] = intval($g['id']); -// } -// } -// } + + + $r = q("SELECT `abook_id`, `xchan_name`, `xchan_photo_s`, `xchan_url` FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d + $people_sql_extra + ORDER BY `xchan_name` ASC ", + intval(local_user()) + ); + + if($r) { + foreach($r as $g) { + $x['photos'][] = $g['xchan_photo_s']; + $x['links'][] = $g['xchan_url']; + $x['suggestions'][] = '@' . $g['xchan_name']; + $x['data'][] = 'cid=' . intval($g['abook_id']); + } + } $r = q("select distinct term, tid, url from term where type = %d $tag_sql_extra group by term order by term asc", intval(TERM_HASHTAG) -- cgit v1.2.3