From 748379ef18f335893c9273c6aef8ed9d2d5730ac Mon Sep 17 00:00:00 2001 From: jakubvrana Date: Thu, 31 Jul 2008 14:28:26 +0000 Subject: [PATCH] Prepare customizable export git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@430 7c3ca157-0c34-0410-bff1-cbf682f78f5c --- dump.inc.php | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/dump.inc.php b/dump.inc.php index 5c19e984..7d3d2796 100644 --- a/dump.inc.php +++ b/dump.inc.php @@ -121,10 +121,26 @@ function dump($db, $style) { echo "\n\n"; } +function tar_file($filename, $contents) { + $return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct(strlen($contents)), decoct(time())); + $checksum = 8*32; // space for checksum itself + for ($i=0; $i < strlen($return); $i++) { + $checksum += ord($return{$i}); + } + $return .= sprintf("%06o", $checksum) . "\0 "; + $return .= str_repeat("\0", 512 - strlen($return)); + $return .= $contents; + if (strlen($contents) % 512) { + $return .= str_repeat("\0", 512 - strlen($contents) % 512); + } + return $return; +} + if ($_POST) { header("Content-Type: text/plain; charset=utf-8"); $filename = (strlen($_GET["db"]) ? preg_replace('~[^a-z0-9_]~i', '-', (strlen($_GET["dump"]) ? $_GET["dump"] : $_GET["db"])) : "dump"); - header("Content-Disposition: inline; filename=$filename.sql"); + $filename .= ($_POST["format"] == "sql" ? ".sql" : (!strlen($_GET["db"]) || count(array_filter($_POST["data"])) >= 1 ? ".tar" : ".csv")); + header("Content-Disposition: " . ($_POST["output"] == "file" ? "attachment" : "inline") . "; filename=$filename"); $max_packet = 16777216; echo "SET NAMES utf8;\n"; @@ -175,14 +191,14 @@ foreach (array('', 'USE', 'DROP, CREATE', 'CREATE', 'CREATE, ALTER') as $val) { echo "" . ($val ? $val : lang('skip')) . ""; } echo "\n"; -if (!isset($_GET["db"]) && !isset($_SESSION["databases"][$_GET["server"]])) { +if (!strlen($_GET["db"]) && !isset($_SESSION["databases"][$_GET["server"]])) { $_SESSION["databases"][$_GET["server"]] = get_vals("SHOW DATABASES"); } -foreach ((isset($_GET["db"]) ? array($_GET["db"]) : $_SESSION["databases"][$_GET["server"]]) as $db) { +foreach ((strlen($_GET["db"]) ? array($_GET["db"]) : $_SESSION["databases"][$_GET["server"]]) as $db) { if ($db != "information_schema" || $mysql->server_info < 5) { echo "" . htmlspecialchars($db) . ""; foreach (array('', 'USE', 'DROP, CREATE', 'CREATE', 'CREATE, ALTER') as $val) { - echo '"; + echo '"; } echo "\n"; } @@ -197,15 +213,17 @@ foreach (array('', 'TRUNCATE, INSERT', 'INSERT', 'UPDATE') as $val) { echo "" . ($val ? $val : lang('skip')) . ""; } echo "\n"; -foreach ((isset($_GET["db"]) ? get_vals("SHOW TABLES") : $_SESSION["databases"][$_GET["server"]]) as $table) { - echo "" . htmlspecialchars($table) . ""; - foreach (array('', 'DROP, CREATE', 'CREATE', 'CREATE, ALTER') as $val) { - echo '"; +foreach ((strlen($_GET["db"]) ? get_vals("SHOW TABLES") : $_SESSION["databases"][$_GET["server"]]) as $table) { + if (strlen($_GET["db"]) || $table != "information_schema" || $mysql->server_info < 5) { + echo "" . htmlspecialchars($table) . ""; + foreach (array('', 'DROP, CREATE', 'CREATE', 'CREATE, ALTER') as $val) { + echo '"; + } + foreach (array('', 'TRUNCATE, INSERT', 'INSERT', 'UPDATE') as $val) { + echo '"; + } + echo "\n"; } - foreach (array('', 'TRUNCATE, INSERT', 'INSERT', 'UPDATE') as $val) { - echo '"; - } - echo "\n"; } echo "\n"; ?>