From 30e2e32f191b0fa9132792e520f02af8c4a6f475 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 17 Apr 2014 20:03:28 -0700 Subject: improve zotfeed for discover channel so it will send updates to posts you've already received. Incidentally I discovered why we had the meltdown replying to discover channel items the other day - but can't fix it easily. --- include/items.php | 14 +++++++------- include/security.php | 14 ++++++-------- mod/zotfeed.php | 5 +++-- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/include/items.php b/include/items.php index f6efea58c..a0a698836 100755 --- a/include/items.php +++ b/include/items.php @@ -3833,18 +3833,19 @@ function zot_feed($uid,$observer_xchan,$mindate) { $items = array(); if(is_sys_channel($uid)) { - require_once('include/security.php'); - $r = q("SELECT item.*, item.id as item_id from item - WHERE uid in (" . stream_perms_api_uids(PERMS_PUBLIC) . ") AND item_restrict = 0 and id = parent + $r = q("SELECT distinct parent from item + WHERE uid != %d + and uid in (" . stream_perms_api_uids(PERMS_PUBLIC) . ") AND item_restrict = 0 AND (item_flags & %d) and item_private = 0 $sql_extra ORDER BY created ASC $limit", + intval($uid), intval(ITEM_WALL) ); } else { - $r = q("SELECT item.*, item.id as item_id from item - WHERE uid = %d AND item_restrict = 0 and id = parent + $r = q("SELECT distinct parent from item + WHERE uid = %d AND item_restrict = 0 AND (item_flags & %d) $sql_extra ORDER BY created ASC $limit", intval($uid), @@ -3853,7 +3854,7 @@ function zot_feed($uid,$observer_xchan,$mindate) { } if($r) { - $parents_str = ids_to_querystr($r,'id'); + $parents_str = ids_to_querystr($r,'parent'); $items = q("SELECT `item`.*, `item`.`id` AS `item_id` FROM `item` WHERE `item`.`item_restrict` = 0 @@ -3876,7 +3877,6 @@ function zot_feed($uid,$observer_xchan,$mindate) { $result[] = encode_item($item); return $result; - } diff --git a/include/security.php b/include/security.php index 0edbf854d..f15dea302 100644 --- a/include/security.php +++ b/include/security.php @@ -347,10 +347,9 @@ function stream_perms_api_uids($perms_min = PERMS_SITE) { $ret = array(); if(local_user()) $ret[] = local_user(); - $r = q("select channel_id from channel where channel_r_stream > 0 and channel_r_stream <= %d and not (channel_pageflags & %d) and not (channel_pageflags & %d)", + $r = q("select channel_id from channel where channel_r_stream > 0 and channel_r_stream <= %d and not (channel_pageflags & %d)", intval($perms_min), - intval(PAGE_CENSORED), - intval(PAGE_SYSTEM) + intval(PAGE_CENSORED|PAGE_SYSTEM|PAGE_REMOVED) ); if($r) foreach($r as $rr) @@ -364,7 +363,7 @@ function stream_perms_api_uids($perms_min = PERMS_SITE) { $str .= ','; $str .= intval($rr); } -logger('stream_perms_api_uids: ' . $str, LOGGER_DEBUG); + logger('stream_perms_api_uids: ' . $str, LOGGER_DEBUG); return $str; } @@ -373,10 +372,9 @@ function stream_perms_xchans($perms_min = PERMS_SITE) { if(local_user()) $ret[] = get_observer_hash(); - $r = q("select channel_hash from channel where channel_r_stream > 0 and channel_r_stream <= %d and not (channel_pageflags & %d) and not (channel_pageflags & %d)", + $r = q("select channel_hash from channel where channel_r_stream > 0 and channel_r_stream <= %d and not (channel_pageflags & %d)", intval($perms_min), - intval(PAGE_CENSORED), - intval(PAGE_SYSTEM) + intval(PAGE_CENSORED|PAGE_SYETEM|PAGE_REMOVED) ); if($r) foreach($r as $rr) @@ -390,6 +388,6 @@ function stream_perms_xchans($perms_min = PERMS_SITE) { $str .= ','; $str .= "'" . dbesc($rr) . "'"; } -logger('stream_perms_xchans: ' . $str, LOGGER_DEBUG); + logger('stream_perms_xchans: ' . $str, LOGGER_DEBUG); return $str; } diff --git a/mod/zotfeed.php b/mod/zotfeed.php index 1f5dc2cfa..480e886cd 100644 --- a/mod/zotfeed.php +++ b/mod/zotfeed.php @@ -21,8 +21,9 @@ function zotfeed_init(&$a) { $channel_address = ((argc() > 1) ? argv(1) : ''); if($channel_address) { - $r = q("select channel_id, channel_name from channel where channel_address = '%s' limit 1", - dbesc(argv(1)) + $r = q("select channel_id, channel_name from channel where channel_address = '%s' and not (channel_pageflags & %d) limit 1", + dbesc(argv(1)), + intval(PAGE_REMOVED) ); } else { -- cgit v1.2.3