From 393cd46a82bd4c00c72e8734df2d1fa62928cc06 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 17 Apr 2018 20:08:14 -0700 Subject: [PATCH] public stream tag enhancements --- Zotlabs/Module/Pubstream.php | 8 ++++- Zotlabs/Widget/Pubtagcloud.php | 40 +++++++++++++++++++++ include/taxonomy.php | 64 ++++++++++++++++++++++++++++++++++ view/pdl/mod_pubstream.pdl | 4 +++ 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 Zotlabs/Widget/Pubtagcloud.php diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index 45487e3a4..e8a0146c4 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -34,6 +34,8 @@ class Pubstream extends \Zotlabs\Web\Controller { } $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : ''); + $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : ''); + if(strpos($mid,'b64.') === 0) $decoded = @base64url_decode(substr($mid,4)); @@ -133,7 +135,7 @@ class Pubstream extends \Zotlabs\Web\Controller { '$order' => 'comment', '$file' => '', '$cats' => '', - '$tags' => '', + '$tags' => $hashtags, '$dend' => '', '$mid' => $mid, '$verb' => '', @@ -170,6 +172,10 @@ class Pubstream extends \Zotlabs\Web\Controller { $page_mode = 'client'; + if(x($hashtags)) { + $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG)); + } + $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); diff --git a/Zotlabs/Widget/Pubtagcloud.php b/Zotlabs/Widget/Pubtagcloud.php new file mode 100644 index 000000000..af288cf9a --- /dev/null +++ b/Zotlabs/Widget/Pubtagcloud.php @@ -0,0 +1,40 @@ +

' . (($recent) ? t('Trending') : t('Tags')) . '

'; + foreach($r as $rr) { + $o .= '#'.$rr[0].' ' . "\r\n"; + } + $o .= '
'; + } + + return $o; +} + +function pub_tagadelic($net,$site,$limit,$recent,$type) { + + + $item_normal = item_normal(); + $count = intval($limit); + + + if($site) { + $uids = " and item.uid in ( " . stream_perms_api_uids(PERMS_PUBLIC) . " ) and item_private = 0 and item_wall = 1 "; + } + else { + $sys = get_sys_channel(); + $uids = " and item.uid = " . intval($sys['channel_id']) . " "; + $sql_extra = item_permissions_sql($sys['channel_id']); + } + + if($recent) + $sql_extra .= " and item.created > '" . datetime_convert('UTC','UTC', 'now - ' . intval($recent) . ' days ') . "' "; + + // Fetch tags + $r = q("select term, count(term) as total from term left join item on term.oid = item.id + where term.ttype = %d + and otype = %d and item_type = %d + $sql_extra $uids $item_normal + group by term order by total desc %s", + intval($type), + intval(TERM_OBJ_POST), + intval(ITEM_TYPE_POST), + ((intval($count)) ? "limit $count" : '') + ); + + if(! $r) + return array(); + + return Zotlabs\Text\Tagadelic::calc($r); + +} + + + + + + + + + + function dir_tagadelic($count = 0, $hub = '') { diff --git a/view/pdl/mod_pubstream.pdl b/view/pdl/mod_pubstream.pdl index 95f069031..7911f6dfd 100644 --- a/view/pdl/mod_pubstream.pdl +++ b/view/pdl/mod_pubstream.pdl @@ -1,3 +1,7 @@ +[region=aside] +[widget=pubtagcloud][var=trending]15[/var][var=limit]20[/var][/widget] +[widget=pubtagcloud][/widget] +[/region] [region=right_aside] [widget=notifications][/widget] [widget=newmember][/widget]