From 86a968002d1efc4a8629d3080a9cf38eb5baabe8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 3 Feb 2015 00:29:21 +0100 Subject: [PATCH] Look for links to diaspora posts and try to fetch them if they aren't on the system. --- include/diaspora.php | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/include/diaspora.php b/include/diaspora.php index 67d36e70f2..88a8e5e55b 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -895,15 +895,38 @@ function diaspora_post($importer,$xml,$msg) { $datarray['visible'] = ((strlen($body)) ? 1 : 0); + DiasporaFetchGuid($datarray); $message_id = item_store($datarray); return; } +function DiasporaFetchGuid($item) { + preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", + function ($match) use ($item){ + return(DiasporaFetchGuidSub($match, $item)); + },$item["body"]); +} + +function DiasporaFetchGuidSub($match, $item) { + $a = get_app(); + + $author = parse_url($item["author-link"]); + $authorserver = $author["scheme"]."://".$author["host"]; + + $owner = parse_url($item["owner-link"]); + $ownerserver = $owner["scheme"]."://".$owner["host"]; + + if (!diaspora_store_by_guid($match[1], $authorserver)) + diaspora_store_by_guid($match[1], $ownerserver); +} + function diaspora_store_by_guid($guid, $server) { require_once("include/Contact.php"); + logger("fetching item ".$guid." from ".$server, LOGGER_DEBUG); + $item = diaspora_fetch_message($guid, $server); if (!$item) @@ -923,7 +946,7 @@ function diaspora_store_by_guid($guid, $server) { dbesc($guid) ); if(count($r)) - return true; + return $r[0]["id"]; $person = find_diaspora_person_by_handle($author); @@ -950,6 +973,7 @@ function diaspora_store_by_guid($guid, $server) { $datarray['app'] = $app; $datarray['visible'] = ((strlen($body)) ? 1 : 0); + DiasporaFetchGuid($datarray); $message_id = item_store($datarray); // To-Do: @@ -1235,11 +1259,13 @@ function diaspora_reshare($importer,$xml,$msg) { $datarray2['owner-avatar'] = $datarray2['author-avatar']; $datarray2['body'] = $body; + DiasporaFetchGuid($datarray2); $message_id = item_store($datarray2); logger("Store original item ".$orig_guid." under message id ".$message_id); } + DiasporaFetchGuid($datarray); $message_id = item_store($datarray); return; @@ -1332,6 +1358,7 @@ function diaspora_asphoto($importer,$xml,$msg) { $datarray['app'] = 'Diaspora/Cubbi.es'; + DiasporaFetchGuid($datarray); $message_id = item_store($datarray); //if($message_id) { @@ -1512,6 +1539,7 @@ function diaspora_comment($importer,$xml,$msg) { if(($parent_item['origin']) && (! $parent_author_signature)) $datarray['app'] = 'Diaspora'; + DiasporaFetchGuid($datarray); $message_id = item_store($datarray); //if($message_id) { -- 2.39.5