From 19afabd2682e3ae88afc90bf47f726e03eadc8c4 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Thu, 23 Nov 2017 00:59:20 +0100 Subject: [PATCH] tags: possibility to filter posts for tags and profile owner (profile) --- include/tags.php | 22 +++++++++++++++------- mod/profile.php | 7 +++++++ view/templates/tagblock_widget.tpl | 2 +- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/tags.php b/include/tags.php index fb3315441..8a6b3ba74 100644 --- a/include/tags.php +++ b/include/tags.php @@ -151,7 +151,7 @@ function update_items() { dba::close($messages); } -function tagadelic($uid, $count = 0, $owner = 0, $flags = 0, $type = TERM_HASHTAG) { +function tagadelic($uid, $count = 0, $owner_id = 0, $flags = 0, $type = TERM_HASHTAG) { require_once('include/security.php'); $item_condition = item_condition(); @@ -163,8 +163,8 @@ function tagadelic($uid, $count = 0, $owner = 0, $flags = 0, $type = TERM_HASHTA } } - if ($owner) { - $sql_options .= " AND `item`.`owner-id` = ".intval($owner)." "; + if ($owner_id) { + $sql_options .= " AND `item`.`owner-id` = ".intval($owner_id)." "; } // Fetch tags @@ -186,13 +186,21 @@ function tagadelic($uid, $count = 0, $owner = 0, $flags = 0, $type = TERM_HASHTA return tag_calc($r); } -function wtagblock($uid, $count = 0,$owner = 0, $flags = 0, $type = TERM_HASHTAG) { +function wtagblock($uid, $count = 0,$owner_id = 0, $flags = 0, $type = TERM_HASHTAG) { $o = ''; - $r = tagadelic($uid, $count, $owner, $flags, $type); - if($r) { + $r = tagadelic($uid, $count, $owner_id, $flags, $type); + if($r && $owner_id) { + $contact = dba::select( + "contact", + array("url"), + array("id" => $owner_id), + array("limit" => 1) + ); + $url = System::removedBaseUrl($contact['url']); + foreach ($r as $rr) { $tag['level'] = $rr[2]; - $tag['url'] = urlencode($rr[0]); + $tag['url'] = $url."?tag=".urlencode($rr[0]); $tag['name'] = $rr[0]; $tags[] = $tag; diff --git a/mod/profile.php b/mod/profile.php index 9ad24ccd1..59835bd4c 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -98,6 +98,8 @@ function profile_content(App $a, $update = 0) { $category = ((x($_GET,'category')) ? $_GET['category'] : ''); } + $hashtags = (x($_GET, 'tag') ? $_GET['tag'] : ''); + if (Config::get('system','block_public') && (! local_user()) && (! remote_user())) { return login(); } @@ -255,6 +257,11 @@ function profile_content(App $a, $update = 0) { //$sql_extra .= protect_sprintf(file_tag_file_query('item',$category,'category')); } + if (x($hashtags)) { + $sql_post_table .= sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ", + dbesc(protect_sprintf($hashtags)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval($a->profile['profile_uid'])); + } + if ($datequery) { $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery)))); } diff --git a/view/templates/tagblock_widget.tpl b/view/templates/tagblock_widget.tpl index 602d762aa..114d32290 100644 --- a/view/templates/tagblock_widget.tpl +++ b/view/templates/tagblock_widget.tpl @@ -5,7 +5,7 @@