From fb562fc25bf5693965a692358b0e1ce7bd7e551f Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 11 Oct 2019 07:36:41 +0200 Subject: [PATCH] removed mod/uexport file --- mod/uexport.php | 197 ------------------------------------------------ 1 file changed, 197 deletions(-) delete mode 100644 mod/uexport.php diff --git a/mod/uexport.php b/mod/uexport.php deleted file mode 100644 index dfeb25abd7..0000000000 --- a/mod/uexport.php +++ /dev/null @@ -1,197 +0,0 @@ -getBasePath()); -} - -function uexport_content(App $a) { - - if ($a->argc > 1) { - header("Content-type: application/json"); - header('Content-Disposition: attachment; filename="' . $a->user['nickname'] . '.' . $a->argv[1] . '"'); - switch ($a->argv[1]) { - case "backup": - uexport_all($a); - exit(); - break; - case "account": - uexport_account($a); - exit(); - break; - default: - exit(); - } - } - - /** - * options shown on "Export personal data" page - * list of array( 'link url', 'link text', 'help text' ) - */ - $options = [ - ['uexport/account', L10n::t('Export account'), L10n::t('Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server.')], - ['uexport/backup', L10n::t('Export all'), L10n::t("Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account \x28photos are not exported\x29")], - ]; - Hook::callAll('uexport_options', $options); - - $tpl = Renderer::getMarkupTemplate("uexport.tpl"); - return Renderer::replaceMacros($tpl, [ - '$title' => L10n::t('Export personal data'), - '$options' => $options - ]); -} - -function _uexport_multirow($query) { - global $dbStructure; - - preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match); - $table = $match[1]; - - $result = []; - $r = q($query); - if (DBA::isResult($r)) { - foreach ($r as $rr) { - $p = []; - foreach ($rr as $k => $v) { - switch ($dbStructure[$table]['fields'][$k]['type']) { - case 'datetime': - $p[$k] = $v ?? DBA::NULL_DATETIME; - break; - default: - $p[$k] = $v; - break; - } - } - $result[] = $p; - } - } - return $result; -} - -function _uexport_row($query) { - global $dbStructure; - - preg_match("/\s+from\s+`?([a-z\d_]+)`?/i", $query, $match); - $table = $match[1]; - - $result = []; - $r = q($query); - if (DBA::isResult($r)) { - - foreach ($r as $rr) { - foreach ($rr as $k => $v) { - switch ($dbStructure[$table]['fields'][$k]['type']) { - case 'datetime': - $result[$k] = $v ?? DBA::NULL_DATETIME; - break; - default: - $result[$k] = $v; - break; - } - } - } - } - return $result; -} - -function uexport_account($a) { - - $user = _uexport_row( - sprintf("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval(local_user())) - ); - - $contact = _uexport_multirow( - sprintf("SELECT * FROM `contact` WHERE `uid` = %d ", intval(local_user())) - ); - - - $profile = _uexport_multirow( - sprintf("SELECT * FROM `profile` WHERE `uid` = %d ", intval(local_user())) - ); - - $photo = _uexport_multirow( - sprintf("SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user())) - ); - foreach ($photo as &$p) { - $p['data'] = bin2hex($p['data']); - } - - $pconfig = _uexport_multirow( - sprintf("SELECT * FROM `pconfig` WHERE uid = %d", intval(local_user())) - ); - - $group = _uexport_multirow( - sprintf("SELECT * FROM `group` WHERE uid = %d", intval(local_user())) - ); - - $group_member = _uexport_multirow( - sprintf("SELECT `group_member`.`gid`, `group_member`.`contact-id` FROM `group_member` INNER JOIN `group` ON `group`.`id` = `group_member`.`gid` WHERE `group`.`uid` = %d", intval(local_user())) - ); - - $output = [ - 'version' => FRIENDICA_VERSION, - 'schema' => DB_UPDATE_VERSION, - 'baseurl' => System::baseUrl(), - 'user' => $user, - 'contact' => $contact, - 'profile' => $profile, - 'photo' => $photo, - 'pconfig' => $pconfig, - 'group' => $group, - 'group_member' => $group_member, - ]; - - echo json_encode($output, JSON_PARTIAL_OUTPUT_ON_ERROR); -} - -/** - * echoes account data and items as separated json, one per line - * - * @param App $a - * @throws Exception - */ -function uexport_all(App $a) { - - uexport_account($a); - echo "\n"; - - $total = 0; - $r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ", - intval(local_user()) - ); - if (DBA::isResult($r)) { - $total = $r[0]['total']; - } - // chunk the output to avoid exhausting memory - - for ($x = 0; $x < $total; $x += 500) { - $r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d", - intval(local_user()), - intval($x), - intval(500) - ); - - $output = ['item' => $r]; - echo json_encode($output, JSON_PARTIAL_OUTPUT_ON_ERROR). "\n"; - } -}