aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-04-05 17:41:02 -0700
committerFriendika <info@friendika.com>2011-04-05 17:41:02 -0700
commit438473529c667f151aefcede1d7fa6b8b22f2d91 (patch)
treeea081ee339f4de9c7eb2588552d8eca0657bf3e9
parentee19746aa9a4cff0ef5f83de6b6d9ecceee513d6 (diff)
downloadvolse-hubzilla-438473529c667f151aefcede1d7fa6b8b22f2d91.tar.gz
volse-hubzilla-438473529c667f151aefcede1d7fa6b8b22f2d91.tar.bz2
volse-hubzilla-438473529c667f151aefcede1d7fa6b8b22f2d91.zip
atom categories and tag import
-rw-r--r--boot.php2
-rw-r--r--include/items.php48
2 files changed, 48 insertions, 2 deletions
diff --git a/boot.php b/boot.php
index f5c0e6f92..eb8048915 100644
--- 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 );
diff --git a/include/items.php b/include/items.php
index a9ac85969..b17eadba2 100644
--- a/include/items.php
+++ b/include/items.php
@@ -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) {