diff options
-rw-r--r-- | Zotlabs/Daemon/Cron.php | 3 | ||||
-rw-r--r-- | Zotlabs/Module/Zotfeed.php | 49 | ||||
-rwxr-xr-x | include/items.php | 31 |
3 files changed, 32 insertions, 51 deletions
diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index 2c0422ddd..4732dfa75 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -215,9 +215,10 @@ class Cron { // pull in some public posts - $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false; +/* $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false; if (!$disable_discover_tab) Master::Summon(array('Externals')); +*/ $restart = false; diff --git a/Zotlabs/Module/Zotfeed.php b/Zotlabs/Module/Zotfeed.php index 17b0e3057..2566924aa 100644 --- a/Zotlabs/Module/Zotfeed.php +++ b/Zotlabs/Module/Zotfeed.php @@ -6,13 +6,13 @@ use App; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; use Zotlabs\Lib\Config; +use Zotlabs\Lib\ThreadListener; use Zotlabs\Web\Controller; use Zotlabs\Web\HTTPSig; class Zotfeed extends Controller { function init() { - if (ActivityStreams::is_as_request()) { if (observer_prohibited(true)) { @@ -24,6 +24,10 @@ class Zotfeed extends Controller { killme(); } + if (intval($channel['channel_system'])) { + killme(); + } + $sigdata = HTTPSig::verify(($_SERVER['REQUEST_METHOD'] === 'POST') ? file_get_contents('php://input') : EMPTY_STR); if ($sigdata['portable_id'] && $sigdata['header_valid']) { $portable_id = $sigdata['portable_id']; @@ -52,28 +56,6 @@ class Zotfeed extends Controller { $params['cat'] = ((x($_REQUEST, 'cat')) ? escape_tags($_REQUEST['cat']) : ''); $params['compat'] = 1; - if (intval($channel['channel_system'])) { - $total = zot_feed($channel['channel_id'], $observer_hash, ['total' => true]); - - if ($total) { - App::set_pager_total($total); - App::set_pager_itemspage(30); - } - - if (App::$pager['unset'] && $total > 30) { - $ret = Activity::paged_collection_init($total, App::$query_string); - - } - else { - $items = zot_feed($channel['channel_id'], $observer_hash, []); - $ret = Activity::encode_item_collection($items, App::$query_string, 'OrderedCollection', $total); - } - - as_return_and_die($ret, $channel); - - return; - } - $total = items_fetch( [ 'total' => true, @@ -114,7 +96,26 @@ class Zotfeed extends Controller { 'compat' => $params['compat'] ], $channel, $observer_hash, CLIENT_MODE_NORMAL, App::$module ); - $ret = Activity::encode_item_collection($items, App::$query_string, 'OrderedCollection', $total); + + if ($items && $observer_hash) { + + // check to see if this observer is a connection. If not, register any items + // belonging to this channel for notification of deletion/expiration + + $x = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s'", + intval($channel['channel_id']), + dbesc($observer_hash) + ); + if (!$x) { + foreach ($items as $item) { + if (strpos($item['mid'], z_root()) === 0) { + ThreadListener::store($item['mid'], $observer_hash); + } + } + } + } + + $ret = Activity::encode_item_collection($items, App::$query_string, 'OrderedCollection', $total); } as_return_and_die($ret, $channel); diff --git a/include/items.php b/include/items.php index 7229b66eb..83108455f 100755 --- a/include/items.php +++ b/include/items.php @@ -4375,38 +4375,17 @@ function zot_feed($uid, $observer_hash, $arr) { $item_normal = item_normal(); if (is_sys_channel($uid)) { + $nonsys_uids = q("SELECT channel_id FROM channel WHERE channel_system = 0"); $nonsys_uids_str = ids_to_querystr($nonsys_uids, 'channel_id'); - if ($arr['total']) { - $items = q("SELECT count(created) AS total FROM item - WHERE uid IN ( %s ) - AND item_private = 0 - $sql_extra $item_normal", - dbesc($nonsys_uids_str) - ); - if ($items) { - return intval($items[0]['total']); - } - return 0; - } - - $itemspage = (($uid) ? get_pconfig($uid, 'system', 'itemspage') : 30); - App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 30)); - $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start'])); - - $items = q("SELECT item.*, item.id AS item_id FROM item + $r = q("SELECT parent, postopts FROM item WHERE uid IN ( %s ) AND item_private = 0 - $item_normal $sql_extra - ORDER BY item.created DESC $pager_sql", + $item_normal + $sql_extra ORDER BY created ASC $limit", dbesc($nonsys_uids_str) ); - - xchan_query($items); - $items = fetch_post_tags($items, true); - - return $items; } else { $r = q("SELECT parent, postopts FROM item @@ -4432,6 +4411,7 @@ function zot_feed($uid, $observer_hash, $arr) { $parents_str = ids_to_querystr($parents, 'parent'); $sys_query = ((is_sys_channel($uid)) ? $sql_extra : ''); + $item_normal = item_normal(); $items = q("SELECT item.*, item.id AS item_id FROM item WHERE item.parent IN ( %s ) $item_normal $sys_query ", @@ -4456,7 +4436,6 @@ function zot_feed($uid, $observer_hash, $arr) { return $result; } - function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = CLIENT_MODE_NORMAL,$module = 'network') { $result = array('success' => false); |