From d8c03526ed24a4b26c589659d394848c81bacc53 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 25 Sep 2014 20:21:23 -0700 Subject: optionally include wall items (posts) in import/export --- include/api.php | 4 ++-- include/identity.php | 7 ++++--- include/items.php | 24 +++++++++++++++++++++++- 3 files changed, 29 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/api.php b/include/api.php index 47de945db..2505def4c 100644 --- a/include/api.php +++ b/include/api.php @@ -546,8 +546,8 @@ require_once('include/items.php'); } require_once('include/identity.php'); - - json_return_and_die(identity_basic_export(api_user())); + + json_return_and_die(identity_basic_export(api_user(),(($_REQUEST['posts']) ? intval($_REQUEST['posts']) : 0 ))); } api_register_func('api/export/basic','api_export_basic', true); api_register_func('api/red/channel/export/basic','api_export_basic', true); diff --git a/include/identity.php b/include/identity.php index 50c5d13b9..eaeb9f07f 100644 --- a/include/identity.php +++ b/include/identity.php @@ -431,14 +431,15 @@ function set_default_login_identity($account_id,$channel_id,$force = true) { } /** - * @function identity_basic_export($channel_id) + * @function identity_basic_export($channel_id,$items = false) * Create an array representing the important channel information * which would be necessary to create a nomadic identity clone. This includes * most channel resources and connection information with the exception of content. * * @param int $channel_id * Channel_id to export - * + * @param boolean $items + * Include channel posts (wall items), default false * * @returns array * See function for details @@ -521,7 +522,7 @@ function identity_basic_export($channel_id, $items = false) { return $ret; - $r = q("select * from item_id where uid = %d", + $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d", intval($channel_id) ); diff --git a/include/items.php b/include/items.php index 315f9c44b..ac960258c 100755 --- a/include/items.php +++ b/include/items.php @@ -865,15 +865,37 @@ function get_item_elements($x) { // We have to do that here because we need to cleanse the input and prevent bad stuff from getting in, // and we need plaintext to do that. + $key = get_config('system','pubkey'); + + if(intval($arr['item_private'])) { $arr['item_flags'] = $arr['item_flags'] | ITEM_OBSCURED; - $key = get_config('system','pubkey'); if($arr['title']) $arr['title'] = json_encode(crypto_encapsulate($arr['title'],$key)); if($arr['body']) $arr['body'] = json_encode(crypto_encapsulate($arr['body'],$key)); } + + if(array_key_exists('revision',$x)) { + // extended export encoding + + $arr['revision'] = $x['revision']; + $arr['allow_cid'] = $x['allow_cid']; + $arr['allow_gid'] = $x['allow_gid']; + $arr['deny_cid'] = $x['deny_cid']; + $arr['deny_gid'] = $x['deny_gid']; + $arr['layout_mid'] = $x['layout_mid']; + $arr['postopts'] = $x['postopts']; + $arr['resource_id'] = $x['resource_id']; + $arr['resource_type'] = $x['resource_type']; + $arr['item_restrict'] = $x['item_restrict']; + $arr['item_flags'] = $x['item_flags']; + $arr['diaspora_meta'] = (($x['diaspora_meta']) ? json_encode(crypto_encapsulate($x['diaspora_meta'],$key)) : ''); + $arr['attach'] = $x['attach']; + + } + return $arr; } -- cgit v1.2.3