allow RSS for feed contacts, but no comments

This commit is contained in:
Friendika 2011-01-24 19:36:20 -08:00
parent 8e3c2634cb
commit 08d6fe5ae7
3 changed files with 26 additions and 7 deletions

View file

@ -161,6 +161,8 @@ function scrape_feed($url) {
$x = $item->getAttribute('rel'); $x = $item->getAttribute('rel');
if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml'))
$ret['feed_atom'] = $item->getAttribute('href'); $ret['feed_atom'] = $item->getAttribute('href');
if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml'))
$ret['feed_rss'] = $item->getAttribute('href');
} }
return $ret; return $ret;

View file

@ -423,19 +423,29 @@ function get_atom_elements($feed,$item) {
else else
$res['private'] = 0; $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'); $rawlocation = $item->get_item_tags(NAMESPACE_DFRN, 'location');
if($rawlocation) if($rawlocation)
$res['location'] = unxmlify($rawlocation[0]['data']); $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'); $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated');
if($rawedited) if($rawedited)
$res['edited'] = unxmlify($rawcreated[0]['data']); $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'); $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) 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']); $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; $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['parent-uri'] = $parent_uri;
$datarray['uid'] = $importer['uid']; $datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id']; $datarray['contact-id'] = $contact['id'];
@ -1207,6 +1221,11 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
$datarray['last-child'] = 1; $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['parent-uri'] = $item_id;
$datarray['uid'] = $importer['uid']; $datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id']; $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) { function new_follower($importer,$contact,$datarray,$item) {

View file

@ -74,8 +74,8 @@ function follow_post(&$a) {
$ret = scrape_feed($url); $ret = scrape_feed($url);
if(count($ret) && $ret['feed_atom']) { if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
$poll = $ret['feed_atom']; $poll = ((x($ret,'feed_atom')) ? $ret['feed_atom'] : $ret['feed_rss']);
$vcard = array(); $vcard = array();
require_once('simplepie/simplepie.inc'); require_once('simplepie/simplepie.inc');
$feed = new SimplePie(); $feed = new SimplePie();
@ -115,7 +115,6 @@ function follow_post(&$a) {
logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true)); logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true));
// do we have enough information? // do we have enough information?
if(! ((x($vcard['fn'])) && ($poll) && ($profile))) { if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {