aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/feedutils.php12
-rwxr-xr-xinclude/items.php13
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) {