]> git.mxchange.org Git - friendica.git/blobdiff - include/ostatus_conversation.php
ostatus auto completion now seems to work.
[friendica.git] / include / ostatus_conversation.php
index a566733905371d97f1aaddb371d86502c5b24995..2851fdb1f9f5368ca6c21eb1eec958de3da0afbb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-require_once("boot.php");
+/*require_once("boot.php");
 if(@is_null($a)) {
         $a = new App;
 }
@@ -9,7 +9,7 @@ if(is_null($db)) {
         require_once("dba.php");
         $db = new dba($db_host, $db_user, $db_pass, $db_data);
         unset($db_host, $db_user, $db_pass, $db_data);
-};
+};*/
 
 function complete_conversation($itemid, $conversation_url) {
        global $a;
@@ -17,6 +17,8 @@ function complete_conversation($itemid, $conversation_url) {
        require_once('include/html2bbcode.php');
        require_once('include/items.php');
 
+       logger('complete_conversation: completing conversation url '.$conversation_url.' for id '.$itemid);
+
        $messages = q("SELECT `uid`, `parent` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid));
        if (!$messages)
                return;
@@ -33,23 +35,38 @@ function complete_conversation($itemid, $conversation_url) {
        $conversation = q("SELECT `url` FROM `term` WHERE `uid` = %d AND `oid` = %d AND `otype` = %d AND `type` = %d",
                intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CONVERSATION));
 
-       if (!$conversation)
+       if (!$conversation) {
                $r = q("INSERT INTO `term` (`uid`, `oid`, `otype`, `type`, `term`, `url`) VALUES (%d, %d, %d, %d, '%s', '%s')",
-                       intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CONVERSATION), '', dbesc($conversation_url));
+                       intval($message["uid"]), intval($itemid), intval(TERM_OBJ_POST), intval(TERM_CONVERSATION), dbesc(datetime_convert()), dbesc($conversation_url));
+               logger('complete_conversation: Storing conversation url '.$conversation_url.' for id '.$itemid);
+       }
 
        $conv = str_replace("/conversation/", "/api/statusnet/conversation/", $conversation_url).".as";
 
+       logger('complete_conversation: fetching conversation url '.$conversation_url.' for '.$itemid);
        $conv_as = fetch_url($conv);
 
        if ($conv_as) {
                $conv_as = str_replace(',"statusnet:notice_info":', ',"statusnet_notice_info":', $conv_as);
                $conv_as = json_decode($conv_as);
 
+               $first_id = "";
                $items = array_reverse($conv_as->items);
 
                foreach ($items as $single_conv) {
                        //print_r($single_conv);
 
+                       if ($first_id == "") {
+                               $first_id = $single_conv->id;
+
+                               $new_parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
+                                       intval($message["uid"]), dbesc($first_id));
+                               if ($new_parents)
+                                       $parent = $new_parents[0];
+
+                               logger('complete_conversation: adopting new parent '.$parent["id"].' for '.$itemid);
+                       }
+
                        if (isset($single_conv->context->inReplyTo->id))
                                $parent_uri = $single_conv->context->inReplyTo->id;
                        else
@@ -99,14 +116,25 @@ function complete_conversation($itemid, $conversation_url) {
                        if ($arr["coord"] == "")
                                unset($arr["coord"]);
 
-                       item_store($arr);
+                       $newitem = item_store($arr);
+
+                       // If the newly created item is the top item then change the parent settings of the thread
+                       if ($newitem AND ($arr["uri"] == $first_id)) {
+                               logger('complete_conversation: changing parents to parent '.$newitem.' old parent: '.$parent["id"].' new uri: '.$arr["uri"]);
+                               $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s' WHERE `parent` = %d",
+                                       intval($newitem),
+                                       dbesc($arr["uri"]),
+                                       intval($parent["id"]));
+                               logger('complete_conversation: done changing parents to parent '.$newitem);
+                       }
                        //print_r($arr);
                }
        }
 }
-
+/*
 $id = 282481;
 $conversation = "http://identi.ca/conversation/98268580";
 
 complete_conversation($id, $conversation);
+*/
 ?>