From 941db04260b32e41a4302b7c7accc2c13c809d4a Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 25 Nov 2020 13:52:27 +0000 Subject: add a uuid version 5 based uuid to imported feeds. if rewrite author for sourced items, also rewrite mid to be fetchable --- include/feedutils.php | 12 ++++++++++++ include/items.php | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/feedutils.php b/include/feedutils.php index 0a9af7ee1..5f5f563f8 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -13,6 +13,10 @@ * @param array $params associative array which configures the feed * @return string with an atom feed */ + +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; + function get_public_feed($channel, $params) { if(! $params) @@ -431,6 +435,13 @@ function get_atom_elements($feed, $item) { $res['plink'] = unxmlify($item->get_link(0)); $res['item_rss'] = 1; + try { + $uuid = Uuid::uuid5(Uuid::NAMESPACE_URL, $res['plink'])->toString(); + } catch (UnsatisfiedDependencyException $e) { + $uuid = md5($res['plink']); + } + + $res['uuid'] = $uuid; $summary = unxmlify($item->get_description(true)); @@ -1516,6 +1527,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { continue; } + } } } diff --git a/include/items.php b/include/items.php index e10b2be0f..a027be4b2 100755 --- a/include/items.php +++ b/include/items.php @@ -3179,8 +3179,18 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false if($rewrite_author) { $item['author_xchan'] = $channel['channel_hash']; - $r = q("update item set author_xchan = '%s' where id = %d", + //if it's a toplevel rss item we will also rewrite the mid to something fetchable + if($item['item_rss'] && $item['item_thread_top']) { + $item['mid'] = z_root() . '/item/' . $item['uuid']; + $item['parent_mid'] = $item['mid']; + $item['thr_parent'] = $item['mid']; + } + + $r = q("UPDATE item SET author_xchan = '%s', mid = '%s', parent_mid = '%s', thr_parent = '%s' WHERE id = %d", dbesc($item['author_xchan']), + dbesc($item['mid']), + dbesc($item['parent_mid']), + dbesc($item['thr_parent']), intval($item_id) ); } @@ -3235,7 +3245,6 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false $arr['item_origin'] = 1; $arr['item_wall'] = 1; - $arr['item_thread_top'] = 1; if (strpos($item['body'], "[/share]") !== false) { -- cgit v1.2.3