diff options
-rw-r--r-- | include/feedutils.php | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/include/feedutils.php b/include/feedutils.php index 2f3927748..0d7e1d6c2 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -259,7 +259,7 @@ function get_atom_elements($feed, $item, &$author) { if(substr($author['author_link'],-1,1) == '/') $author['author_link'] = substr($author['author_link'],0,-1); - $res['mid'] = unxmlify($item->get_id()); + $res['mid'] = normalise_id(unxmlify($item->get_id())); $res['title'] = unxmlify($item->get_title()); $res['body'] = unxmlify($item->get_content()); $res['plink'] = unxmlify($item->get_link(0)); @@ -390,7 +390,7 @@ function get_atom_elements($feed, $item, &$author) { $rawcnv = $item->get_item_tags(NAMESPACE_OSTATUS, 'conversation'); if($rawcnv) { - $ostatus_conversation = unxmlify($rawcnv[0]['attribs']['']['ref']); + $ostatus_conversation = normalise_id(unxmlify($rawcnv[0]['attribs']['']['ref'])); set_iconfig($res,'ostatus','conversation',$ostatus_conversation,true); } @@ -938,7 +938,6 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { foreach($items as $item) { $is_reply = false; - $item_id = normalise_id($item->get_id()); logger('processing ' . $item->get_id(), LOGGER_DEBUG); @@ -955,12 +954,11 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Have we seen it? If not, import it. - $item_id = normalise_id($item->get_id()); $author = array(); $datarray = get_atom_elements($feed,$item,$author); - if($datarray['mid']) - $datarray['mid'] = normalise_id($item->get_id()); + if(! $datarray['mid']) + continue; if($contact['xchan_network'] === 'rss') { $datarray['public_policy'] = 'specific'; @@ -987,7 +985,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $datarray['owner_xchan'] = $contact['xchan_hash']; $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1", - dbesc($item_id), + dbesc($datarray['mid']), intval($importer['channel_id']) ); @@ -1010,6 +1008,9 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $pmid = ''; $conv_id = get_iconfig($datarray,'ostatus','conversation'); + // match conversations - first try ostatus:conversation + // next try thr:in_reply_to + if($conv_id) { $c = q("select parent_mid from item left join iconfig on item.id = iconfig.iid where iconfig.cat = 'ostatus' and iconfig.k = 'conversation' and iconfig.v = '%s' and item.uid = %d order by item.id limit 1", dbesc($conv_id), @@ -1020,7 +1021,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $datarray['parent_mid'] = $pmid; } } - else { + if(! $pmid) { $x = q("select parent_mid from item where mid = '%s' and uid = %d limit 1", dbesc($parent_mid), intval($importer['channel_id']) @@ -1056,12 +1057,11 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // Head post of a conversation. Have we seen it? If not, import it. - $item_id = normalise_id($item->get_id()); $author = array(); $datarray = get_atom_elements($feed,$item,$author); - if($datarray['mid']) - $datarray['mid'] = normalise_id($item->get_id()); + if(! $datarray['mid']) + continue; if($contact['xchan_network'] === 'rss') { $datarray['public_policy'] = 'specific'; @@ -1116,7 +1116,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1", - dbesc($item_id), + dbesc($datarray['mid']), intval($importer['channel_id']) ); @@ -1136,7 +1136,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { continue; } - $datarray['parent_mid'] = $item_id; + $datarray['parent_mid'] = $datarray['mid']; $datarray['uid'] = $importer['channel_id']; $datarray['aid'] = $importer['channel_account_id']; |