Add <category> to RSS 2.0, use the same tag finding method for RSS 1.0 as for Atom and RSS 2.0.
http://laconi.ca/trac/ticket/864
This commit is contained in:
parent
0adaaa1b9d
commit
38d70f1386
@ -193,24 +193,6 @@ 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);
|
||||||
@ -269,26 +251,28 @@ 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)) {
|
$tag = new Notice_tag();
|
||||||
foreach ($tags as $tag)
|
$tag->notice_id = $notice->id;
|
||||||
{
|
if ($tag->find()) {
|
||||||
$tagpage = common_local_url('tag', array('tag' => $tag));
|
$entry['tags']=array();
|
||||||
|
while ($tag->fetch()) {
|
||||||
|
$tagpage = common_local_url('tag', array('tag' => $tag->tag));
|
||||||
|
|
||||||
if ( in_array($tag, $this->tags_already_output) ) {
|
if ( in_array($tag, $this->tags_already_output) ) {
|
||||||
$this->element('ctag:tagged', array('rdf:resource'=>$tagpage.'#concept'));
|
$this->element('ctag:tagged', array('rdf:resource'=>$tagpage.'#concept'));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tagrss = common_local_url('tagrss', array('tag' => $tag));
|
$tagrss = common_local_url('tagrss', array('tag' => $tag->tag));
|
||||||
$this->elementStart('ctag:tagged');
|
$this->elementStart('ctag:tagged');
|
||||||
$this->elementStart('ctag:Tag', array('rdf:about'=>$tagpage.'#concept', 'ctag:label'=>$tag));
|
$this->elementStart('ctag:Tag', array('rdf:about'=>$tagpage.'#concept', 'ctag:label'=>$tag->tag));
|
||||||
$this->element('foaf:page', array('rdf:resource'=>$tagpage));
|
$this->element('foaf:page', array('rdf:resource'=>$tagpage));
|
||||||
$this->element('rdfs:seeAlso', array('rdf:resource'=>$tagrss));
|
$this->element('rdfs:seeAlso', array('rdf:resource'=>$tagrss));
|
||||||
$this->elementEnd('ctag:Tag');
|
$this->elementEnd('ctag:Tag');
|
||||||
$this->elementEnd('ctag:tagged');
|
$this->elementEnd('ctag:tagged');
|
||||||
|
|
||||||
$this->tags_already_output[] = $tag;
|
$this->tags_already_output[] = $tag->tag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->elementEnd('item');
|
$this->elementEnd('item');
|
||||||
|
@ -265,6 +265,18 @@ class TwitterapiAction extends Action
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Tags/Categories
|
||||||
|
$tag = new Notice_tag();
|
||||||
|
$tag->notice_id = $notice->id;
|
||||||
|
if ($tag->find()) {
|
||||||
|
$entry['tags']=array();
|
||||||
|
while ($tag->fetch()) {
|
||||||
|
$entry['tags'][]=$tag->tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tag->free();
|
||||||
|
|
||||||
// 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);
|
||||||
@ -442,6 +454,12 @@ class TwitterapiAction extends Action
|
|||||||
$enclosure = $entry['enclosures'][0];
|
$enclosure = $entry['enclosures'][0];
|
||||||
$this->element('enclosure', array('url'=>$enclosure['url'],'type'=>$enclosure['mimetype'],'length'=>$enclosure['size']), null);
|
$this->element('enclosure', array('url'=>$enclosure['url'],'type'=>$enclosure['mimetype'],'length'=>$enclosure['size']), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($entry['tags']){
|
||||||
|
foreach($entry['tags'] as $tag){
|
||||||
|
$this->element('category', null,$tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->elementEnd('item');
|
$this->elementEnd('item');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user