]> git.joonet.de Git - adminer.git/commitdiff
Add Bzip2 export plugin
authorJakub Vrana <jakub@vrana.cz>
Tue, 28 May 2013 17:28:47 +0000 (10:28 -0700)
committerJakub Vrana <jakub@vrana.cz>
Tue, 28 May 2013 17:28:47 +0000 (10:28 -0700)
adminer/plugin.php
plugins/dump-bz2.php [new file with mode: 0644]
plugins/dump-zip.php

index d6a7f9a336cb06ed768913b744763a7648d4d609..d948600f19ba3cc8630d0009ac5f6cb5d55b5d04 100644 (file)
@@ -12,6 +12,7 @@ function adminer_object() {
                // specify enabled plugins here
                new AdminerDatabaseHide(array('information_schema')),
                new AdminerDumpJson,
+               new AdminerDumpBz2,
                new AdminerDumpZip,
                new AdminerDumpXml,
                new AdminerDumpAlter,
diff --git a/plugins/dump-bz2.php b/plugins/dump-bz2.php
new file mode 100644 (file)
index 0000000..9fa03ca
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/** Dump to Bzip2 format
+* @link http://www.adminer.org/plugins/#use
+* @uses bzopen(), tempnam("")
+* @author Jakub Vrana, http://www.vrana.cz/
+* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
+* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
+*/
+class AdminerDumpBz2 {
+       /** @access protected */
+       var $filename, $fp;
+       
+       function dumpOutput() {
+               if (!function_exists('bzopen')) {
+                       return array();
+               }
+               return array('bz2' => 'bzip2');
+       }
+       
+       function _bz2($string, $state) {
+               bzwrite($this->fp, $string);
+               if ($state & PHP_OUTPUT_HANDLER_END) {
+                       bzclose($this->fp);
+                       $return = file_get_contents($this->filename);
+                       unlink($this->filename);
+                       return $return;
+               }
+               return "";
+       }
+       
+       function dumpHeaders($identifier, $multi_table = false) {
+               if ($_POST["output"] == "bz2") {
+                       $this->filename = tempnam("", "bz2");
+                       $this->fp = bzopen($this->filename, 'w');
+                       header("Content-Type: application/x-bzip");
+                       ob_start(array($this, '_bz2'), 1e6);
+               }
+       }
+
+}
index 07f39e96ca0932656fe01c66e21bea1f1459b779..e317deaa3a742f7fe3dfb0b2a9687376a82b86b4 100644 (file)
@@ -35,8 +35,8 @@ class AdminerDumpZip {
        }
        
        function dumpHeaders($identifier, $multi_table = false) {
-               $this->filename = "$identifier." . ($multi_table && ereg("[ct]sv", $_POST["format"]) ? "tar" : $_POST["format"]);
                if ($_POST["output"] == "zip") {
+                       $this->filename = "$identifier." . ($multi_table && ereg("[ct]sv", $_POST["format"]) ? "tar" : $_POST["format"]);
                        header("Content-Type: application/zip");
                        ob_start(array($this, '_zip'));
                }