Add notice tags to RSS 1.0 output.

This commit is contained in:
Toby Inkster 2009-07-13 15:37:15 +01:00
parent a68773df63
commit ae2bc6a850

View File

@ -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) function showItem($notice)
{ {
$profile = Profile::staticGet($notice->profile_id); $profile = Profile::staticGet($notice->profile_id);
@ -245,7 +263,20 @@ class Rss10Action extends Action
$this->element('sioc:links_to', array('rdf:resource'=>$attachment->url)); $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->elementEnd('item');
$this->creators[$creator_uri] = $profile; $this->creators[$creator_uri] = $profile;
} }
@ -281,6 +312,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:ctag' =>
'http://commontag.org/ns#',
'xmlns:foaf' => 'xmlns:foaf' =>
'http://xmlns.com/foaf/0.1/', 'http://xmlns.com/foaf/0.1/',
'xmlns:sioc' => 'xmlns:sioc' =>