diff options
-rw-r--r-- | include/identity.php | 36 | ||||
-rw-r--r-- | include/widgets.php | 10 | ||||
-rw-r--r-- | mod/import.php | 6 | ||||
-rw-r--r-- | mod/uexport.php | 2 |
4 files changed, 47 insertions, 7 deletions
diff --git a/include/identity.php b/include/identity.php index d8f59e56c..1078ff082 100644 --- a/include/identity.php +++ b/include/identity.php @@ -396,7 +396,7 @@ 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) { /* * Red basic channel export @@ -468,8 +468,42 @@ function identity_basic_export($channel_id) { $ret['photo'] = array('type' => $r[0]['type'], 'data' => base64url_encode($r[0]['data'])); } + if(! $items) + return $ret; + + + $r = q("select * from item_id where uid = %d", + intval($channel_id) + ); + + if($r) + $ret['item_id'] = $r; + + $key = get_config('system','prvkey'); + // warning: this may run into memory limits on smaller systems + + $r = q("select * from item where (item_flags & %d) and not (item_restrict & %d) and uid = %d", + intval(ITEM_WALL), + intval(ITEM_DELETED), + 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; + } return $ret; + } diff --git a/include/widgets.php b/include/widgets.php index 1aa018fb6..f1c9ceada 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -481,11 +481,11 @@ function widget_settings_menu($arr) { 'selected' => '' ), -// array( -// 'label' => t('Export account'), -// 'url' => $a->get_baseurl(true) . '/uexport/complete', -// 'selected' => '' -// ), + array( + 'label' => t('Export content'), + 'url' => $a->get_baseurl(true) . '/uexport/complete', + 'selected' => '' + ), array( 'label' => t('Automatic Permissions (Advanced)'), diff --git a/mod/import.php b/mod/import.php index 22eb688ab..0663a8b57 100644 --- a/mod/import.php +++ b/mod/import.php @@ -376,6 +376,12 @@ function import_post(&$a) { } } +//FIXME just a note here for when folks want to import content - be very careful to unset ITEM_ORIGIN on all imported content. Or you could end up with a nasty routing loop when somebody tries to reply to one of those posts. + + + + + // FIXME - ensure we have a self entry if somebody is trying to pull a fast one if($seize) { diff --git a/mod/uexport.php b/mod/uexport.php index f3a2ce67c..6304115c8 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -18,7 +18,7 @@ function uexport_init(&$a) { } if(argc() > 1 && argv(1) === 'complete') { - echo json_encode('not yet implemented'); + echo json_encode(identity_basic_export(local_user(),true)); killme(); } |