tags: possibility to filter posts for tags and profile owner (profile)

This commit is contained in:
rabuzarus 2017-11-23 00:59:20 +01:00
parent 59ae5633ec
commit 19afabd268
3 changed files with 23 additions and 8 deletions

View File

@ -151,7 +151,7 @@ function update_items() {
dba::close($messages); 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'); require_once('include/security.php');
$item_condition = item_condition(); $item_condition = item_condition();
@ -163,8 +163,8 @@ function tagadelic($uid, $count = 0, $owner = 0, $flags = 0, $type = TERM_HASHTA
} }
} }
if ($owner) { if ($owner_id) {
$sql_options .= " AND `item`.`owner-id` = ".intval($owner)." "; $sql_options .= " AND `item`.`owner-id` = ".intval($owner_id)." ";
} }
// Fetch tags // Fetch tags
@ -186,13 +186,21 @@ function tagadelic($uid, $count = 0, $owner = 0, $flags = 0, $type = TERM_HASHTA
return tag_calc($r); 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 = ''; $o = '';
$r = tagadelic($uid, $count, $owner, $flags, $type); $r = tagadelic($uid, $count, $owner_id, $flags, $type);
if($r) { 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) { foreach ($r as $rr) {
$tag['level'] = $rr[2]; $tag['level'] = $rr[2];
$tag['url'] = urlencode($rr[0]); $tag['url'] = $url."?tag=".urlencode($rr[0]);
$tag['name'] = $rr[0]; $tag['name'] = $rr[0];
$tags[] = $tag; $tags[] = $tag;

View File

@ -98,6 +98,8 @@ function profile_content(App $a, $update = 0) {
$category = ((x($_GET,'category')) ? $_GET['category'] : ''); $category = ((x($_GET,'category')) ? $_GET['category'] : '');
} }
$hashtags = (x($_GET, 'tag') ? $_GET['tag'] : '');
if (Config::get('system','block_public') && (! local_user()) && (! remote_user())) { if (Config::get('system','block_public') && (! local_user()) && (! remote_user())) {
return login(); return login();
} }
@ -255,6 +257,11 @@ function profile_content(App $a, $update = 0) {
//$sql_extra .= protect_sprintf(file_tag_file_query('item',$category,'category')); //$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) { if ($datequery) {
$sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery)))); $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
} }

View File

@ -5,7 +5,7 @@
<div class="tag-cloud"> <div class="tag-cloud">
{{foreach $tags as $tag}} {{foreach $tags as $tag}}
<span class="tags"> <span class="tags">
<span class="tag{{$tag.level}}">#</span><a href="search?f=&tag={{$tag.url}}" class="tag{{$tag.level}}">{{$tag.name}}</a> <span class="tag{{$tag.level}}">#</span><a href="{{$tag.url}}" class="tag{{$tag.level}}">{{$tag.name}}</a>
</span> </span>
{{/foreach}} {{/foreach}}
</div> </div>