aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-09-16 03:33:48 -0700
committerfriendica <info@friendica.com>2014-09-16 03:33:48 -0700
commita1b66f56f0981a0853f180a458c401a80dda28ce (patch)
treef3e200160c9fd2c839c591f1c664fe5a8a248b3d
parentb2f2424b5272f7c58343fe810f303b55f1b7bf5e (diff)
downloadvolse-hubzilla-a1b66f56f0981a0853f180a458c401a80dda28ce.tar.gz
volse-hubzilla-a1b66f56f0981a0853f180a458c401a80dda28ce.tar.bz2
volse-hubzilla-a1b66f56f0981a0853f180a458c401a80dda28ce.zip
use the more portable encoded_item format for exported items - but with added attributes so we can use it as a reasonably complete item backup. The encoded_item format gives us extended author and owner information in case we need to probe them to bring the entry back. It also contains taxonomy entries. Importing and/or recovering will best be accomplished in chunks. It could take some time and some memory to chew through this.
-rw-r--r--include/identity.php18
-rwxr-xr-xinclude/items.php28
-rw-r--r--version.inc2
3 files changed, 32 insertions, 16 deletions
diff --git a/include/identity.php b/include/identity.php
index 1078ff082..2039738e0 100644
--- a/include/identity.php
+++ b/include/identity.php
@@ -489,18 +489,12 @@ function identity_basic_export($channel_id, $items = false) {
intval($channel_id)
);
if($r) {
- for($x = 0; $x < count($r); $x ++) {
- if($r[$x]['diaspora_meta'])
- $r[$x]['diaspora_meta'] = crypto_unencapsulate(json_decode($r[$x]['diaspora_meta'],true),$key);
- if($r[$x]['item_flags'] & ITEM_OBSCURED) {
- $r[$x]['item_flags'] = $r[$x]['item_flags'] ^ ITEM_OBSCURED;
- if($r[$x]['title'])
- $r[$x]['title'] = crypto_unencapsulate(json_decode($r[$x]['title'],true),$key);
- if($r[$x]['body'])
- $r[$x]['body'] = crypto_unencapsulate(json_decode($r[$x]['body'],true),$key);
- }
- }
- $ret['item'] = $r;
+ $ret['item'] = array();
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ foreach($r as $rr)
+ $ret['item'][] = encode_item($rr,true);
+
}
return $ret;
diff --git a/include/items.php b/include/items.php
index beec65d8a..1fa833eb2 100755
--- a/include/items.php
+++ b/include/items.php
@@ -1007,8 +1007,7 @@ function import_author_unknown($x) {
}
-
-function encode_item($item) {
+function encode_item($item,$mirror = false) {
$x = array();
$x['type'] = 'activity';
$x['encoding'] = 'zot';
@@ -1030,14 +1029,37 @@ function encode_item($item) {
$c_scope = map_scope($comment_scope);
+ $key = get_config('system','prvkey');
+
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
- $key = get_config('system','prvkey');
if($item['title'])
$item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
if($item['body'])
$item['body'] = crypto_unencapsulate(json_decode_plus($item['body']),$key);
}
+ // If we're trying to backup an item so that it's recoverable or for export/imprt,
+ // add all the attributes we need to recover it
+
+ if($mirror) {
+ $x['id'] = $item['id'];
+ $x['parent'] = $item['parent'];
+ $x['uid'] = $item['uid'];
+ $x['allow_cid'] = $item['allow_cid'];
+ $x['allow_gid'] = $item['allow_gid'];
+ $x['deny_cid'] = $item['deny_cid'];
+ $x['deny_gid'] = $item['deny_gid'];
+ $x['revision'] = $item['revision'];
+ $x['layout_mid'] = $item['layout_mid'];
+ $x['postopts'] = $item['postopts'];
+ $x['resource_id'] = $item['resource_id'];
+ $x['resource_type'] = $item['resource_type'];
+ $x['item_restrict'] = $item['item_restrict'];
+ $x['item_flags'] = $item['item_flags'];
+ $x['diaspora_meta'] = crypto_unencapsulate(json_decode($item['diaspora_meta'],true),$key);
+ $x['attach'] = $item['attach'];
+ }
+
$x['message_id'] = $item['mid'];
$x['message_top'] = $item['parent_mid'];
diff --git a/version.inc b/version.inc
index c3d994d3e..973190772 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2014-09-15.799
+2014-09-16.800