Notice attachments are enclosures in feeds (Atom, RSS 1.0/RDF, and RSS 2.0).

http://laconi.ca/trac/ticket/1690
This commit is contained in:
Craig Andrews 2009-07-09 13:18:57 -04:00
parent d2e83b6a67
commit 69574591d0
3 changed files with 41 additions and 1 deletions

View File

@ -1164,6 +1164,18 @@ class Notice extends Memcached_DataObject
} }
$tag->free(); $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'); $xs->elementEnd('entry');
return $xs->getString(); return $xs->getString();

View File

@ -216,6 +216,13 @@ class Rss10Action extends Action
$replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
$this->element('sioc:reply_of', array('rdf:resource' => $replyurl)); $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->elementEnd('item');
$this->creators[$creator_uri] = $profile; $this->creators[$creator_uri] = $profile;
} }
@ -251,6 +258,8 @@ class Rss10Action extends Action
'http://creativecommons.org/ns#', 'http://creativecommons.org/ns#',
'xmlns:content' => 'xmlns:content' =>
'http://purl.org/rss/1.0/modules/content/', 'http://purl.org/rss/1.0/modules/content/',
'xmlns:enc' =>
'http://purl.oclc.org/net/rss_2.0/enc#',
'xmlns:foaf' => 'xmlns:foaf' =>
'http://xmlns.com/foaf/0.1/', 'http://xmlns.com/foaf/0.1/',
'xmlns:sioc' => 'xmlns:sioc' =>

View File

@ -207,7 +207,6 @@ class TwitterapiAction extends Action
function twitter_rss_entry_array($notice) function twitter_rss_entry_array($notice)
{ {
$profile = $notice->getProfile(); $profile = $notice->getProfile();
$entry = array(); $entry = array();
@ -224,6 +223,19 @@ class TwitterapiAction extends Action
$entry['updated'] = $entry['published']; $entry['updated'] = $entry['published'];
$entry['author'] = $profile->getBestName(); $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 # RSS Item specific
$entry['description'] = $entry['content']; $entry['description'] = $entry['content'];
$entry['pubDate'] = common_date_rfc2822($notice->created); $entry['pubDate'] = common_date_rfc2822($notice->created);
@ -378,6 +390,13 @@ class TwitterapiAction extends Action
$this->element('pubDate', null, $entry['pubDate']); $this->element('pubDate', null, $entry['pubDate']);
$this->element('guid', null, $entry['guid']); $this->element('guid', null, $entry['guid']);
$this->element('link', null, $entry['link']); $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'); $this->elementEnd('item');
} }