From c6b00f72305d467cb5eda32ed6499f81610d4338 Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 3 Feb 2011 17:40:04 -0800 Subject: [PATCH] allow parentless items from SN - add more tracing on notify failures --- include/items.php | 23 ++++++++++++++++++----- mod/dfrn_notify.php | 13 ++++++++++--- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/include/items.php b/include/items.php index 9f693e60d3..45d8b62c0b 100644 --- a/include/items.php +++ b/include/items.php @@ -611,7 +611,7 @@ function encode_rel_links($links) { return xmlify($o); } -function item_store($arr) { +function item_store($arr,$force_parent = false) { if($arr['gravity']) $arr['gravity'] = intval($arr['gravity']); @@ -695,8 +695,20 @@ function item_store($arr) { $deny_gid = $r[0]['deny_gid']; } else { - logger('item_store: item parent was not found - ignoring item'); - return 0; + + // Allow one to see reply tweets from status.net even when + // we don't have or can't see the original post. + + if($force_parent) { + logger('item_store: $force_parent=true, reply converted to top-level post.'); + $parent_id = 0; + $arr['thr-parent'] = $arr['parent-uri']; + $arr['parent-uri'] = $arr['uri']; + } + else { + logger('item_store: item parent was not found - ignoring item'); + return 0; + } } } @@ -1194,8 +1206,9 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) { continue; } $datarray = get_atom_elements($feed,$item); - + $force_parent = false; if($contact['network'] === 'stat') { + $force_parent = true; if(strlen($datarray['title'])) unset($datarray['title']); $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d", @@ -1218,7 +1231,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) { $datarray['gravity'] = GRAVITY_LIKE; } - $r = item_store($datarray); + $r = item_store($datarray,$force_parent); continue; } diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index cad7f95637..56b2c0bb13 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -24,7 +24,13 @@ function dfrn_notify_post(&$a) { dbesc($challenge) ); if(! count($r)) { - logger('dfrn_notify: could not match challenge to dfrn_id ' . $dfrn_id); + logger('dfrn_notify: could not match challenge to dfrn_id ' . $dfrn_id . ' challenge=' . $challenge); + + // apply some extra tracing + dbg(1); + q("SELECT * FROM `challenge` WHERE 1"); + dbg(0); + xml_status(3); } @@ -468,12 +474,13 @@ function dfrn_notify_content(&$a) { $r = q("DELETE FROM `challenge` WHERE `expire` < " . intval(time())); $r = q("INSERT INTO `challenge` ( `challenge`, `dfrn-id`, `expire` ) - VALUES( '%s', '%s', '%s') ", + VALUES( '%s', '%s', %d ) ", dbesc($hash), dbesc($dfrn_id), - intval(time() + 60 ) + intval(time() + 90 ) ); + logger('dfrn_notify: challenge=' . $hash . ' return value=' . $r); $sql_extra = ''; switch($direction) {