Permalink
Browse files

Allow more SQL files to be uploaded at the same time (thanks to Frant…

…isek Svoboda)
  • Loading branch information...
1 parent ada8917 commit b0b4cb157690ab6361c1763d9e025a96d68ec1a0 @vrana committed Apr 26, 2013
Showing with 33 additions and 17 deletions.
  1. +27 −14 adminer/include/functions.inc.php
  2. +4 −2 adminer/sql.inc.php
  3. +2 −1 changes.txt
@@ -569,22 +569,35 @@ function pagination($page, $current) {
*/
function get_file($key, $decompress = false) {
$file = $_FILES[$key];
- if (!$file || $file["error"]) {
- return $file["error"];
- }
- $return = file_get_contents($decompress && ereg('\\.gz$', $file["name"]) ? "compress.zlib://$file[tmp_name]"
- : ($decompress && ereg('\\.bz2$', $file["name"]) ? "compress.bzip2://$file[tmp_name]"
- : $file["tmp_name"]
- )); //! may not be reachable because of open_basedir
- if ($decompress) {
- $start = substr($return, 0, 3);
- if (function_exists("iconv") && ereg("^\xFE\xFF|^\xFF\xFE", $start, $regs)) { // not ternary operator to save memory
- $return = iconv("utf-16", "utf-8", $return);
- } elseif ($start == "\xEF\xBB\xBF") { // UTF-8 BOM
- $return = substr($return, 3);
+ if (!$file) {
+ return null;
+ }
+ foreach ($file as $key => $val) {
+ $file[$key] = (array) $val;
+ }
+ $return = array();
+ foreach ($file["error"] as $key => $error) {
+ if ($error) {
+ return $error;
}
+ $name = $file["name"][$key];
+ $tmp_name = $file["tmp_name"][$key];
+ $content = file_get_contents($decompress && ereg('\\.gz$', $name) ? "compress.zlib://$tmp_name"
+ : ($decompress && ereg('\\.bz2$', $name) ? "compress.bzip2://$tmp_name"
+ : $tmp_name
+ )); //! may not be reachable because of open_basedir
+ if ($decompress) {
+ $start = substr($content, 0, 3);
+ if (function_exists("iconv") && ereg("^\xFE\xFF|^\xFF\xFE", $start, $regs)) { // not ternary operator to save memory
+ $content = iconv("utf-16", "utf-8", $content);
+ } elseif ($start == "\xEF\xBB\xBF") { // UTF-8 BOM
+ $content = substr($content, 3);
+ }
+ }
+ $return[] = $content;
}
- return $return;
+ //! support SQL files not ending with semicolon
+ return implode("\n\n\n", $return);
}
/** Determine upload error
View
@@ -25,7 +25,7 @@
: "compress.bzip2://adminer.sql.bz2"
)), "rb");
$query = ($fp ? fread($fp, 1e6) : false);
- } elseif ($_FILES && $_FILES["sql_file"]["error"] != UPLOAD_ERR_NO_FILE) {
+ } elseif ($_FILES && $_FILES["sql_file"]["error"][0] != 4) { // 4 - UPLOAD_ERR_NO_FILE
$query = get_file("sql_file", true);
}
if (is_string($query)) { // get_file() returns error as number, fread() as false
@@ -180,7 +180,9 @@
textarea("query", $q, 20);
echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n");
echo "<p>" . (ini_bool("file_uploads")
- ? lang('File upload') . ': <input type="file" name="sql_file"' . ($_FILES && $_FILES["sql_file"]["error"] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') . '> (&lt; ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
+ ? lang('File upload') . ': <input type="file" name="sql_file[]" multiple'
+ . ($_FILES && $_FILES["sql_file"]["error"][0] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') // 4 - UPLOAD_ERR_NO_FILE
+ . '> (&lt; ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
: lang('File uploads are disabled.')
);
View
@@ -1,4 +1,5 @@
-Adminer 3.6.5-dev:
+Adminer 3.7.0-dev:
+Allow more SQL files to be uploaded at the same time
Print run time next to executed queries
Disable SQL export when applying functions in select
Fix handling of POINT data type (bug #3582578)

0 comments on commit b0b4cb1

Please sign in to comment.