aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2021-01-24 19:55:29 +0000
committerMario <mario@mariovavti.com>2021-01-24 19:55:29 +0000
commit2035828042e50f2c23f55d80b19fb898b170e6e5 (patch)
tree77d9b9e54248fd297ed98acac8f17a04faf76045
parent4fbedb67508fd670493bf3be4f6a91160c4f1024 (diff)
downloadvolse-hubzilla-2035828042e50f2c23f55d80b19fb898b170e6e5.tar.gz
volse-hubzilla-2035828042e50f2c23f55d80b19fb898b170e6e5.tar.bz2
volse-hubzilla-2035828042e50f2c23f55d80b19fb898b170e6e5.zip
revert externals/zotfeed functionality due to scaling issues. Save zotfeed consumers that are not our contacts in thread listeners
-rw-r--r--Zotlabs/Daemon/Cron.php3
-rw-r--r--Zotlabs/Module/Zotfeed.php49
-rwxr-xr-xinclude/items.php31
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);