summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCraig Andrews <candrews@integralblue.com>2009-07-13 14:32:56 -0400
committerCraig Andrews <candrews@integralblue.com>2009-07-13 14:32:56 -0400
commit678f054bfe51e74e26a992ae7de84b73ea95baee (patch)
treebf1ff296d3d36e2d34e25eeee92f5f0094e3ad24 /lib
parent858e3e765f995729542821b04c07876f0d360245 (diff)
parent38784141d108a96cc173167e16a1c79d9098722a (diff)
Merge commit 'tobyinks/master' into 0.8.x
Diffstat (limited to 'lib')
-rw-r--r--lib/rssaction.php62
-rw-r--r--lib/twitterapi.php12
2 files changed, 65 insertions, 9 deletions
diff --git a/lib/rssaction.php b/lib/rssaction.php
index fe3fd6f4a..183c09f47 100644
--- a/lib/rssaction.php
+++ b/lib/rssaction.php
@@ -192,6 +192,24 @@ class Rss10Action extends Action
}
}
+ // XXX: Surely there should be a common function to do this?
+ function extract_tags ($string)
+ {
+ $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($string), $match);
+ if (!count)
+ {
+ return array();
+ }
+
+ $rv = array();
+ foreach ($match[1] as $tag)
+ {
+ $rv[] = common_canonical_tag($tag);
+ }
+
+ return array_unique($rv);
+ }
+
function showItem($notice)
{
$profile = Profile::staticGet($notice->profile_id);
@@ -219,10 +237,46 @@ class Rss10Action extends Action
$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);
+ if (isset($attachment->filename)) {
+ // DO NOT move xmlns declaration to root element. Making it
+ // the default namespace here improves compatibility with
+ // real-world feed readers.
+ $attribs = array(
+ 'rdf:resource' => $attachment->url,
+ 'url' => $attachment->url,
+ 'xmlns' => 'http://purl.oclc.org/net/rss_2.0/enc#'
+ );
+ if ($attachment->title) {
+ $attribs['dc:title'] = $attachment->title;
+ }
+ if ($attachment->modified) {
+ $attribs['dc:date'] = common_date_w3dtf($attachment->modified);
+ }
+ if ($attachment->size) {
+ $attribs['length'] = $attachment->size;
+ }
+ if ($attachment->mimetype) {
+ $attribs['type'] = $attachment->mimetype;
+ }
+ $this->element('enclosure', $attribs);
+ }
+ $this->element('sioc:links_to', array('rdf:resource'=>$attachment->url));
+ }
+ }
+ $tags = $this->extract_tags($notice->content);
+ if (!empty($tags)) {
+ foreach ($tags as $tag)
+ {
+ $tagpage = common_local_url('tag', array('tag' => $tag));
+ $tagrss = common_local_url('tagrss', array('tag' => $tag));
+ $this->elementStart('ctag:tagged');
+ $this->elementStart('ctag:Tag', array('rdf:about'=>$tagpage.'#concept', 'ctag:label'=>$tag));
+ $this->element('foaf:page', array('rdf:resource'=>$tagpage));
+ $this->element('rdfs:seeAlso', array('rdf:resource'=>$tagrss));
+ $this->elementEnd('ctag:Tag');
+ $this->elementEnd('ctag:tagged');
}
}
-
$this->elementEnd('item');
$this->creators[$creator_uri] = $profile;
}
@@ -258,8 +312,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:ctag' =>
+ 'http://commontag.org/ns#',
'xmlns:foaf' =>
'http://xmlns.com/foaf/0.1/',
'xmlns:sioc' =>
diff --git a/lib/twitterapi.php b/lib/twitterapi.php
index 4f3a5c0b6..ce188e00d 100644
--- a/lib/twitterapi.php
+++ b/lib/twitterapi.php
@@ -218,11 +218,13 @@ class TwitterapiAction extends Action
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;
+ if (isset($attachment->filename)) {
+ $enclosure=array();
+ $enclosure['url']=$attachment->url;
+ $enclosure['mimetype']=$attachment->mimetype;
+ $enclosure['size']=$attachment->size;
+ $entry['enclosures'][]=$enclosure;
+ }
}
}