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.

This commit is contained in:
friendica 2014-04-17 20:03:28 -07:00
parent 083cf12d48
commit 30e2e32f19
3 changed files with 16 additions and 17 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 {