aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-01-24 19:36:20 -0800
committerFriendika <info@friendika.com>2011-01-24 19:36:20 -0800
commit08d6fe5ae74cc223e4385344f8e0edfde4208a23 (patch)
tree82b471c1b0bdbe6666ced3121165a8174f7d7dde
parent8e3c2634cb3065837cfef09c3435f85a15dc6755 (diff)
downloadvolse-hubzilla-08d6fe5ae74cc223e4385344f8e0edfde4208a23.tar.gz
volse-hubzilla-08d6fe5ae74cc223e4385344f8e0edfde4208a23.tar.bz2
volse-hubzilla-08d6fe5ae74cc223e4385344f8e0edfde4208a23.zip
allow RSS for feed contacts, but no comments
-rw-r--r--include/Scrape.php2
-rw-r--r--include/items.php26
-rw-r--r--mod/follow.php5
3 files changed, 26 insertions, 7 deletions
diff --git a/include/Scrape.php b/include/Scrape.php
index 8478ea407..e4f7a0878 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 5f8264beb..cbe0e970d 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 e5eb7763b..bad2e74f9 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))) {