items back in personal data download, chunked this time

This commit is contained in:
Friendika 2011-03-22 16:19:00 -07:00
parent f20464112f
commit 8f31935b7d
2 changed files with 29 additions and 3 deletions

View File

@ -2,7 +2,7 @@
set_time_limit(0);
define ( 'FRIENDIKA_VERSION', '2.1.925' );
define ( 'FRIENDIKA_VERSION', '2.1.926' );
define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
define ( 'DB_UPDATE_VERSION', 1044 );

View File

@ -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();
}