ostatus auto completion now seems to work.

This commit is contained in:
Michael Vogel 2013-01-28 01:16:51 +01:00
parent bc972e16ce
commit e668fece10
2 changed files with 39 additions and 7 deletions

View file

@ -8,6 +8,7 @@ require_once('include/Photo.php');
require_once('include/tags.php'); require_once('include/tags.php');
require_once('include/text.php'); require_once('include/text.php');
require_once('include/email.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) { 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']; $current_post = $r[0]['id'];
logger('item_store: created item ' . $current_post); logger('item_store: created item ' . $current_post);
create_tags_from_item($r[0]['id']); create_tags_from_item($r[0]['id']);
// ostatus_conversation
} else { } else {
logger('item_store: could not locate created item'); logger('item_store: could not locate created item');
return 0; return 0;
@ -1135,6 +1135,10 @@ function item_store($arr,$force_parent = false) {
); );
create_tags_from_item($current_post); create_tags_from_item($current_post);
// Complete ostatus threads
if ($ostatus_conversation)
complete_conversation($current_post, $ostatus_conversation);
$arr['id'] = $current_post; $arr['id'] = $current_post;
$arr['parent'] = $parent_id; $arr['parent'] = $parent_id;
$arr['allow_cid'] = $allow_cid; $arr['allow_cid'] = $allow_cid;

View file

@ -1,5 +1,5 @@
<?php <?php
require_once("boot.php"); /*require_once("boot.php");
if(@is_null($a)) { if(@is_null($a)) {
$a = new App; $a = new App;
} }
@ -9,7 +9,7 @@ if(is_null($db)) {
require_once("dba.php"); require_once("dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data); $db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data); unset($db_host, $db_user, $db_pass, $db_data);
}; };*/
function complete_conversation($itemid, $conversation_url) { function complete_conversation($itemid, $conversation_url) {
global $a; global $a;
@ -17,6 +17,8 @@ function complete_conversation($itemid, $conversation_url) {
require_once('include/html2bbcode.php'); require_once('include/html2bbcode.php');
require_once('include/items.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)); $messages = q("SELECT `uid`, `parent` FROM `item` WHERE `id` = %d LIMIT 1", intval($itemid));
if (!$messages) if (!$messages)
return; 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", $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)); 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')", $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"; $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); $conv_as = fetch_url($conv);
if ($conv_as) { if ($conv_as) {
$conv_as = str_replace(',"statusnet:notice_info":', ',"statusnet_notice_info":', $conv_as); $conv_as = str_replace(',"statusnet:notice_info":', ',"statusnet_notice_info":', $conv_as);
$conv_as = json_decode($conv_as); $conv_as = json_decode($conv_as);
$first_id = "";
$items = array_reverse($conv_as->items); $items = array_reverse($conv_as->items);
foreach ($items as $single_conv) { foreach ($items as $single_conv) {
//print_r($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)) if (isset($single_conv->context->inReplyTo->id))
$parent_uri = $single_conv->context->inReplyTo->id; $parent_uri = $single_conv->context->inReplyTo->id;
else else
@ -99,14 +116,25 @@ function complete_conversation($itemid, $conversation_url) {
if ($arr["coord"] == "") if ($arr["coord"] == "")
unset($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); //print_r($arr);
} }
} }
} }
/*
$id = 282481; $id = 282481;
$conversation = "http://identi.ca/conversation/98268580"; $conversation = "http://identi.ca/conversation/98268580";
complete_conversation($id, $conversation); complete_conversation($id, $conversation);
*/
?> ?>