]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add notice tags to RSS 1.0 output.
authorToby Inkster <mail@tobyinkster.co.uk>
Mon, 13 Jul 2009 14:37:15 +0000 (15:37 +0100)
committerToby Inkster <mail@tobyinkster.co.uk>
Mon, 13 Jul 2009 14:37:15 +0000 (15:37 +0100)
lib/rssaction.php

index abc83fe3a527d1b2db862101a4020f1f0999c078..183c09f473ae4b42389ee343094ce91eaf20418b 100644 (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)
     {
         $profile = Profile::staticGet($notice->profile_id);
@@ -245,7 +263,20 @@ class Rss10Action extends Action
                 $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;
     }
@@ -281,6 +312,8 @@ class Rss10Action extends Action
                                               'http://creativecommons.org/ns#',
                                               'xmlns:content' =>
                                               'http://purl.org/rss/1.0/modules/content/',
+                                              'xmlns:ctag' =>
+                                              'http://commontag.org/ns#',
                                               'xmlns:foaf' =>
                                               'http://xmlns.com/foaf/0.1/',
                                               'xmlns:sioc' =>