]> git.mxchange.org Git - friendica.git/commitdiff
atom categories and tag import
authorFriendika <info@friendika.com>
Wed, 6 Apr 2011 00:41:02 +0000 (17:41 -0700)
committerFriendika <info@friendika.com>
Wed, 6 Apr 2011 00:41:02 +0000 (17:41 -0700)
boot.php
include/items.php

index f5c0e6f92c4caa8fe83e604df8bd3d4138f537c6..eb8048915763d52600d0d156451cb0c18c4fec7a 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -2,7 +2,7 @@
 
 set_time_limit(0);
 
-define ( 'FRIENDIKA_VERSION',      '2.1.939' );
+define ( 'FRIENDIKA_VERSION',      '2.1.940' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.2'  );
 define ( 'DB_UPDATE_VERSION',      1046   );
 
index a9ac859694277b0b2819804b72704ddb3b050a10..b17eadba283fb8f3ccb941aaf0f29e95fbffc8c2 100644 (file)
@@ -456,7 +456,22 @@ function get_atom_elements($feed,$item) {
        if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow'))
                $res['verb'] = ACTIVITY_UNFOLLOW;
 
-               
+
+       $cats = $item->get_categories();
+       if($cats) {
+               $tag_arr = array();
+               foreach($cats as $cat) {
+                       $term = $cat->get_term();
+                       if(! $term)
+                               $term = $cat->get_label();
+                       $scheme = $cat->get_scheme();
+                       if($scheme && $term && stristr($scheme,'X-DFRN:'))
+                               $tag_arr[] = substr($scheme,7,1) . '[url=' . unxmlify(substr($scheme,9)) . ']' . unxmlify($term) . '[/url]';
+                       elseif($term)
+                               $tag_arr[] = $term;
+               }
+               $res['tag'] =  implode(',', $tag_arr);
+       }
 
        $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object');
 
@@ -614,6 +629,7 @@ function item_store($arr,$force_parent = false) {
        $arr['deny_gid']      = ((x($arr,'deny_gid'))      ? trim($arr['deny_gid'])              : '');
        $arr['private']       = ((x($arr,'private'))       ? intval($arr['private'])             : 0 );
        $arr['body']          = ((x($arr,'body'))          ? trim($arr['body'])                  : '');
+       $arr['tag']           = ((x($arr,'tag'))           ? notags(trim($arr['tag']))           : '');
 
        if($arr['parent-uri'] === $arr['uri']) {
                $parent_id = 0;
@@ -1503,6 +1519,13 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        if(strlen($actarg))
                $o .= $actarg;
 
+       $tags = item_getfeedtags($item);
+       if(count($tags)) {
+               foreach($tags as $t) {
+                       $o .= '<category scheme="X-DFRN:' . xmlify($t[0]) . ':' . xmlify($t[1]) . '" term="' . xmlify($t[2]) . '" />' . "\r\n";
+               }
+       }
+
        $mentioned = get_mentions($item);
        if($mentioned)
                $o .= $mentioned;
@@ -1513,6 +1536,29 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        
        return $o;
 }
+
+function item_getfeedtags($item) {
+       $ret = array();
+       $matches = false;
+       $cnt = preg_match_all('|\#\[url\=(.+?)\](.+?)\[\/url\]|',$item['tag'],$matches);
+       if($cnt) {
+               for($x = 0; $x < count($matches); $x ++) {
+                       if($matches[1][$x])
+                               $ret[] = array('#',$matches[1][$x], $matches[2][$x]);
+               }
+       }
+       $matches = false; 
+       $cnt = preg_match_all('|\@\[url\=(.+?)\](.+?)\[\/url\]|',$item['tag'],$matches);
+       if($cnt) {
+               for($x = 0; $x < count($matches); $x ++) {
+                       if($matches[1][$x])
+                               $ret[] = array('#',$matches[1][$x], $matches[2][$x]);
+               }
+       } 
+       return $ret;
+}
+
+
        
 function item_expire($uid,$days) {