diff options
author | Friendika <info@friendika.com> | 2011-03-22 16:19:00 -0700 |
---|---|---|
committer | Friendika <info@friendika.com> | 2011-03-22 16:19:00 -0700 |
commit | 8f31935b7da523ba03b51459d7596fc5e6eb2854 (patch) | |
tree | 8e177b933fd037dbfc87165ce2c1d8b43e25fbcc /mod | |
parent | f20464112f274d720649c2f92480cc235df4db19 (diff) | |
download | volse-hubzilla-8f31935b7da523ba03b51459d7596fc5e6eb2854.tar.gz volse-hubzilla-8f31935b7da523ba03b51459d7596fc5e6eb2854.tar.bz2 volse-hubzilla-8f31935b7da523ba03b51459d7596fc5e6eb2854.zip |
items back in personal data download, chunked this time
Diffstat (limited to 'mod')
-rw-r--r-- | mod/uexport.php | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/mod/uexport.php b/mod/uexport.php index d8f931593..fdd7fcec6 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -17,7 +17,7 @@ function uexport_init(&$a) { } $contact = array(); $r = q("SELECT * FROM `contact` WHERE `uid` = %d ", - local_user() + intval(local_user()) ); if(count($r)) { foreach($r as $rr) @@ -28,7 +28,7 @@ function uexport_init(&$a) { $profile = array(); $r = q("SELECT * FROM `profile` WHERE `uid` = %d ", - local_user() + intval(local_user()) ); if(count($r)) { foreach($r as $rr) @@ -41,6 +41,32 @@ function uexport_init(&$a) { header("Content-type: text/json"); echo str_replace('\\/','/',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 str_replace('\\/','/',json_encode($output)); + } + + killme(); }
\ No newline at end of file |