return xmlify($o);
}
-function item_store($arr) {
+function item_store($arr,$force_parent = false) {
if($arr['gravity'])
$arr['gravity'] = intval($arr['gravity']);
$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;
+ }
}
}
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",
$datarray['gravity'] = GRAVITY_LIKE;
}
- $r = item_store($datarray);
+ $r = item_store($datarray,$force_parent);
continue;
}
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);
}
$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) {