diff options
-rw-r--r-- | include/feedutils.php | 12 | ||||
-rwxr-xr-x | include/items.php | 13 |
2 files changed, 23 insertions, 2 deletions
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) { |