]> git.mxchange.org Git - friendica.git/commitdiff
Look for links to diaspora posts and try to fetch them if they aren't on the system.
authorMichael Vogel <icarus@dabo.de>
Mon, 2 Feb 2015 23:29:21 +0000 (00:29 +0100)
committerMichael Vogel <icarus@dabo.de>
Mon, 2 Feb 2015 23:29:21 +0000 (00:29 +0100)
include/diaspora.php

index 67d36e70f295fbe42dedadaf49fd852d18400f2d..88a8e5e55b86ca3c72a74a15298b69409096219e 100755 (executable)
@@ -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) {