mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 03:35:13 +00:00
Merge branch 'dev' of /home/macgirvin/./streams into dev
This commit is contained in:
commit
8de852c189
3 changed files with 3 additions and 117 deletions
|
@ -1922,13 +1922,13 @@ class Libzot
|
|||
$prnt = ((strpos($arr['parent_mid'], 'token=') !== false) ? substr($arr['parent_mid'], 0, strpos($arr['parent_mid'], '?')) : '');
|
||||
|
||||
$r = q(
|
||||
"select route, id, parent_mid, mid, owner_xchan, item_private, obj_type from item where mid = '%s' and uid = %d limit 1",
|
||||
"select id, parent_mid, mid, owner_xchan, item_private, obj_type from item where mid = '%s' and uid = %d limit 1",
|
||||
dbesc($arr['parent_mid']),
|
||||
intval($channel['channel_id'])
|
||||
);
|
||||
if (!$r) {
|
||||
$r = q(
|
||||
"select route, id, parent_mid, mid, owner_xchan, item_private, obj_type from item where mid = '%s' and uid = %d limit 1",
|
||||
"select id, parent_mid, mid, owner_xchan, item_private, obj_type from item where mid = '%s' and uid = %d limit 1",
|
||||
dbesc($prnt),
|
||||
intval($channel['channel_id'])
|
||||
);
|
||||
|
@ -1949,8 +1949,6 @@ class Libzot
|
|||
}
|
||||
|
||||
if ($r[0]['obj_type'] === 'Question') {
|
||||
// route checking doesn't work correctly here because we've changed the privacy
|
||||
$r[0]['route'] = EMPTY_STR;
|
||||
// If this is a poll response, convert the obj_type to our (internal-only) "Answer" type
|
||||
if ($arr['obj_type'] === 'Note' && $arr['title'] && (!$arr['content'])) {
|
||||
$arr['obj_type'] = 'Answer';
|
||||
|
@ -2000,53 +1998,6 @@ class Libzot
|
|||
continue;
|
||||
}
|
||||
|
||||
|
||||
if ($relay || $friendofriend || (intval($r[0]['item_private']) === 0 && intval($arr['item_private']) === 0)) {
|
||||
// reset the route in case it travelled a great distance upstream
|
||||
// use our parent's route so when we go back downstream we'll match
|
||||
// with whatever route our parent has.
|
||||
// Also friend-of-friend conversations may have been imported without a route,
|
||||
// but we are now getting comments via listener delivery
|
||||
// and if there is no privacy on this or the parent, we don't care about the route,
|
||||
// so just set the owner and route accordingly.
|
||||
$arr['route'] = $r[0]['route'];
|
||||
$arr['owner_xchan'] = $r[0]['owner_xchan'];
|
||||
} else {
|
||||
// going downstream check that we have the same upstream provider that
|
||||
// sent it to us originally. Ignore it if it came from another source
|
||||
// (with potentially different permissions).
|
||||
// only compare the last hop since it could have arrived at the last location any number of ways.
|
||||
// Always accept empty routes and firehose items (route contains 'undefined') .
|
||||
|
||||
$existing_route = explode(',', $r[0]['route']);
|
||||
$routes = count($existing_route);
|
||||
if ($routes) {
|
||||
$last_hop = array_pop($existing_route);
|
||||
$last_prior_route = implode(',', $existing_route);
|
||||
} else {
|
||||
$last_hop = '';
|
||||
$last_prior_route = '';
|
||||
}
|
||||
|
||||
if (in_array('undefined', $existing_route) || $last_hop == 'undefined' || $sender == 'undefined') {
|
||||
$last_hop = '';
|
||||
}
|
||||
|
||||
$current_route = ((isset($arr['route']) && $arr['route']) ? $arr['route'] . ',' : '') . $sender;
|
||||
|
||||
if ($last_hop && $last_hop != $sender) {
|
||||
logger('comment route mismatch: parent route = ' . $r[0]['route'] . ' expected = ' . $current_route, LOGGER_DEBUG);
|
||||
logger('comment route mismatch: parent msg = ' . $r[0]['id'], LOGGER_DEBUG);
|
||||
$DR->update('comment route mismatch');
|
||||
$result[] = $DR->get();
|
||||
continue;
|
||||
}
|
||||
|
||||
// we'll add sender onto this when we deliver it. $last_prior_route now has the previously stored route
|
||||
// *except* for the sender which would've been the last hop before it got to us.
|
||||
|
||||
$arr['route'] = $last_prior_route;
|
||||
}
|
||||
}
|
||||
|
||||
// This is used to fetch allow/deny rules if either the sender
|
||||
|
@ -2106,9 +2057,6 @@ class Libzot
|
|||
$item_result = self::update_imported_item($sender, $arr, $r[0], $channel['channel_id'], $tag_delivery);
|
||||
$DR->update('updated');
|
||||
$result[] = $DR->get();
|
||||
if (!$relay) {
|
||||
add_source_route($item_id, $sender);
|
||||
}
|
||||
} else {
|
||||
$DR->update('update ignored');
|
||||
$result[] = $DR->get();
|
||||
|
@ -2180,10 +2128,6 @@ class Libzot
|
|||
* * \e array \b channel
|
||||
*/
|
||||
Hook::call('activity_received', $parr);
|
||||
// don't add a source route if it's a relay or later recipients will get a route mismatch
|
||||
if (!$relay) {
|
||||
add_source_route($item_id, $sender);
|
||||
}
|
||||
}
|
||||
$DR->update(($item_id) ? 'posted' : 'storage failed: ' . $item_result['message']);
|
||||
$result[] = $DR->get();
|
||||
|
|
|
@ -510,7 +510,6 @@ class Item extends Controller
|
|||
$item_flags = $item_restrict = 0;
|
||||
$expires = NULL_DATE;
|
||||
|
||||
$route = '';
|
||||
$parent_item = null;
|
||||
$parent_contact = null;
|
||||
$thr_parent = '';
|
||||
|
@ -590,7 +589,6 @@ class Item extends Controller
|
|||
|
||||
$thr_parent = $parent_mid;
|
||||
|
||||
$route = $parent_item['route'];
|
||||
}
|
||||
|
||||
if ($parent_item && isset($parent_item['replyto']) && $parent_item['replyto']) {
|
||||
|
@ -1462,7 +1460,6 @@ class Item extends Controller
|
|||
$datarray['comment_policy'] = ((is_numeric($comment_policy)) ? map_scope($comment_policy) : $comment_policy); // only map scope if it is numeric, otherwise use what we have
|
||||
$datarray['term'] = $post_tags;
|
||||
$datarray['plink'] = $plink;
|
||||
$datarray['route'] = $route;
|
||||
$datarray['replyto'] = $replyto;
|
||||
|
||||
// A specific ACL over-rides public_policy completely
|
||||
|
|
|
@ -95,8 +95,7 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
|
|||
// a different clone. We need to get the post to that hub.
|
||||
|
||||
// The post may be private by virtue of not being visible to anybody on the internet,
|
||||
// but there are no envelope recipients, so set this to false. Delivery is controlled
|
||||
// by the directives in $item['public_policy'].
|
||||
// but there are no envelope recipients, so set this to false.
|
||||
|
||||
$private_envelope = false;
|
||||
|
||||
|
@ -165,19 +164,6 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
|
|||
|
||||
$recipients = check_list_permissions($item['uid'],$recipients,'deliver_stream');
|
||||
|
||||
// remove any upstream recipients from our list.
|
||||
// If it is ourself we'll add it back in a second.
|
||||
// This should prevent complex delivery chains from getting overly complex by not
|
||||
// sending to anybody who is on our list of those who sent it to us.
|
||||
|
||||
if ($item['route']) {
|
||||
$route = explode(',',$item['route']);
|
||||
if (count($route)) {
|
||||
$route = array_unique($route);
|
||||
$recipients = array_diff($recipients,$route);
|
||||
}
|
||||
}
|
||||
|
||||
// add ourself just in case we have nomadic clones that need to get a copy.
|
||||
|
||||
$recipients[] = $item['author_xchan'];
|
||||
|
@ -386,43 +372,6 @@ function absolutely_no_comments($item) {
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Adds $hash to the item source route specified by $iid.
|
||||
*
|
||||
* $item['route'] contains a comma-separated list of xchans that sent the current message,
|
||||
* somewhat analogous to the * Received: header line in email. We can use this to perform
|
||||
* loop detection and to avoid sending a particular item to any "upstream" sender (they
|
||||
* already have a copy because they sent it to us).
|
||||
*
|
||||
* Modifies item in the database pointed to by $iid.
|
||||
*
|
||||
* @param integer $iid
|
||||
* item['id'] of target item
|
||||
* @param string $hash
|
||||
* xchan_hash of the channel that sent the item
|
||||
*/
|
||||
function add_source_route($iid, $hash) {
|
||||
// logger('add_source_route ' . $iid . ' ' . $hash, LOGGER_DEBUG);
|
||||
|
||||
if ((! $iid) || (! $hash)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$r = q("select route from item where id = %d limit 1",
|
||||
intval($iid)
|
||||
);
|
||||
if ($r) {
|
||||
$new_route = (($r[0]['route']) ? $r[0]['route'] . ',' : '') . $hash;
|
||||
q("update item set route = '%s' where id = %d",
|
||||
dbesc($new_route),
|
||||
intval($iid)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Post an activity.
|
||||
*
|
||||
|
@ -686,7 +635,6 @@ function get_item_elements($x,$allow_code = false) {
|
|||
|
||||
$arr['uuid'] = (($x['uuid']) ? htmlspecialchars($x['uuid'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
$arr['app'] = (($x['app']) ? htmlspecialchars($x['app'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
$arr['route'] = (($x['route']) ? htmlspecialchars($x['route'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
$arr['mid'] = (($x['message_id']) ? htmlspecialchars($x['message_id'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
$arr['parent_mid'] = (($x['message_top']) ? htmlspecialchars($x['message_top'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
$arr['thr_parent'] = (($x['message_parent']) ? htmlspecialchars($x['message_parent'], ENT_COMPAT,'UTF-8',false) : '');
|
||||
|
@ -1117,7 +1065,6 @@ function encode_item($item,$mirror = false) {
|
|||
$x['location'] = $item['location'];
|
||||
$x['longlat'] = $item['coord'];
|
||||
$x['signature'] = $item['sig'];
|
||||
$x['route'] = $item['route'];
|
||||
$x['replyto'] = $item['replyto'];
|
||||
$x['owner'] = encode_item_xchan($item['owner']);
|
||||
$x['author'] = encode_item_xchan($item['author']);
|
||||
|
@ -1614,7 +1561,6 @@ function item_store($arr, $allow_exec = false, $deliver = true, $linkid = true)
|
|||
$arr['deny_cid'] = ((x($arr,'deny_cid')) ? trim($arr['deny_cid']) : '');
|
||||
$arr['deny_gid'] = ((x($arr,'deny_gid')) ? trim($arr['deny_gid']) : '');
|
||||
$arr['postopts'] = ((x($arr,'postopts')) ? trim($arr['postopts']) : '');
|
||||
$arr['route'] = ((x($arr,'route')) ? trim($arr['route']) : '');
|
||||
$arr['uuid'] = ((x($arr,'uuid')) ? trim($arr['uuid']) : '');
|
||||
$arr['item_private'] = ((x($arr,'item_private')) ? intval($arr['item_private']) : 0 );
|
||||
$arr['item_wall'] = ((x($arr,'item_wall')) ? intval($arr['item_wall']) : 0 );
|
||||
|
@ -2227,7 +2173,6 @@ function item_store_update($arr, $allow_exec = false, $deliver = true, $linkid =
|
|||
|
||||
$arr['edited'] = ((x($arr,'edited') !== false) ? datetime_convert('UTC','UTC',$arr['edited']) : datetime_convert());
|
||||
$arr['revision'] = ((x($arr,'revision') && $arr['revision'] > 0) ? intval($arr['revision']) : 0);
|
||||
$arr['route'] = ((array_key_exists('route',$arr)) ? trim($arr['route']) : $orig[0]['route']);
|
||||
|
||||
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : $orig[0]['location']);
|
||||
$arr['uuid'] = ((x($arr,'uuid')) ? notags(trim($arr['uuid'])) : $orig[0]['uuid']);
|
||||
|
|
Loading…
Reference in a new issue