summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Andrews <candrews@integralblue.com>2009-07-09 13:18:57 -0400
committerCraig Andrews <candrews@integralblue.com>2009-07-09 13:18:57 -0400
commit69574591d0ac429475b1099e8d9f3e46f7a004ea (patch)
tree02ff2ef5709bfbf77cad3e04d75e81cb771d2c27
parentd2e83b6a67fec311f9bc36a7d886f40169d9de15 (diff)
Notice attachments are enclosures in feeds (Atom, RSS 1.0/RDF, and RSS 2.0).
http://laconi.ca/trac/ticket/1690
-rw-r--r--classes/Notice.php12
-rw-r--r--lib/rssaction.php9
-rw-r--r--lib/twitterapi.php21
3 files changed, 41 insertions, 1 deletions
diff --git a/classes/Notice.php b/classes/Notice.php
index 5ec0692d9..e975cab93 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -1164,6 +1164,18 @@ class Notice extends Memcached_DataObject
}
$tag->free();
+ # Enclosures
+ $attachments = $this->attachments();
+ if($attachments){
+ foreach($attachments as $attachment){
+ $attributes = array('rel'=>'enclosure','href'=>$attachment->url,'type'=>$attachment->mimetype,'length'=>$attachment->size);
+ if($attachment->title){
+ $attributes['title']=$attachment->title;
+ }
+ $xs->element('link', $attributes, null);
+ }
+ }
+
$xs->elementEnd('entry');
return $xs->getString();
diff --git a/lib/rssaction.php b/lib/rssaction.php
index 0c8188e88..fe3fd6f4a 100644
--- a/lib/rssaction.php
+++ b/lib/rssaction.php
@@ -216,6 +216,13 @@ class Rss10Action extends Action
$replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
$this->element('sioc:reply_of', array('rdf:resource' => $replyurl));
}
+ $attachments = $notice->attachments();
+ if($attachments){
+ foreach($attachments as $attachment){
+ $this->element('enc:enclosure', array('rdf:resource'=>$attachment->url,'enc:type'=>$attachment->mimetype,'enc:length'=>$attachment->size), null);
+ }
+ }
+
$this->elementEnd('item');
$this->creators[$creator_uri] = $profile;
}
@@ -251,6 +258,8 @@ class Rss10Action extends Action
'http://creativecommons.org/ns#',
'xmlns:content' =>
'http://purl.org/rss/1.0/modules/content/',
+ 'xmlns:enc' =>
+ 'http://purl.oclc.org/net/rss_2.0/enc#',
'xmlns:foaf' =>
'http://xmlns.com/foaf/0.1/',
'xmlns:sioc' =>
diff --git a/lib/twitterapi.php b/lib/twitterapi.php
index 40e5b5067..8f902cbca 100644
--- a/lib/twitterapi.php
+++ b/lib/twitterapi.php
@@ -207,7 +207,6 @@ class TwitterapiAction extends Action
function twitter_rss_entry_array($notice)
{
-
$profile = $notice->getProfile();
$entry = array();
@@ -224,6 +223,19 @@ class TwitterapiAction extends Action
$entry['updated'] = $entry['published'];
$entry['author'] = $profile->getBestName();
+ # Enclosure
+ $attachments = $notice->attachments();
+ if($attachments){
+ $entry['enclosures']=array();
+ foreach($attachments as $attachment){
+ $enclosure=array();
+ $enclosure['url']=$attachment->url;
+ $enclosure['mimetype']=$attachment->mimetype;
+ $enclosure['size']=$attachment->size;
+ $entry['enclosures'][]=$enclosure;
+ }
+ }
+
# RSS Item specific
$entry['description'] = $entry['content'];
$entry['pubDate'] = common_date_rfc2822($notice->created);
@@ -378,6 +390,13 @@ class TwitterapiAction extends Action
$this->element('pubDate', null, $entry['pubDate']);
$this->element('guid', null, $entry['guid']);
$this->element('link', null, $entry['link']);
+
+ # RSS only supports 1 enclosure per item
+ if($entry['enclosures']){
+ $enclosure = $entry['enclosures'][0];
+ $this->element('enclosure', array('url'=>$enclosure['url'],'type'=>$enclosure['mimetype'],'length'=>$enclosure['size']), null);
+ }
+
$this->elementEnd('item');
}