]> git.mxchange.org Git - friendica.git/commitdiff
ostatus auto completion now seems to work.
authorMichael Vogel <icarus@dabo.de>
Mon, 28 Jan 2013 00:16:51 +0000 (01:16 +0100)
committerMichael Vogel <icarus@dabo.de>
Mon, 28 Jan 2013 00:16:51 +0000 (01:16 +0100)
include/items.php
include/ostatus_conversation.php

index 94835d7ad1443dc368cbc3517fce8d74ef12b361..13566075badccc2a56b23b0cccb09d025dc0de21 100755 (executable)
@@ -8,6 +8,7 @@ require_once('include/Photo.php');
 require_once('include/tags.php');
 require_once('include/text.php');
 require_once('include/email.php');
+require_once('include/ostatus_conversation.php');
 
 function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) {
 
@@ -1098,7 +1099,6 @@ function item_store($arr,$force_parent = false) {
                $current_post = $r[0]['id'];
                logger('item_store: created item ' . $current_post);
                create_tags_from_item($r[0]['id']);
-               // ostatus_conversation
        } else {
                logger('item_store: could not locate created item');
                return 0;
@@ -1135,6 +1135,10 @@ function item_store($arr,$force_parent = false) {
        );
        create_tags_from_item($current_post);
 
+       // Complete ostatus threads
+       if ($ostatus_conversation)
+               complete_conversation($current_post, $ostatus_conversation);
+
         $arr['id'] = $current_post;
         $arr['parent'] = $parent_id;
         $arr['allow_cid'] = $allow_cid;
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);
+*/
 ?>