]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add <category> to RSS 2.0, use the same tag finding method for RSS 1.0 as for Atom...
authorCraig Andrews <candrews@integralblue.com>
Tue, 21 Jul 2009 22:01:22 +0000 (18:01 -0400)
committerCraig Andrews <candrews@integralblue.com>
Tue, 21 Jul 2009 22:01:22 +0000 (18:01 -0400)
http://laconi.ca/trac/ticket/864

lib/rssaction.php
lib/twitterapi.php

index 9015589439ed4f59f0383cd2b47be8574bda8f48..9898894edd678e8fafd6a09c7d829cb2073672d2 100644 (file)
@@ -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)
     {
         $profile = Profile::staticGet($notice->profile_id);
@@ -269,26 +251,28 @@ 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));
+
+        $tag = new Notice_tag();
+        $tag->notice_id = $notice->id;
+        if ($tag->find()) {
+            $entry['tags']=array();
+            while ($tag->fetch()) {
+                $tagpage = common_local_url('tag', array('tag' => $tag->tag));
 
                 if ( in_array($tag, $this->tags_already_output) ) {
                     $this->element('ctag:tagged', array('rdf:resource'=>$tagpage.'#concept'));
                     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: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('rdfs:seeAlso', array('rdf:resource'=>$tagrss));
                 $this->elementEnd('ctag:Tag');
                 $this->elementEnd('ctag:tagged');
 
-                $this->tags_already_output[] = $tag;
+                $this->tags_already_output[] = $tag->tag;
             }
         }
         $this->elementEnd('item');
index 79da82a19408ea44a195087faf31dbc6d9ae389e..b2602e77ca996418b87e628df83281b08c6a2e44 100644 (file)
@@ -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
         $entry['description'] = $entry['content'];
         $entry['pubDate'] = common_date_rfc2822($notice->created);
@@ -442,6 +454,12 @@ class TwitterapiAction extends Action
             $enclosure = $entry['enclosures'][0];
             $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');
     }