Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

…isek Svoboda)
  • Loading branch information...
commit b0b4cb157690ab6361c1763d9e025a96d68ec1a0 1 parent ada8917
@vrana authored
View
41 adminer/include/functions.inc.php
@@ -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
6 adminer/sql.inc.php
@@ -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
3  changes.txt
@@ -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)
Please sign in to comment.
Something went wrong with that request. Please try again.