diff options
-rw-r--r-- | include/api.php | 36 | ||||
-rw-r--r-- | include/identity.php | 47 | ||||
-rw-r--r-- | mod/settings.php | 11 | ||||
-rw-r--r-- | mod/uexport.php | 69 |
4 files changed, 64 insertions, 99 deletions
diff --git a/include/api.php b/include/api.php index aab7d102f..1864d511e 100644 --- a/include/api.php +++ b/include/api.php @@ -515,41 +515,9 @@ return false; } - $ret = array(); - $r = q("select * from channel where channel_id = %d limit 1", - intval(local_user()) - ); - if($r) - $ret['channel'] = $r[0]; - - $r = q("select * from profile where uid = %d", - intval(local_user()) - ); - if($r) - $ret['profile'] = $r; - - $xchans = array(); - $r = q("select * from abook where abook_channel = %d ", - intval(local_user()) - ); - if($r) { - $ret['abook'] = $r; - - foreach($r as $rr) - $xchans[] = $rr['abook_xchan']; - stringify_array_elms($xchans); - } + require_once('include/identity.php'); - if($xchans) { - $r = q("select * from xchan where xchan_hash in ( " . implode(',',$xchans) . " ) "); - if($r) - $ret['xchan'] = $r; - - $r = q("select * from hubloc where hubloc_hash in ( " . implode(',',$xchans) . " ) "); - if($r) - $ret['hubloc'] = $r; - } - json_return_and_die($ret); + json_return_and_die(identity_basic_export(api_user())); } api_register_func('api/export/basic','api_export_basic', true); diff --git a/include/identity.php b/include/identity.php index 2c3730cbc..94de192c6 100644 --- a/include/identity.php +++ b/include/identity.php @@ -194,3 +194,50 @@ function set_default_login_identity($account_id,$channel_id,$force = true) { } } +function identity_basic_export($channel_id) { + + /* + * Red basic channel export + */ + + $ret = array(); + $r = q("select * from channel where channel_id = %d limit 1", + intval($channel_id) + ); + if($r) + $ret['channel'] = $r[0]; + + $r = q("select * from profile where uid = %d", + intval($channel_id) + ); + if($r) + $ret['profile'] = $r; + + $xchans = array(); + $r = q("select * from abook where abook_channel = %d ", + intval($channel_id) + ); + if($r) { + $ret['abook'] = $r; + + foreach($r as $rr) + $xchans[] = $rr['abook_xchan']; + stringify_array_elms($xchans); + } + + if($xchans) { + $r = q("select * from xchan where xchan_hash in ( " . implode(',',$xchans) . " ) "); + if($r) + $ret['xchan'] = $r; + + $r = q("select * from hubloc where hubloc_hash in ( " . implode(',',$xchans) . " ) "); + if($r) + $ret['hubloc'] = $r; + } + + return $ret; +} + + + + diff --git a/mod/settings.php b/mod/settings.php index db204bc50..d75fe3043 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -63,11 +63,18 @@ function settings_init(&$a) { ), array( - 'label' => t('Export personal data'), - 'url' => $a->get_baseurl(true) . '/uexport', + 'label' => t('Export channel'), + 'url' => $a->get_baseurl(true) . '/uexport/basic', 'selected' => '' ), +// array( +// 'label' => t('Export account'), +// 'url' => $a->get_baseurl(true) . '/uexport/complete', +// 'selected' => '' +// ), + + ); $tabtpl = get_markup_template("generic_links_widget.tpl"); diff --git a/mod/uexport.php b/mod/uexport.php index e1fb22855..3f7b30008 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -1,72 +1,15 @@ <?php function uexport_init(&$a) { - if(! local_user()) killme(); - $user = array(); - $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", - local_user() - ); - if(count($r)) { - foreach($r as $rr) - foreach($rr as $k => $v) - $user[$k] = $v; - - } - $contact = array(); - $r = q("SELECT * FROM `contact` WHERE `uid` = %d ", - intval(local_user()) - ); - if(count($r)) { - foreach($r as $rr) - foreach($rr as $k => $v) - $contact[][$k] = $v; - - } - - $profile = array(); - $r = q("SELECT * FROM `profile` WHERE `uid` = %d ", - intval(local_user()) - ); - if(count($r)) { - foreach($r as $rr) - foreach($rr as $k => $v) - $profile[][$k] = $v; - } - - $output = array('user' => $user, 'contact' => $contact, 'profile' => $profile ); - - header("Content-type: application/json"); - echo json_encode($output); - - $r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ", - intval(local_user()) - ); - if(count($r)) - $total = $r[0]['total']; - - // chunk the output to avoid exhausting memory - - for($x = 0; $x < $total; $x += 500) { - $item = array(); - $r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d", - intval(local_user()), - intval($x), - intval(500) - ); - if(count($r)) { - foreach($r as $rr) - foreach($rr as $k => $v) - $item[][$k] = $v; - } - - $output = array('item' => $item); - echo json_encode($output); - } - + require_once('include/identity.php'); - killme(); + if(argc() > 1 && argv(1) === 'basic') + json_return_and_die(identity_basic_export(local_user())); + if(argc() > 1 && argv(1) === 'complete') + json_return_and_die('not yet implemented'); + }
\ No newline at end of file |