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) {
$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;
);
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;
<?php
-require_once("boot.php");
+/*require_once("boot.php");
if(@is_null($a)) {
$a = new App;
}
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;
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;
$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
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);
+*/
?>