diff --git a/adminer/plugin.php b/adminer/plugin.php index e083dd72..0cad4c3e 100644 --- a/adminer/plugin.php +++ b/adminer/plugin.php @@ -16,6 +16,7 @@ function adminer_object() { return new AdminerPlugin(array( // specify enabled plugins here + new AdminerDumpZip, new AdminerDumpXml, new AdminerTinymce("../externals/tinymce/jscripts/tiny_mce/tiny_mce_dev.js"), new AdminerFileUpload(""), diff --git a/plugins/dump-zip.php b/plugins/dump-zip.php new file mode 100644 index 00000000..7c427abb --- /dev/null +++ b/plugins/dump-zip.php @@ -0,0 +1,42 @@ + 'ZIP'); + } + + function _zip($string, $state) { + $this->_data .= $string; + if ($state & PHP_OUTPUT_HANDLER_END) { + $zip = new ZipArchive; + $zipFile = tempnam("", "zip"); + $zip->open($zipFile, ZipArchive::OVERWRITE); // php://output is not supported + $zip->addFromString($this->_filename, $this->_data); + $zip->close(); + $return = file_get_contents($zipFile); + unlink($zipFile); + return $return; + } + return ""; + } + + function dumpHeaders($identifier, $multi_table = false) { + $this->_filename = "$identifier." . ($multi_table && ereg("[ct]sv", $_POST["format"]) ? "tar" : $_POST["format"]); + if ($_POST["output"] == "zip") { + header("Content-Type: application/zip"); + } + ob_start(array($this, '_zip')); + } + +}