From 08d6fe5ae74cc223e4385344f8e0edfde4208a23 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 24 Jan 2011 19:36:20 -0800 Subject: [PATCH] allow RSS for feed contacts, but no comments --- include/Scrape.php | 2 ++ include/items.php | 26 ++++++++++++++++++++++---- mod/follow.php | 5 ++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/include/Scrape.php b/include/Scrape.php index 8478ea4071..e4f7a0878c 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -161,6 +161,8 @@ function scrape_feed($url) { $x = $item->getAttribute('rel'); if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) $ret['feed_atom'] = $item->getAttribute('href'); + if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) + $ret['feed_rss'] = $item->getAttribute('href'); } return $ret; diff --git a/include/items.php b/include/items.php index 5f8264beb8..cbe0e970d1 100644 --- a/include/items.php +++ b/include/items.php @@ -423,19 +423,29 @@ function get_atom_elements($feed,$item) { else $res['private'] = 0; - $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published'); - if($rawcreated) - $res['created'] = unxmlify($rawcreated[0]['data']); $rawlocation = $item->get_item_tags(NAMESPACE_DFRN, 'location'); if($rawlocation) $res['location'] = unxmlify($rawlocation[0]['data']); + $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published'); + if($rawcreated) + $res['created'] = unxmlify($rawcreated[0]['data']); + + $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated'); if($rawedited) $res['edited'] = unxmlify($rawcreated[0]['data']); + + if(! $res['created']) + $res['created'] = $item->get_date(); + + if(! $res['edited']) + $res['edited'] = $item->get_date(); + + $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner'); if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) $res['owner-name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']); @@ -1155,6 +1165,10 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) { ); $datarray['last-child'] = 1; } + if(($contact['network'] === 'feed') || (! strlen($contact['poll']))) { + // one way feed - no remote comment ability + $datarray['last-child'] = 0; + } $datarray['parent-uri'] = $parent_uri; $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $contact['id']; @@ -1207,6 +1221,11 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) { $datarray['last-child'] = 1; } + if(($contact['network'] === 'feed') || (! strlen($contact['poll']))) { + // one way feed - no remote comment ability + $datarray['last-child'] = 0; + } + $datarray['parent-uri'] = $item_id; $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $contact['id']; @@ -1216,7 +1235,6 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) { } } } - } function new_follower($importer,$contact,$datarray,$item) { diff --git a/mod/follow.php b/mod/follow.php index e5eb7763bf..bad2e74f9c 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -74,8 +74,8 @@ function follow_post(&$a) { $ret = scrape_feed($url); - if(count($ret) && $ret['feed_atom']) { - $poll = $ret['feed_atom']; + if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) { + $poll = ((x($ret,'feed_atom')) ? $ret['feed_atom'] : $ret['feed_rss']); $vcard = array(); require_once('simplepie/simplepie.inc'); $feed = new SimplePie(); @@ -115,7 +115,6 @@ function follow_post(&$a) { logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true)); - // do we have enough information? if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {