mirror of
https://github.com/vrana/adminer.git
synced 2025-08-08 15:47:00 +02:00
Merge from master
This commit is contained in:
@@ -57,8 +57,13 @@ if ($in) {
|
|||||||
$name = $field["field"];
|
$name = $field["field"];
|
||||||
echo "<tr><th>" . $adminer->fieldName($field);
|
echo "<tr><th>" . $adminer->fieldName($field);
|
||||||
$value = $_POST["fields"][$name];
|
$value = $_POST["fields"][$name];
|
||||||
if ($value != "" && ereg("enum|set", $field["type"])) {
|
if ($value != "") {
|
||||||
$value = intval($value);
|
if ($field["type"] == "enum") {
|
||||||
|
$value = +$value;
|
||||||
|
}
|
||||||
|
if ($field["type"] == "set") {
|
||||||
|
$value = array_sum($value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
input($field, $value, (string) $_POST["function"][$name]); // param name can be empty
|
input($field, $value, (string) $_POST["function"][$name]); // param name can be empty
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
@@ -65,7 +65,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"]
|
|||||||
}
|
}
|
||||||
$partitioning .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions // $_POST["partition"] can be expression, not only column
|
$partitioning .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions // $_POST["partition"] can be expression, not only column
|
||||||
? " (" . implode(",", $partitions) . "\n)"
|
? " (" . implode(",", $partitions) . "\n)"
|
||||||
: ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : "")
|
: ($_POST["partitions"] ? " PARTITIONS " . (+$_POST["partitions"]) : "")
|
||||||
);
|
);
|
||||||
} elseif ($TABLE != "" && support("partitioning")) {
|
} elseif ($TABLE != "" && support("partitioning")) {
|
||||||
$partitioning .= "\nREMOVE PARTITIONING";
|
$partitioning .= "\nREMOVE PARTITIONING";
|
||||||
@@ -83,7 +83,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"]
|
|||||||
$_POST["Comment"],
|
$_POST["Comment"],
|
||||||
($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? $_POST["Engine"] : ""),
|
($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? $_POST["Engine"] : ""),
|
||||||
($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? $_POST["Collation"] : ""),
|
($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? $_POST["Collation"] : ""),
|
||||||
($_POST["Auto_increment"] != "" ? preg_replace('~\\D+~', '', $_POST["Auto_increment"]) : ""),
|
($_POST["Auto_increment"] != "" ? +$_POST["Auto_increment"] : ""),
|
||||||
$partitioning
|
$partitioning
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@@ -57,10 +57,11 @@ if ($_POST) {
|
|||||||
<p>
|
<p>
|
||||||
<?php
|
<?php
|
||||||
echo ($_POST["add_x"] || strpos($name, "\n")
|
echo ($_POST["add_x"] || strpos($name, "\n")
|
||||||
? '<textarea name="name" rows="10" cols="40" onkeydown="return textareaKeydown(this, event);">' . h($name) . '</textarea><br>'
|
? '<textarea id="name" name="name" rows="10" cols="40" onkeydown="return textareaKeydown(this, event);">' . h($name) . '</textarea><br>'
|
||||||
: '<input name="name" value="' . h($name) . '" maxlength="64">'
|
: '<input id="name" name="name" value="' . h($name) . '" maxlength="64">'
|
||||||
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate) : "");
|
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate) : "");
|
||||||
?>
|
?>
|
||||||
|
<script type='text/javascript'>document.getElementById('name').focus();</script>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php
|
<?php
|
||||||
|
@@ -5,13 +5,10 @@
|
|||||||
* @author Jakub Vrana
|
* @author Jakub Vrana
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$possible_drivers[] = "SQLSRV";
|
$drivers["mssql"] = "MS SQL";
|
||||||
$possible_drivers[] = "MSSQL";
|
|
||||||
if (extension_loaded("sqlsrv") || extension_loaded("mssql")) {
|
|
||||||
$drivers["mssql"] = "MS SQL";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_GET["mssql"])) {
|
if (isset($_GET["mssql"])) {
|
||||||
|
$possible_drivers = array("SQLSRV", "MSSQL");
|
||||||
define("DRIVER", "mssql");
|
define("DRIVER", "mssql");
|
||||||
if (extension_loaded("sqlsrv")) {
|
if (extension_loaded("sqlsrv")) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
@@ -309,7 +306,7 @@ if (isset($_GET["mssql"])) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fields($table, $hidden = false) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT c.*, t.name type, d.definition [default]
|
foreach (get_rows("SELECT c.*, t.name type, d.definition [default]
|
||||||
FROM sys.all_columns c
|
FROM sys.all_columns c
|
||||||
@@ -399,7 +396,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
}
|
}
|
||||||
|
|
||||||
function auto_increment() {
|
function auto_increment() {
|
||||||
return " IDENTITY" . ($_POST["Auto_increment"] != "" ? "(" . preg_replace('~\\D+~', '', $_POST["Auto_increment"]) . ",1)" : "");
|
return " IDENTITY" . ($_POST["Auto_increment"] != "" ? "(" . (+$_POST["Auto_increment"]) . ",1)" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
|
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
|
||||||
|
@@ -1,12 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
$possible_drivers[] = "MySQLi";
|
$drivers = array("server" => "MySQL") + $drivers;
|
||||||
$possible_drivers[] = "MySQL";
|
|
||||||
$possible_drivers[] = "PDO_MySQL";
|
|
||||||
if (extension_loaded("mysqli") || extension_loaded("mysql") || extension_loaded("pdo_mysql")) {
|
|
||||||
$drivers = array("server" => "MySQL") + $drivers;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!defined("DRIVER")) {
|
if (!defined("DRIVER")) {
|
||||||
|
$possible_drivers = array("MySQLi", "MySQL", "PDO_MySQL");
|
||||||
define("DRIVER", "server"); // server - backwards compatibility
|
define("DRIVER", "server"); // server - backwards compatibility
|
||||||
// MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable
|
// MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable
|
||||||
if (extension_loaded("mysqli")) {
|
if (extension_loaded("mysqli")) {
|
||||||
@@ -164,7 +160,7 @@ if (!defined("DRIVER")) {
|
|||||||
class Min_Result {
|
class Min_Result {
|
||||||
var
|
var
|
||||||
$num_rows, ///< @var int number of rows in the result
|
$num_rows, ///< @var int number of rows in the result
|
||||||
$_result ///< @access private
|
$_result, $_offset = 0 ///< @access private
|
||||||
;
|
;
|
||||||
|
|
||||||
/** Constructor
|
/** Constructor
|
||||||
@@ -193,7 +189,7 @@ if (!defined("DRIVER")) {
|
|||||||
* @return object properties: name, type, orgtable, orgname, charsetnr
|
* @return object properties: name, type, orgtable, orgname, charsetnr
|
||||||
*/
|
*/
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
$return = mysql_fetch_field($this->_result);
|
$return = mysql_fetch_field($this->_result, $this->_offset++); // offset required under certain conditions
|
||||||
$return->orgtable = $return->table;
|
$return->orgtable = $return->table;
|
||||||
$return->orgname = $return->name;
|
$return->orgname = $return->name;
|
||||||
$return->charsetnr = ($return->blob ? 63 : 0);
|
$return->charsetnr = ($return->blob ? 63 : 0);
|
||||||
@@ -212,7 +208,7 @@ if (!defined("DRIVER")) {
|
|||||||
var $extension = "PDO_MySQL";
|
var $extension = "PDO_MySQL";
|
||||||
|
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
$this->dsn("mysql:host=" . str_replace(":", ";unix_socket=", preg_replace('~:([0-9])~', ';port=\\1', $server)), $username, $password);
|
$this->dsn("mysql:host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $server)), $username, $password);
|
||||||
$this->query("SET NAMES utf8"); // charset in DSN is ignored
|
$this->query("SET NAMES utf8"); // charset in DSN is ignored
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -397,10 +393,9 @@ if (!defined("DRIVER")) {
|
|||||||
|
|
||||||
/** Get information about fields
|
/** Get information about fields
|
||||||
* @param string
|
* @param string
|
||||||
* @param bool display hidden table columns
|
|
||||||
* @return array array($name => array("field" => , "full_type" => , "type" => , "length" => , "unsigned" => , "default" => , "null" => , "auto_increment" => , "on_update" => , "collation" => , "privileges" => , "comment" => , "primary" => ))
|
* @return array array($name => array("field" => , "full_type" => , "type" => , "length" => , "unsigned" => , "default" => , "null" => , "auto_increment" => , "on_update" => , "collation" => , "privileges" => , "comment" => , "primary" => ))
|
||||||
*/
|
*/
|
||||||
function fields($table, $hidden = false) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SHOW FULL COLUMNS FROM " . table($table)) as $row) {
|
foreach (get_rows("SHOW FULL COLUMNS FROM " . table($table)) as $row) {
|
||||||
preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
|
preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
|
||||||
@@ -820,7 +815,7 @@ if (!defined("DRIVER")) {
|
|||||||
global $connection;
|
global $connection;
|
||||||
$return = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
$return = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||||
if (!$auto_increment) {
|
if (!$auto_increment) {
|
||||||
$return = preg_replace('~ AUTO_INCREMENT=[0-9]+~', '', $return); //! skip comments
|
$return = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $return); //! skip comments
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
$possible_drivers[] = "OCI8";
|
$drivers["oracle"] = "Oracle";
|
||||||
$possible_drivers[] = "PDO_OCI";
|
|
||||||
if (extension_loaded("oci8") || extension_loaded("pdo_oci")) {
|
|
||||||
$drivers["oracle"] = "Oracle";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_GET["oracle"])) {
|
if (isset($_GET["oracle"])) {
|
||||||
|
$possible_drivers = array("OCI8", "PDO_OCI");
|
||||||
define("DRIVER", "oracle");
|
define("DRIVER", "oracle");
|
||||||
if (extension_loaded("oci8")) {
|
if (extension_loaded("oci8")) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
@@ -206,7 +203,7 @@ UNION SELECT view_name, 'view' FROM user_views" . ($name != "" ? " WHERE view_na
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fields($table, $hidden = false) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT * FROM all_tab_columns WHERE table_name = " . q($table) . " ORDER BY column_id") as $row) {
|
foreach (get_rows("SELECT * FROM all_tab_columns WHERE table_name = " . q($table) . " ORDER BY column_id") as $row) {
|
||||||
$type = $row["DATA_TYPE"];
|
$type = $row["DATA_TYPE"];
|
||||||
|
@@ -1,11 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
$possible_drivers[] = "PgSQL";
|
$drivers["pgsql"] = "PostgreSQL";
|
||||||
$possible_drivers[] = "PDO_PgSQL";
|
|
||||||
if (extension_loaded("pgsql") || extension_loaded("pdo_pgsql")) {
|
|
||||||
$drivers["pgsql"] = "PostgreSQL";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_GET["pgsql"])) {
|
if (isset($_GET["pgsql"])) {
|
||||||
|
$possible_drivers = array("PgSQL", "PDO_PgSQL");
|
||||||
define("DRIVER", "pgsql");
|
define("DRIVER", "pgsql");
|
||||||
if (extension_loaded("pgsql")) {
|
if (extension_loaded("pgsql")) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
@@ -218,7 +215,7 @@ AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fields($table, $hidden = false) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull, col_description(c.oid, a.attnum) AS comment
|
foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull, col_description(c.oid, a.attnum) AS comment
|
||||||
FROM pg_class c
|
FROM pg_class c
|
||||||
@@ -228,8 +225,8 @@ LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
|
|||||||
WHERE c.relname = " . q($table) . "
|
WHERE c.relname = " . q($table) . "
|
||||||
AND n.nspname = current_schema()
|
AND n.nspname = current_schema()
|
||||||
AND NOT a.attisdropped
|
AND NOT a.attisdropped
|
||||||
" . ($hidden ? "" : "AND a.attnum > 0") . "
|
AND a.attnum > 0
|
||||||
ORDER BY a.attnum < 0, a.attnum"
|
ORDER BY a.attnum"
|
||||||
) as $row) {
|
) as $row) {
|
||||||
//! collation, primary
|
//! collation, primary
|
||||||
ereg('(.*)(\\((.*)\\))?', $row["full_type"], $match);
|
ereg('(.*)(\\((.*)\\))?', $row["full_type"], $match);
|
||||||
|
@@ -1,18 +1,83 @@
|
|||||||
<?php
|
<?php
|
||||||
$possible_drivers[] = "SQLite";
|
$drivers["sqlite"] = "SQLite 3";
|
||||||
$possible_drivers[] = "SQLite3";
|
$drivers["sqlite2"] = "SQLite 2";
|
||||||
$possible_drivers[] = "PDO_SQLite";
|
|
||||||
if (extension_loaded("sqlite3") || extension_loaded("pdo_sqlite")) {
|
|
||||||
$drivers["sqlite"] = "SQLite 3";
|
|
||||||
}
|
|
||||||
if (extension_loaded("sqlite") || extension_loaded("pdo_sqlite")) {
|
|
||||||
$drivers["sqlite2"] = "SQLite 2";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
|
$possible_drivers = array((isset($_GET["sqlite"]) ? "SQLite3" : "SQLite"), "PDO_SQLite");
|
||||||
define("DRIVER", (isset($_GET["sqlite"]) ? "sqlite" : "sqlite2"));
|
define("DRIVER", (isset($_GET["sqlite"]) ? "sqlite" : "sqlite2"));
|
||||||
if (extension_loaded(isset($_GET["sqlite2"]) ? "sqlite" : "sqlite3")) {
|
if (extension_loaded(isset($_GET["sqlite"]) ? "sqlite3" : "sqlite")) {
|
||||||
if (isset($_GET["sqlite2"])) {
|
if (isset($_GET["sqlite"])) {
|
||||||
|
|
||||||
|
class Min_SQLite {
|
||||||
|
var $extension = "SQLite3", $server_info, $affected_rows, $error, $_link;
|
||||||
|
|
||||||
|
function Min_SQLite($filename) {
|
||||||
|
$this->_link = new SQLite3($filename);
|
||||||
|
$version = $this->_link->version();
|
||||||
|
$this->server_info = $version["versionString"];
|
||||||
|
}
|
||||||
|
|
||||||
|
function query($query) {
|
||||||
|
$result = @$this->_link->query($query);
|
||||||
|
if (!$result) {
|
||||||
|
$this->error = $this->_link->lastErrorMsg();
|
||||||
|
return false;
|
||||||
|
} elseif ($result->numColumns()) {
|
||||||
|
return new Min_Result($result);
|
||||||
|
}
|
||||||
|
$this->affected_rows = $this->_link->changes();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function quote($string) {
|
||||||
|
return "'" . $this->_link->escapeString($string) . "'";
|
||||||
|
}
|
||||||
|
|
||||||
|
function store_result() {
|
||||||
|
return $this->_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function result($query, $field = 0) {
|
||||||
|
$result = $this->query($query);
|
||||||
|
if (!is_object($result)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$row = $result->_result->fetchArray();
|
||||||
|
return $row[$field];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Min_Result {
|
||||||
|
var $_result, $_offset = 0, $num_rows;
|
||||||
|
|
||||||
|
function Min_Result($result) {
|
||||||
|
$this->_result = $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_assoc() {
|
||||||
|
return $this->_result->fetchArray(SQLITE3_ASSOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_row() {
|
||||||
|
return $this->_result->fetchArray(SQLITE3_NUM);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_field() {
|
||||||
|
$column = $this->_offset++;
|
||||||
|
$type = $this->_result->columnType($column);
|
||||||
|
return (object) array(
|
||||||
|
"name" => $this->_result->columnName($column),
|
||||||
|
"type" => $type,
|
||||||
|
"charsetnr" => ($type == SQLITE3_BLOB ? 63 : 0), // 63 - binary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __desctruct() {
|
||||||
|
return $this->_result->finalize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
class Min_SQLite {
|
class Min_SQLite {
|
||||||
var $extension = "SQLite", $server_info, $affected_rows, $error, $_link;
|
var $extension = "SQLite", $server_info, $affected_rows, $error, $_link;
|
||||||
@@ -95,77 +160,6 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
class Min_SQLite {
|
|
||||||
var $extension = "SQLite3", $server_info, $affected_rows, $error, $_link;
|
|
||||||
|
|
||||||
function Min_SQLite($filename) {
|
|
||||||
$this->_link = new SQLite3($filename);
|
|
||||||
$version = $this->_link->version();
|
|
||||||
$this->server_info = $version["versionString"];
|
|
||||||
}
|
|
||||||
|
|
||||||
function query($query) {
|
|
||||||
$result = @$this->_link->query($query);
|
|
||||||
if (!$result) {
|
|
||||||
$this->error = $this->_link->lastErrorMsg();
|
|
||||||
return false;
|
|
||||||
} elseif ($result->numColumns()) {
|
|
||||||
return new Min_Result($result);
|
|
||||||
}
|
|
||||||
$this->affected_rows = $this->_link->changes();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function quote($string) {
|
|
||||||
return "'" . $this->_link->escapeString($string) . "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
function store_result() {
|
|
||||||
return $this->_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function result($query, $field = 0) {
|
|
||||||
$result = $this->query($query);
|
|
||||||
if (!is_object($result)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$row = $result->_result->fetchArray();
|
|
||||||
return $row[$field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Min_Result {
|
|
||||||
var $_result, $_offset = 0, $num_rows;
|
|
||||||
|
|
||||||
function Min_Result($result) {
|
|
||||||
$this->_result = $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetch_assoc() {
|
|
||||||
return $this->_result->fetchArray(SQLITE3_ASSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetch_row() {
|
|
||||||
return $this->_result->fetchArray(SQLITE3_NUM);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetch_field() {
|
|
||||||
$column = $this->_offset++;
|
|
||||||
$type = $this->_result->columnType($column);
|
|
||||||
return (object) array(
|
|
||||||
"name" => $this->_result->columnName($column),
|
|
||||||
"type" => $type,
|
|
||||||
"charsetnr" => ($type == SQLITE3_BLOB ? 63 : 0), // 63 - binary
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function __desctruct() {
|
|
||||||
return $this->_result->finalize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (extension_loaded("pdo_sqlite")) {
|
} elseif (extension_loaded("pdo_sqlite")) {
|
||||||
@@ -269,7 +263,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
return !$connection->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");
|
return !$connection->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");
|
||||||
}
|
}
|
||||||
|
|
||||||
function fields($table, $hidden = false) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("PRAGMA table_info(" . table($table) . ")") as $row) {
|
foreach (get_rows("PRAGMA table_info(" . table($table) . ")") as $row) {
|
||||||
$type = strtolower($row["type"]);
|
$type = strtolower($row["type"]);
|
||||||
|
@@ -7,8 +7,9 @@ if ($_POST) {
|
|||||||
$cookie .= "&$key=" . urlencode($_POST[$key]);
|
$cookie .= "&$key=" . urlencode($_POST[$key]);
|
||||||
}
|
}
|
||||||
cookie("adminer_export", substr($cookie, 1));
|
cookie("adminer_export", substr($cookie, 1));
|
||||||
$ext = dump_headers(($TABLE != "" ? $TABLE : DB), (DB == "" || count((array) $_POST["tables"] + (array) $_POST["data"]) > 1));
|
$ext = $adminer->dumpHeaders(($TABLE != "" ? $TABLE : DB), (DB == "" || count((array) $_POST["tables"] + (array) $_POST["data"]) > 1));
|
||||||
if ($_POST["format"] == "sql") {
|
$is_sql = ($_POST["format"] == "sql");
|
||||||
|
if ($is_sql) {
|
||||||
echo "-- Adminer $VERSION " . $drivers[DRIVER] . " dump
|
echo "-- Adminer $VERSION " . $drivers[DRIVER] . " dump
|
||||||
|
|
||||||
" . ($jush != "sql" ? "" : "SET NAMES utf8;
|
" . ($jush != "sql" ? "" : "SET NAMES utf8;
|
||||||
@@ -29,13 +30,13 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||||||
}
|
}
|
||||||
foreach ((array) $databases as $db) {
|
foreach ((array) $databases as $db) {
|
||||||
if ($connection->select_db($db)) {
|
if ($connection->select_db($db)) {
|
||||||
if ($_POST["format"] == "sql" && ereg('CREATE', $style) && ($create = $connection->result("SHOW CREATE DATABASE " . idf_escape($db), 1))) {
|
if ($is_sql && ereg('CREATE', $style) && ($create = $connection->result("SHOW CREATE DATABASE " . idf_escape($db), 1))) {
|
||||||
if ($style == "DROP+CREATE") {
|
if ($style == "DROP+CREATE") {
|
||||||
echo "DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n";
|
echo "DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n";
|
||||||
}
|
}
|
||||||
echo ($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n";
|
echo ($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n";
|
||||||
}
|
}
|
||||||
if ($_POST["format"] == "sql") {
|
if ($is_sql) {
|
||||||
if ($style) {
|
if ($style) {
|
||||||
echo use_sql($db) . ";\n\n";
|
echo use_sql($db) . ";\n\n";
|
||||||
}
|
}
|
||||||
@@ -72,11 +73,11 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||||||
if ($ext == "tar") {
|
if ($ext == "tar") {
|
||||||
ob_start();
|
ob_start();
|
||||||
}
|
}
|
||||||
dump_table($row["Name"], ($table ? $_POST["table_style"] : ""));
|
$adminer->dumpTable($row["Name"], ($table ? $_POST["table_style"] : ""));
|
||||||
if ($data) {
|
if ($data) {
|
||||||
dump_data($row["Name"], $_POST["data_style"]);
|
$adminer->dumpData($row["Name"], $_POST["data_style"], "SELECT * FROM " . table($row["Name"]));
|
||||||
}
|
}
|
||||||
if ($_POST["format"] == "sql" && $_POST["triggers"]) {
|
if ($is_sql && $_POST["triggers"]) {
|
||||||
$triggers = trigger_sql($row["Name"], $_POST["table_style"]);
|
$triggers = trigger_sql($row["Name"], $_POST["table_style"]);
|
||||||
if ($triggers) {
|
if ($triggers) {
|
||||||
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
||||||
@@ -84,23 +85,23 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||||||
}
|
}
|
||||||
if ($ext == "tar") {
|
if ($ext == "tar") {
|
||||||
echo tar_file((DB != "" ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
|
echo tar_file((DB != "" ? "" : "$db/") . "$row[Name].csv", ob_get_clean());
|
||||||
} elseif ($_POST["format"] == "sql") {
|
} elseif ($is_sql) {
|
||||||
echo "\n";
|
echo "\n";
|
||||||
}
|
}
|
||||||
} elseif ($_POST["format"] == "sql") {
|
} elseif ($is_sql) {
|
||||||
$views[] = $row["Name"];
|
$views[] = $row["Name"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($views as $view) {
|
foreach ($views as $view) {
|
||||||
dump_table($view, $_POST["table_style"], true);
|
$adminer->dumpTable($view, $_POST["table_style"], true);
|
||||||
}
|
}
|
||||||
if ($ext == "tar") {
|
if ($ext == "tar") {
|
||||||
echo pack("x512");
|
echo pack("x512");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($style == "CREATE+ALTER" && $_POST["format"] == "sql") {
|
if ($style == "CREATE+ALTER" && $is_sql) {
|
||||||
// drop old tables
|
// drop old tables
|
||||||
$query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
|
$query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()";
|
||||||
echo "DELIMITER ;;
|
echo "DELIMITER ;;
|
||||||
@@ -136,11 +137,14 @@ CALL adminer_alter(@adminer_alter);
|
|||||||
DROP PROCEDURE adminer_alter;
|
DROP PROCEDURE adminer_alter;
|
||||||
";
|
";
|
||||||
}
|
}
|
||||||
if (in_array("CREATE+ALTER", array($style, $_POST["table_style"])) && $_POST["format"] == "sql") {
|
if (in_array("CREATE+ALTER", array($style, $_POST["table_style"])) && $is_sql) {
|
||||||
echo "SELECT @adminer_alter;\n";
|
echo "SELECT @adminer_alter;\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($is_sql) {
|
||||||
|
echo "-- " . $connection->result("SELECT NOW()") . "\n";
|
||||||
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,8 +167,8 @@ if (!$row) {
|
|||||||
$row = array("output" => "text", "format" => "sql", "db_style" => (DB != "" ? "" : "CREATE"), "table_style" => "DROP+CREATE", "data_style" => "INSERT");
|
$row = array("output" => "text", "format" => "sql", "db_style" => (DB != "" ? "" : "CREATE"), "table_style" => "DROP+CREATE", "data_style" => "INSERT");
|
||||||
}
|
}
|
||||||
$checked = ($_GET["dump"] == "");
|
$checked = ($_GET["dump"] == "");
|
||||||
echo "<tr><th>" . lang('Output') . "<td>" . $adminer->dumpOutput(0, $row["output"]) . "\n";
|
echo "<tr><th>" . lang('Output') . "<td>" . html_select("output", $adminer->dumpOutput(), $row["output"], 0) . "\n"; // 0 - radio
|
||||||
echo "<tr><th>" . lang('Format') . "<td>" . $adminer->dumpFormat(0, $row["format"]) . "\n";
|
echo "<tr><th>" . lang('Format') . "<td>" . html_select("format", $adminer->dumpFormat(), $row["format"], 0) . "\n"; // 0 - radio
|
||||||
echo ($jush == "sqlite" ? "" : "<tr><th>" . lang('Database') . "<td>" . html_select('db_style', $db_style, $row["db_style"])
|
echo ($jush == "sqlite" ? "" : "<tr><th>" . lang('Database') . "<td>" . html_select('db_style', $db_style, $row["db_style"])
|
||||||
. (support("routine") ? checkbox("routines", 1, $checked, lang('Routines')) : "")
|
. (support("routine") ? checkbox("routines", 1, $checked, lang('Routines')) : "")
|
||||||
. (support("event") ? checkbox("events", 1, $checked, lang('Events')) : "")
|
. (support("event") ? checkbox("events", 1, $checked, lang('Events')) : "")
|
||||||
|
@@ -72,7 +72,7 @@ if ($fields) {
|
|||||||
echo "<tr><th>" . $adminer->fieldName($field);
|
echo "<tr><th>" . $adminer->fieldName($field);
|
||||||
$default = $_GET["set"][bracket_escape($name)];
|
$default = $_GET["set"][bracket_escape($name)];
|
||||||
$value = (isset($row)
|
$value = (isset($row)
|
||||||
? ($row[$name] != "" && ereg("enum|set", $field["type"]) ? intval($row[$name]) : $row[$name])
|
? ($row[$name] != "" && ereg("enum|set", $field["type"]) ? +$row[$name] : $row[$name])
|
||||||
: (!$update && $field["auto_increment"] ? "" : (isset($_GET["select"]) ? false : (isset($default) ? $default : $field["default"])))
|
: (!$update && $field["auto_increment"] ? "" : (isset($_GET["select"]) ? false : (isset($default) ? $default : $field["default"])))
|
||||||
);
|
);
|
||||||
if (!$_POST["save"] && is_string($value)) {
|
if (!$_POST["save"] && is_string($value)) {
|
||||||
|
@@ -60,8 +60,8 @@ foreach (table_status() as $name => $table_status) {
|
|||||||
$j = 0;
|
$j = 0;
|
||||||
foreach ($row["source"] as $key => $val) {
|
foreach ($row["source"] as $key => $val) {
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td>" . html_select("source[" . intval($key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1));
|
echo "<td>" . html_select("source[" . (+$key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1));
|
||||||
echo "<td>" . html_select("target[" . intval($key) . "]", $target, $row["target"][$key]);
|
echo "<td>" . html_select("target[" . (+$key) . "]", $target, $row["target"][$key]);
|
||||||
$j++;
|
$j++;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
@@ -36,7 +36,8 @@ class Adminer {
|
|||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function headers() {
|
function headers() {
|
||||||
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox NoScript plugin
|
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox 3.6.9
|
||||||
|
header("X-XSS-Protection: 0"); // prevents introducing XSS in IE8 by removing safe parts of the page
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print login form
|
/** Print login form
|
||||||
@@ -107,6 +108,14 @@ document.getElementById('username').focus();
|
|||||||
echo "\n";
|
echo "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get foreign keys for table
|
||||||
|
* @param string
|
||||||
|
* @return array same format as foreign_keys()
|
||||||
|
*/
|
||||||
|
function foreignKeys($table) {
|
||||||
|
return foreign_keys($table);
|
||||||
|
}
|
||||||
|
|
||||||
/** Find backward keys for table
|
/** Find backward keys for table
|
||||||
* @param string
|
* @param string
|
||||||
* @param string
|
* @param string
|
||||||
@@ -130,7 +139,7 @@ document.getElementById('username').focus();
|
|||||||
*/
|
*/
|
||||||
function selectQuery($query) {
|
function selectQuery($query) {
|
||||||
global $jush;
|
global $jush;
|
||||||
return "<p><a href='" . h(remove_from_uri("page")) . "&page=last' title='" . lang('Page') . ": " . lang('last') . "' onclick='return !ajaxMain(this.href, undefined, event);'>>></a> <code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code> <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>\n";
|
return "<p><a href='" . h(remove_from_uri("page")) . "&page=last' title='" . lang('Last page') . "' onclick='return !ajaxMain(this.href, undefined, event);'>>></a> <code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code> <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Description of a row in a table
|
/** Description of a row in a table
|
||||||
@@ -157,7 +166,7 @@ document.getElementById('username').focus();
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function selectVal($val, $link, $field) {
|
function selectVal($val, $link, $field) {
|
||||||
$return = ($val != "<i>NULL</i>" && ereg("^char|binary", $field["type"]) ? "<code>$val</code>" : $val);
|
$return = ($val != "<i>NULL</i>" && ereg("char|binary", $field["type"]) && !ereg("var", $field["type"]) ? "<code>$val</code>" : $val);
|
||||||
if (ereg('blob|bytea|raw|file', $field["type"]) && !is_utf8($val)) {
|
if (ereg('blob|bytea|raw|file', $field["type"]) && !is_utf8($val)) {
|
||||||
$return = lang('%d byte(s)', strlen(html_entity_decode($val, ENT_QUOTES)));
|
$return = lang('%d byte(s)', strlen(html_entity_decode($val, ENT_QUOTES)));
|
||||||
}
|
}
|
||||||
@@ -429,8 +438,10 @@ document.getElementById('username').focus();
|
|||||||
*/
|
*/
|
||||||
function editInput($table, $field, $attrs, $value) {
|
function editInput($table, $field, $attrs, $value) {
|
||||||
if ($field["type"] == "enum") {
|
if ($field["type"] == "enum") {
|
||||||
return ($field["null"] ? "<label><input type='radio'$attrs value=''" . (isset($value) || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "")
|
return (isset($_GET["select"]) ? "<label><input type='radio'$attrs value='-1' checked><i>" . lang('original') . "</i></label> " : "")
|
||||||
|
. ($field["null"] ? "<label><input type='radio'$attrs value=''" . (isset($value) || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "")
|
||||||
. "<label><input type='radio'$attrs value='0'" . ($value === 0 ? " checked" : "") . "><i>" . lang('empty') . "</i></label>"
|
. "<label><input type='radio'$attrs value='0'" . ($value === 0 ? " checked" : "") . "><i>" . lang('empty') . "</i></label>"
|
||||||
|
. enum_input("radio", $attrs, $field, $value)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
@@ -452,7 +463,7 @@ document.getElementById('username').focus();
|
|||||||
} elseif (ereg('^([+-]|\\|\\|)$', $function)) {
|
} elseif (ereg('^([+-]|\\|\\|)$', $function)) {
|
||||||
$return = idf_escape($name) . " $function $return";
|
$return = idf_escape($name) . " $function $return";
|
||||||
} elseif (ereg('^[+-] interval$', $function)) {
|
} elseif (ereg('^[+-] interval$', $function)) {
|
||||||
$return = idf_escape($name) . " $function " . (preg_match("~^([0-9]+|'[0-9.: -]') [A-Z_]+$~i", $value) ? $value : $return);
|
$return = idf_escape($name) . " $function " . (preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i", $value) ? $value : $return);
|
||||||
} elseif (ereg('^(addtime|subtime|concat)$', $function)) {
|
} elseif (ereg('^(addtime|subtime|concat)$', $function)) {
|
||||||
$return = "$function(" . idf_escape($name) . ", $return)";
|
$return = "$function(" . idf_escape($name) . ", $return)";
|
||||||
} elseif (ereg('^(md5|sha1|password|encrypt|hex)$', $function)) {
|
} elseif (ereg('^(md5|sha1|password|encrypt|hex)$', $function)) {
|
||||||
@@ -465,11 +476,9 @@ document.getElementById('username').focus();
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Returns export output options
|
/** Returns export output options
|
||||||
* @param bool generate select (otherwise radio)
|
* @return array
|
||||||
* @param string
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
function dumpOutput($select, $value = "") {
|
function dumpOutput() {
|
||||||
$return = array('text' => lang('open'), 'file' => lang('save'));
|
$return = array('text' => lang('open'), 'file' => lang('save'));
|
||||||
if (function_exists('gzencode')) {
|
if (function_exists('gzencode')) {
|
||||||
$return['gz'] = 'gzip';
|
$return['gz'] = 'gzip';
|
||||||
@@ -478,16 +487,199 @@ document.getElementById('username').focus();
|
|||||||
$return['bz2'] = 'bzip2';
|
$return['bz2'] = 'bzip2';
|
||||||
}
|
}
|
||||||
// ZipArchive requires temporary file, ZIP can be created by gzcompress - see PEAR File_Archive
|
// ZipArchive requires temporary file, ZIP can be created by gzcompress - see PEAR File_Archive
|
||||||
return html_select("output", $return, $value, $select);
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns export format options
|
/** Returns export format options
|
||||||
* @param bool generate select (otherwise radio)
|
* @return array
|
||||||
* @param string
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
function dumpFormat($select, $value = "") {
|
function dumpFormat() {
|
||||||
return html_select("format", array('sql' => 'SQL', 'csv' => 'CSV,', 'csv;' => 'CSV;'), $value, $select);
|
return array('sql' => 'SQL', 'csv' => 'CSV,', 'csv;' => 'CSV;', 'tsv' => 'TSV');
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Export table structure
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @param bool
|
||||||
|
* @return null prints data
|
||||||
|
*/
|
||||||
|
function dumpTable($table, $style, $is_view = false) {
|
||||||
|
if ($_POST["format"] != "sql") {
|
||||||
|
echo "\xef\xbb\xbf"; // UTF-8 byte order mark
|
||||||
|
if ($style) {
|
||||||
|
dump_csv(array_keys(fields($table)));
|
||||||
|
}
|
||||||
|
} elseif ($style) {
|
||||||
|
$create = create_sql($table, $_POST["auto_increment"]);
|
||||||
|
if ($create) {
|
||||||
|
if ($style == "DROP+CREATE") {
|
||||||
|
echo "DROP " . ($is_view ? "VIEW" : "TABLE") . " IF EXISTS " . table($table) . ";\n";
|
||||||
|
}
|
||||||
|
if ($is_view) {
|
||||||
|
// remove DEFINER with current user
|
||||||
|
$create = preg_replace('~^([A-Z =]+) DEFINER=`' . str_replace("@", "`@`", logged_user()) . '`~', '\\1', $create); //! proper escaping of user
|
||||||
|
}
|
||||||
|
echo ($style != "CREATE+ALTER" ? $create : ($is_view ? substr_replace($create, " OR REPLACE", 6, 0) : substr_replace($create, " IF NOT EXISTS", 12, 0))) . ";\n\n";
|
||||||
|
}
|
||||||
|
if ($style == "CREATE+ALTER" && !$is_view) {
|
||||||
|
// create procedure which iterates over original columns and adds new and removes old
|
||||||
|
$query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . q($table) . " ORDER BY ORDINAL_POSITION";
|
||||||
|
echo "DELIMITER ;;
|
||||||
|
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
||||||
|
DECLARE _column_name, _collation_name, after varchar(64) DEFAULT '';
|
||||||
|
DECLARE _column_type, _column_default text;
|
||||||
|
DECLARE _is_nullable char(3);
|
||||||
|
DECLARE _extra varchar(30);
|
||||||
|
DECLARE _column_comment varchar(255);
|
||||||
|
DECLARE done, set_after bool DEFAULT 0;
|
||||||
|
DECLARE add_columns text DEFAULT '";
|
||||||
|
$fields = array();
|
||||||
|
$after = "";
|
||||||
|
foreach (get_rows($query) as $row) {
|
||||||
|
$default = $row["COLUMN_DEFAULT"];
|
||||||
|
$row["default"] = (isset($default) ? q($default) : "NULL");
|
||||||
|
$row["after"] = q($after); //! rgt AFTER lft, lft AFTER id doesn't work
|
||||||
|
$row["alter"] = escape_string(idf_escape($row["COLUMN_NAME"])
|
||||||
|
. " $row[COLUMN_TYPE]"
|
||||||
|
. ($row["COLLATION_NAME"] ? " COLLATE $row[COLLATION_NAME]" : "")
|
||||||
|
. (isset($default) ? " DEFAULT " . ($default == "CURRENT_TIMESTAMP" ? $default : $row["default"]) : "")
|
||||||
|
. ($row["IS_NULLABLE"] == "YES" ? "" : " NOT NULL")
|
||||||
|
. ($row["EXTRA"] ? " $row[EXTRA]" : "")
|
||||||
|
. ($row["COLUMN_COMMENT"] ? " COMMENT " . q($row["COLUMN_COMMENT"]) : "")
|
||||||
|
. ($after ? " AFTER " . idf_escape($after) : " FIRST")
|
||||||
|
);
|
||||||
|
echo ", ADD $row[alter]";
|
||||||
|
$fields[] = $row;
|
||||||
|
$after = $row["COLUMN_NAME"];
|
||||||
|
}
|
||||||
|
echo "';
|
||||||
|
DECLARE columns CURSOR FOR $query;
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||||
|
SET @alter_table = '';
|
||||||
|
OPEN columns;
|
||||||
|
REPEAT
|
||||||
|
FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment;
|
||||||
|
IF NOT done THEN
|
||||||
|
SET set_after = 1;
|
||||||
|
CASE _column_name";
|
||||||
|
foreach ($fields as $row) {
|
||||||
|
echo "
|
||||||
|
WHEN " . q($row["COLUMN_NAME"]) . " THEN
|
||||||
|
SET add_columns = REPLACE(add_columns, ', ADD $row[alter]', '');
|
||||||
|
IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != " . q($row["COLUMN_TYPE"]) . " OR _extra != '$row[EXTRA]' OR _column_comment != " . q($row["COLUMN_COMMENT"]) . " OR after != $row[after] THEN
|
||||||
|
SET @alter_table = CONCAT(@alter_table, ', MODIFY $row[alter]');
|
||||||
|
END IF;"; //! don't replace in comment
|
||||||
|
}
|
||||||
|
echo "
|
||||||
|
ELSE
|
||||||
|
SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name);
|
||||||
|
SET set_after = 0;
|
||||||
|
END CASE;
|
||||||
|
IF set_after THEN
|
||||||
|
SET after = _column_name;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
UNTIL done END REPEAT;
|
||||||
|
CLOSE columns;
|
||||||
|
IF @alter_table != '' OR add_columns != '' THEN
|
||||||
|
SET alter_command = CONCAT(alter_command, 'ALTER TABLE " . table($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n');
|
||||||
|
END IF;
|
||||||
|
END;;
|
||||||
|
DELIMITER ;
|
||||||
|
CALL adminer_alter(@adminer_alter);
|
||||||
|
DROP PROCEDURE adminer_alter;
|
||||||
|
|
||||||
|
";
|
||||||
|
//! indexes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Export table data
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @return null prints data
|
||||||
|
*/
|
||||||
|
function dumpData($table, $style, $query) {
|
||||||
|
global $connection, $jush;
|
||||||
|
$max_packet = ($jush == "sqlite" ? 0 : 1048576); // default, minimum is 1024
|
||||||
|
if ($style) {
|
||||||
|
if ($_POST["format"] == "sql" && $style == "TRUNCATE+INSERT") {
|
||||||
|
echo truncate_sql($table) . ";\n";
|
||||||
|
}
|
||||||
|
$fields = fields($table);
|
||||||
|
$result = $connection->query($query, 1); // 1 - MYSQLI_USE_RESULT //! enum and set as numbers
|
||||||
|
if ($result) {
|
||||||
|
$insert = "";
|
||||||
|
$buffer = "";
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
if ($_POST["format"] != "sql") {
|
||||||
|
dump_csv($row);
|
||||||
|
} else {
|
||||||
|
if (!$insert) {
|
||||||
|
$insert = "INSERT INTO " . table($table) . " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ") VALUES";
|
||||||
|
}
|
||||||
|
foreach ($row as $key => $val) {
|
||||||
|
$row[$key] = (isset($val) ? (ereg('int|float|double|decimal', $fields[$key]["type"]) ? $val : q($val)) : "NULL"); //! columns looking like functions
|
||||||
|
}
|
||||||
|
$s = implode(",\t", $row);
|
||||||
|
if ($style == "INSERT+UPDATE") {
|
||||||
|
$set = array();
|
||||||
|
foreach ($row as $key => $val) {
|
||||||
|
$set[] = idf_escape($key) . " = $val";
|
||||||
|
}
|
||||||
|
echo "$insert ($s) ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
|
||||||
|
} else {
|
||||||
|
$s = ($max_packet ? "\n" : " ") . "($s)";
|
||||||
|
if (!$buffer) {
|
||||||
|
$buffer = $insert . $s;
|
||||||
|
} elseif (strlen($buffer) + 2 + strlen($s) < $max_packet) { // 2 - separator and terminator length
|
||||||
|
$buffer .= ",$s";
|
||||||
|
} else {
|
||||||
|
$buffer .= ";\n";
|
||||||
|
echo $buffer;
|
||||||
|
$buffer = $insert . $s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($_POST["format"] == "sql" && $style != "INSERT+UPDATE" && $buffer) {
|
||||||
|
$buffer .= ";\n";
|
||||||
|
echo $buffer;
|
||||||
|
}
|
||||||
|
} elseif ($_POST["format"] == "sql") {
|
||||||
|
echo "-- " . str_replace("\n", " ", $connection->error) . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Send headers for export
|
||||||
|
* @param string
|
||||||
|
* @param bool
|
||||||
|
* @return string extension
|
||||||
|
*/
|
||||||
|
function dumpHeaders($identifier, $multi_table = false) {
|
||||||
|
$filename = ($identifier != "" ? friendly_url($identifier) : "adminer");
|
||||||
|
$output = $_POST["output"];
|
||||||
|
$ext = ($_POST["format"] == "sql" ? "sql" : ($multi_table ? "tar" : "csv")); // multiple CSV packed to TAR
|
||||||
|
header("Content-Type: " .
|
||||||
|
($output == "bz2" ? "application/x-bzip" :
|
||||||
|
($output == "gz" ? "application/x-gzip" :
|
||||||
|
($ext == "tar" ? "application/x-tar" :
|
||||||
|
($ext == "sql" || $output != "file" ? "text/plain" : "text/csv") . "; charset=utf-8"
|
||||||
|
))));
|
||||||
|
if ($output != "text") {
|
||||||
|
header("Content-Disposition: attachment; filename=$filename.$ext" . ($output != "file" && !ereg('[^0-9a-z]', $output) ? ".$output" : ""));
|
||||||
|
}
|
||||||
|
session_write_close();
|
||||||
|
if ($_POST["output"] == "bz2") {
|
||||||
|
ob_start('bzcompress', 1e6);
|
||||||
|
}
|
||||||
|
if ($_POST["output"] == "gz") {
|
||||||
|
ob_start('gzencode', 1e6);
|
||||||
|
}
|
||||||
|
return $ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Prints navigation after Adminer title
|
/** Prints navigation after Adminer title
|
||||||
@@ -524,13 +716,13 @@ document.getElementById('username').focus();
|
|||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<p class="logout">
|
<p class="logout">
|
||||||
<?php
|
<?php
|
||||||
if (DB == "" || !$missing) {
|
if (DB == "" || !$missing) {
|
||||||
echo "<a href='" . h(ME) . "sql='>" . bold(lang('SQL command'), isset($_GET["sql"])) . "</a>\n";
|
echo "<a href='" . h(ME) . "sql='>" . bold(lang('SQL command'), isset($_GET["sql"])) . "</a>\n";
|
||||||
if (support("dump")) {
|
if (support("dump")) {
|
||||||
echo "<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "'>" . bold(lang('Dump'), isset($_GET["dump"])) . "</a>\n";
|
echo "<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "'>" . bold(lang('Dump'), isset($_GET["dump"])) . "</a>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>">
|
<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>">
|
||||||
</p>
|
</p>
|
||||||
@@ -549,6 +741,7 @@ if (DB == "" || !$missing) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($_GET["ns"] !== "" && !$missing) {
|
if ($_GET["ns"] !== "" && !$missing) {
|
||||||
|
echo '<p><a href="' . h(ME) . 'create=">' . bold(lang('Create new table'), $_GET["create"] === "") . "</a>\n";
|
||||||
$tables = tables_list();
|
$tables = tables_list();
|
||||||
if (!$tables) {
|
if (!$tables) {
|
||||||
echo "<p class='message'>" . lang('No tables.') . "\n";
|
echo "<p class='message'>" . lang('No tables.') . "\n";
|
||||||
@@ -559,13 +752,12 @@ if (DB == "" || !$missing) {
|
|||||||
$links[] = preg_quote($table, '/');
|
$links[] = preg_quote($table, '/');
|
||||||
}
|
}
|
||||||
echo "<script type='text/javascript'>\n";
|
echo "<script type='text/javascript'>\n";
|
||||||
echo "var jushLinks = { $jush: [ '" . addcslashes(h(ME), "\\'/") . "table=\$&', /\\b(" . implode("|", $links) . ")\\b/g ] };\n";
|
echo "var jushLinks = { $jush: [ '" . js_escape(ME) . "table=\$&', /\\b(" . implode("|", $links) . ")\\b/g ] };\n";
|
||||||
foreach (array("bac", "bra", "sqlite_quo", "mssql_bra") as $val) {
|
foreach (array("bac", "bra", "sqlite_quo", "mssql_bra") as $val) {
|
||||||
echo "jushLinks.$val = jushLinks.$jush;\n";
|
echo "jushLinks.$val = jushLinks.$jush;\n";
|
||||||
}
|
}
|
||||||
echo "</script>\n";
|
echo "</script>\n";
|
||||||
}
|
}
|
||||||
echo '<p><a href="' . h(ME) . 'create=">' . bold(lang('Create new table'), $_GET["create"] === "") . "</a>\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo (isset($_GET["sql"]) ? '<input type="hidden" name="sql" value="">'
|
echo (isset($_GET["sql"]) ? '<input type="hidden" name="sql" value="">'
|
||||||
|
@@ -1,12 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
$connection = '';
|
$connection = '';
|
||||||
|
|
||||||
if (!$drivers) {
|
|
||||||
page_header(lang('No extension'), lang('None of the supported PHP extensions (%s) are available.', implode(", ", $possible_drivers)), null);
|
|
||||||
page_footer("auth");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
$token = $_SESSION["token"];
|
$token = $_SESSION["token"];
|
||||||
if (!$_SESSION["token"]) {
|
if (!$_SESSION["token"]) {
|
||||||
$_SESSION["token"] = rand(1, 1e6); // defense against cross-site request forgery
|
$_SESSION["token"] = rand(1, 1e6); // defense against cross-site request forgery
|
||||||
@@ -89,7 +83,13 @@ function auth_error($exception = null) {
|
|||||||
page_footer("auth");
|
page_footer("auth");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_GET["username"]) && class_exists("Min_DB")) { // doesn't exists with passing wrong driver
|
if (isset($_GET["username"])) {
|
||||||
|
if (!class_exists("Min_DB")) {
|
||||||
|
unset($_SESSION["pwds"][DRIVER]); //! remove also from adminer_permanent
|
||||||
|
page_header(lang('No extension'), lang('None of the supported PHP extensions (%s) are available.', implode(", ", $possible_drivers)), false);
|
||||||
|
page_footer("auth");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
$connection = connect();
|
$connection = connect();
|
||||||
}
|
}
|
||||||
if (is_string($connection) || !$adminer->login($_GET["username"], get_session("pwds"))) {
|
if (is_string($connection) || !$adminer->login($_GET["username"], get_session("pwds"))) {
|
||||||
|
@@ -39,11 +39,12 @@ if (!defined("SID")) {
|
|||||||
|
|
||||||
// disable magic quotes to be able to use database escaping function
|
// disable magic quotes to be able to use database escaping function
|
||||||
remove_slashes(array(&$_GET, &$_POST, &$_COOKIE));
|
remove_slashes(array(&$_GET, &$_POST, &$_COOKIE));
|
||||||
if (function_exists("set_magic_quotes_runtime")) {
|
if (function_exists("set_magic_quotes_runtime")) { // removed in PHP 6
|
||||||
set_magic_quotes_runtime(false);
|
set_magic_quotes_runtime(false);
|
||||||
}
|
}
|
||||||
@set_time_limit(0); // @ - can be disabled
|
@set_time_limit(0); // @ - can be disabled
|
||||||
@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated
|
@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated
|
||||||
|
@ini_set("precision", 20); // @ - can be disabled
|
||||||
|
|
||||||
include "../adminer/include/lang.inc.php";
|
include "../adminer/include/lang.inc.php";
|
||||||
include "../adminer/lang/$LANG.inc.php";
|
include "../adminer/lang/$LANG.inc.php";
|
||||||
@@ -70,7 +71,6 @@ include "../adminer/include/xxtea.inc.php";
|
|||||||
include "../adminer/include/auth.inc.php";
|
include "../adminer/include/auth.inc.php";
|
||||||
include "./include/connect.inc.php";
|
include "./include/connect.inc.php";
|
||||||
include "./include/editing.inc.php";
|
include "./include/editing.inc.php";
|
||||||
include "./include/export.inc.php";
|
|
||||||
|
|
||||||
session_cache_limiter(""); // to allow restarting session
|
session_cache_limiter(""); // to allow restarting session
|
||||||
if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false) { // @ - may be disabled
|
if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false) { // @ - may be disabled
|
||||||
|
@@ -23,6 +23,9 @@ function connect_error() {
|
|||||||
}
|
}
|
||||||
echo "<p>" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "<b>$connection->server_info</b>", "<b>$connection->extension</b>") . "\n";
|
echo "<p>" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "<b>$connection->server_info</b>", "<b>$connection->extension</b>") . "\n";
|
||||||
echo "<p>" . lang('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n";
|
echo "<p>" . lang('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n";
|
||||||
|
if ($_GET["refresh"]) {
|
||||||
|
set_session("dbs", null);
|
||||||
|
}
|
||||||
$databases = get_databases();
|
$databases = get_databases();
|
||||||
if ($databases) {
|
if ($databases) {
|
||||||
$scheme = support("scheme");
|
$scheme = support("scheme");
|
||||||
@@ -40,6 +43,7 @@ function connect_error() {
|
|||||||
}
|
}
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
echo "<p><input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm("formChecked(this, /db/)") . ">\n";
|
echo "<p><input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm("formChecked(this, /db/)") . ">\n";
|
||||||
|
echo "<a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>\n";
|
||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
|||||||
$protocol = ($HTTPS ? "https" : "http");
|
$protocol = ($HTTPS ? "https" : "http");
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||||
<html lang="<?php echo $LANG; ?>">
|
<html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
@@ -26,7 +26,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
|||||||
<link rel="stylesheet" type="text/css" href="adminer.css">
|
<link rel="stylesheet" type="text/css" href="adminer.css">
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<body onload="bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info, 0, 3) : ""); ?>', '<?php echo $protocol; ?>');<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion('$protocol');"); ?>">
|
<body class="<?php echo lang('ltr'); ?>" onload="bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info, 0, 3) : ""); ?>', '<?php echo $protocol; ?>');<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion('$protocol');"); ?>">
|
||||||
<script type="text/javascript" src="../adminer/static/functions.js"></script>
|
<script type="text/javascript" src="../adminer/static/functions.js"></script>
|
||||||
<script type="text/javascript" src="static/editing.js"></script>
|
<script type="text/javascript" src="static/editing.js"></script>
|
||||||
|
|
||||||
|
@@ -333,3 +333,18 @@ function drop_create($drop, $create, $location, $message_drop, $message_alter, $
|
|||||||
}
|
}
|
||||||
return $dropped;
|
return $dropped;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get string to add a file in TAR
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
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 $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
||||||
|
}
|
||||||
|
@@ -1,176 +0,0 @@
|
|||||||
<?php
|
|
||||||
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 $return . str_repeat("\0", 512 - strlen($return)) . $contents . str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_table($table, $style, $is_view = false) {
|
|
||||||
if ($_POST["format"] != "sql") {
|
|
||||||
echo "\xef\xbb\xbf"; // UTF-8 byte order mark
|
|
||||||
if ($style) {
|
|
||||||
dump_csv(array_keys(fields($table)));
|
|
||||||
}
|
|
||||||
} elseif ($style) {
|
|
||||||
$create = create_sql($table, $_POST["auto_increment"]);
|
|
||||||
if ($create) {
|
|
||||||
if ($style == "DROP+CREATE") {
|
|
||||||
echo "DROP " . ($is_view ? "VIEW" : "TABLE") . " IF EXISTS " . table($table) . ";\n";
|
|
||||||
}
|
|
||||||
if ($is_view) {
|
|
||||||
// remove DEFINER with current user
|
|
||||||
$create = preg_replace('~^([A-Z =]+) DEFINER=`' . str_replace("@", "`@`", logged_user()) . '`~', '\\1', $create); //! proper escaping of user
|
|
||||||
}
|
|
||||||
echo ($style != "CREATE+ALTER" ? $create : ($is_view ? substr_replace($create, " OR REPLACE", 6, 0) : substr_replace($create, " IF NOT EXISTS", 12, 0))) . ";\n\n";
|
|
||||||
}
|
|
||||||
if ($style == "CREATE+ALTER" && !$is_view) {
|
|
||||||
// create procedure which iterates over original columns and adds new and removes old
|
|
||||||
$query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . q($table) . " ORDER BY ORDINAL_POSITION";
|
|
||||||
echo "DELIMITER ;;
|
|
||||||
CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN
|
|
||||||
DECLARE _column_name, _collation_name, after varchar(64) DEFAULT '';
|
|
||||||
DECLARE _column_type, _column_default text;
|
|
||||||
DECLARE _is_nullable char(3);
|
|
||||||
DECLARE _extra varchar(30);
|
|
||||||
DECLARE _column_comment varchar(255);
|
|
||||||
DECLARE done, set_after bool DEFAULT 0;
|
|
||||||
DECLARE add_columns text DEFAULT '";
|
|
||||||
$fields = array();
|
|
||||||
$after = "";
|
|
||||||
foreach (get_rows($query) as $row) {
|
|
||||||
$default = $row["COLUMN_DEFAULT"];
|
|
||||||
$row["default"] = (isset($default) ? q($default) : "NULL");
|
|
||||||
$row["after"] = q($after); //! rgt AFTER lft, lft AFTER id doesn't work
|
|
||||||
$row["alter"] = escape_string(idf_escape($row["COLUMN_NAME"])
|
|
||||||
. " $row[COLUMN_TYPE]"
|
|
||||||
. ($row["COLLATION_NAME"] ? " COLLATE $row[COLLATION_NAME]" : "")
|
|
||||||
. (isset($default) ? " DEFAULT " . ($default == "CURRENT_TIMESTAMP" ? $default : $row["default"]) : "")
|
|
||||||
. ($row["IS_NULLABLE"] == "YES" ? "" : " NOT NULL")
|
|
||||||
. ($row["EXTRA"] ? " $row[EXTRA]" : "")
|
|
||||||
. ($row["COLUMN_COMMENT"] ? " COMMENT " . q($row["COLUMN_COMMENT"]) : "")
|
|
||||||
. ($after ? " AFTER " . idf_escape($after) : " FIRST")
|
|
||||||
);
|
|
||||||
echo ", ADD $row[alter]";
|
|
||||||
$fields[] = $row;
|
|
||||||
$after = $row["COLUMN_NAME"];
|
|
||||||
}
|
|
||||||
echo "';
|
|
||||||
DECLARE columns CURSOR FOR $query;
|
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
|
||||||
SET @alter_table = '';
|
|
||||||
OPEN columns;
|
|
||||||
REPEAT
|
|
||||||
FETCH columns INTO _column_name, _column_default, _is_nullable, _collation_name, _column_type, _extra, _column_comment;
|
|
||||||
IF NOT done THEN
|
|
||||||
SET set_after = 1;
|
|
||||||
CASE _column_name";
|
|
||||||
foreach ($fields as $row) {
|
|
||||||
echo "
|
|
||||||
WHEN " . q($row["COLUMN_NAME"]) . " THEN
|
|
||||||
SET add_columns = REPLACE(add_columns, ', ADD $row[alter]', '');
|
|
||||||
IF NOT (_column_default <=> $row[default]) OR _is_nullable != '$row[IS_NULLABLE]' OR _collation_name != '$row[COLLATION_NAME]' OR _column_type != " . q($row["COLUMN_TYPE"]) . " OR _extra != '$row[EXTRA]' OR _column_comment != " . q($row["COLUMN_COMMENT"]) . " OR after != $row[after] THEN
|
|
||||||
SET @alter_table = CONCAT(@alter_table, ', MODIFY $row[alter]');
|
|
||||||
END IF;"; //! don't replace in comment
|
|
||||||
}
|
|
||||||
echo "
|
|
||||||
ELSE
|
|
||||||
SET @alter_table = CONCAT(@alter_table, ', DROP ', _column_name);
|
|
||||||
SET set_after = 0;
|
|
||||||
END CASE;
|
|
||||||
IF set_after THEN
|
|
||||||
SET after = _column_name;
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
UNTIL done END REPEAT;
|
|
||||||
CLOSE columns;
|
|
||||||
IF @alter_table != '' OR add_columns != '' THEN
|
|
||||||
SET alter_command = CONCAT(alter_command, 'ALTER TABLE " . table($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n');
|
|
||||||
END IF;
|
|
||||||
END;;
|
|
||||||
DELIMITER ;
|
|
||||||
CALL adminer_alter(@adminer_alter);
|
|
||||||
DROP PROCEDURE adminer_alter;
|
|
||||||
|
|
||||||
";
|
|
||||||
//! indexes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_data($table, $style, $select = "") {
|
|
||||||
global $connection, $jush;
|
|
||||||
$max_packet = ($jush == "sqlite" ? 0 : 1048576); // default, minimum is 1024
|
|
||||||
if ($style) {
|
|
||||||
if ($_POST["format"] == "sql" && $style == "TRUNCATE+INSERT") {
|
|
||||||
echo truncate_sql($table) . ";\n";
|
|
||||||
}
|
|
||||||
$fields = fields($table);
|
|
||||||
$result = $connection->query(($select ? $select : "SELECT * FROM " . table($table)), 1); // 1 - MYSQLI_USE_RESULT //! enum and set as numbers
|
|
||||||
if ($result) {
|
|
||||||
$insert = "";
|
|
||||||
$buffer = "";
|
|
||||||
while ($row = $result->fetch_assoc()) {
|
|
||||||
if ($_POST["format"] != "sql") {
|
|
||||||
dump_csv($row);
|
|
||||||
} else {
|
|
||||||
if (!$insert) {
|
|
||||||
$insert = "INSERT INTO " . table($table) . " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ") VALUES";
|
|
||||||
}
|
|
||||||
foreach ($row as $key => $val) {
|
|
||||||
$row[$key] = (isset($val) ? (ereg('int|float|double|decimal', $fields[$key]["type"]) ? $val : q($val)) : "NULL"); //! columns looking like functions
|
|
||||||
}
|
|
||||||
$s = implode(",\t", $row);
|
|
||||||
if ($style == "INSERT+UPDATE") {
|
|
||||||
$set = array();
|
|
||||||
foreach ($row as $key => $val) {
|
|
||||||
$set[] = idf_escape($key) . " = $val";
|
|
||||||
}
|
|
||||||
echo "$insert ($s) ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
|
|
||||||
} else {
|
|
||||||
$s = ($max_packet ? "\n" : " ") . "($s)";
|
|
||||||
if (!$buffer) {
|
|
||||||
$buffer = $insert . $s;
|
|
||||||
} elseif (strlen($buffer) + 2 + strlen($s) < $max_packet) { // 2 - separator and terminator length
|
|
||||||
$buffer .= ",$s";
|
|
||||||
} else {
|
|
||||||
$buffer .= ";\n";
|
|
||||||
echo $buffer;
|
|
||||||
$buffer = $insert . $s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($_POST["format"] == "sql" && $style != "INSERT+UPDATE" && $buffer) {
|
|
||||||
$buffer .= ";\n";
|
|
||||||
echo $buffer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_headers($identifier, $multi_table = false) {
|
|
||||||
$filename = ($identifier != "" ? friendly_url($identifier) : "adminer");
|
|
||||||
$output = $_POST["output"];
|
|
||||||
$ext = ($_POST["format"] == "sql" ? "sql" : ($multi_table ? "tar" : "csv")); // multiple CSV packed to TAR
|
|
||||||
header("Content-Type: " .
|
|
||||||
($output == "bz2" ? "application/x-bzip" :
|
|
||||||
($output == "gz" ? "application/x-gzip" :
|
|
||||||
($ext == "tar" ? "application/x-tar" :
|
|
||||||
($ext == "sql" || $output != "file" ? "text/plain" : "text/csv") . "; charset=utf-8"
|
|
||||||
))));
|
|
||||||
if ($output != "text") {
|
|
||||||
header("Content-Disposition: attachment; filename=$filename.$ext" . ($output != "file" && !ereg('[^0-9a-z]', $output) ? ".$output" : ""));
|
|
||||||
}
|
|
||||||
session_write_close();
|
|
||||||
if ($_POST["output"] == "bz2") {
|
|
||||||
ob_start('bzcompress', 1e6);
|
|
||||||
}
|
|
||||||
if ($_POST["output"] == "gz") {
|
|
||||||
ob_start('gzencode', 1e6);
|
|
||||||
}
|
|
||||||
return $ext;
|
|
||||||
}
|
|
@@ -143,6 +143,14 @@ function confirm($count = "") {
|
|||||||
return " onclick=\"return confirm('" . lang('Are you sure?') . ($count ? " (' + $count + ')" : "") . "');\"";
|
return " onclick=\"return confirm('" . lang('Are you sure?') . ($count ? " (' + $count + ')" : "") . "');\"";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Escape string for JavaScript apostrophes
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function js_escape($string) {
|
||||||
|
return addcslashes($string, "\r\n'\\/"); // slash for <script>
|
||||||
|
}
|
||||||
|
|
||||||
/** Get INI boolean value
|
/** Get INI boolean value
|
||||||
* @param string
|
* @param string
|
||||||
* @return bool
|
* @return bool
|
||||||
@@ -575,8 +583,9 @@ function hidden_fields_get() {
|
|||||||
* @return array array($col => array())
|
* @return array array($col => array())
|
||||||
*/
|
*/
|
||||||
function column_foreign_keys($table) {
|
function column_foreign_keys($table) {
|
||||||
|
global $adminer;
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (foreign_keys($table) as $foreign_key) {
|
foreach ($adminer->foreignKeys($table) as $foreign_key) {
|
||||||
foreach ($foreign_key["source"] as $val) {
|
foreach ($foreign_key["source"] as $val) {
|
||||||
$return[$val][] = $foreign_key;
|
$return[$val][] = $foreign_key;
|
||||||
}
|
}
|
||||||
@@ -593,11 +602,13 @@ function column_foreign_keys($table) {
|
|||||||
*/
|
*/
|
||||||
function enum_input($type, $attrs, $field, $value) {
|
function enum_input($type, $attrs, $field, $value) {
|
||||||
preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches);
|
preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches);
|
||||||
|
$return = "";
|
||||||
foreach ($matches[1] as $i => $val) {
|
foreach ($matches[1] as $i => $val) {
|
||||||
$val = stripcslashes(str_replace("''", "'", $val));
|
$val = stripcslashes(str_replace("''", "'", $val));
|
||||||
$checked = (is_int($value) ? $value == $i+1 : (is_array($value) ? in_array($i+1, $value) : $value === $val));
|
$checked = (is_int($value) ? $value == $i+1 : (is_array($value) ? in_array($i+1, $value) : $value === $val));
|
||||||
echo " <label><input type='$type'$attrs value='" . ($i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($val) . '</label>';
|
$return .= " <label><input type='$type'$attrs value='" . ($i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($val) . '</label>';
|
||||||
}
|
}
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print edit input field
|
/** Print edit input field
|
||||||
@@ -613,9 +624,7 @@ function input($field, $value, $function) {
|
|||||||
$functions = (isset($_GET["select"]) ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field);
|
$functions = (isset($_GET["select"]) ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field);
|
||||||
$attrs = " name='fields[$name]'";
|
$attrs = " name='fields[$name]'";
|
||||||
if ($field["type"] == "enum") {
|
if ($field["type"] == "enum") {
|
||||||
echo nbsp($functions[""]) . "<td>" . ($functions["orig"] ? "<label><input type='radio'$attrs value='-1' checked><i>$functions[orig]</i></label> " : "");
|
echo nbsp($functions[""]) . "<td>" . $adminer->editInput($_GET["edit"], $field, $attrs, $value);
|
||||||
echo $adminer->editInput($_GET["edit"], $field, $attrs, $value);
|
|
||||||
enum_input("radio", $attrs, $field, $value);
|
|
||||||
} else {
|
} else {
|
||||||
$first = 0;
|
$first = 0;
|
||||||
foreach ($functions as $key => $val) {
|
foreach ($functions as $key => $val) {
|
||||||
@@ -624,7 +633,7 @@ function input($field, $value, $function) {
|
|||||||
}
|
}
|
||||||
$first++;
|
$first++;
|
||||||
}
|
}
|
||||||
$onchange = ($first ? " onchange=\"var f = this.form['function[" . addcslashes($name, "\r\n'\\") . "]']; if ($first > f.selectedIndex) f.selectedIndex = $first;\"" : "");
|
$onchange = ($first ? " onchange=\"var f = this.form['function[" . js_escape($name) . "]']; if ($first > f.selectedIndex) f.selectedIndex = $first;\"" : "");
|
||||||
$attrs .= $onchange;
|
$attrs .= $onchange;
|
||||||
echo (count($functions) > 1 ? html_select("function[$name]", $functions, !isset($function) || in_array($function, $functions) || isset($functions[$function]) ? $function : "") : nbsp(reset($functions))) . '<td>';
|
echo (count($functions) > 1 ? html_select("function[$name]", $functions, !isset($function) || in_array($function, $functions) || isset($functions[$function]) ? $function : "") : nbsp(reset($functions))) . '<td>';
|
||||||
$input = $adminer->editInput($_GET["edit"], $field, $attrs, $value); // usage in call is without a table
|
$input = $adminer->editInput($_GET["edit"], $field, $attrs, $value); // usage in call is without a table
|
||||||
@@ -643,7 +652,7 @@ function input($field, $value, $function) {
|
|||||||
echo "<textarea " . ($jush != "sqlite" || ereg("\n", $value) ? "cols='50' rows='12'" : "cols='30' rows='1' style='height: 1.2em;'") . "$attrs onkeydown='return textareaKeydown(this, event);'>" . h($value) . '</textarea>'; // 1.2em - line-height
|
echo "<textarea " . ($jush != "sqlite" || ereg("\n", $value) ? "cols='50' rows='12'" : "cols='30' rows='1' style='height: 1.2em;'") . "$attrs onkeydown='return textareaKeydown(this, event);'>" . h($value) . '</textarea>'; // 1.2em - line-height
|
||||||
} else {
|
} else {
|
||||||
// int(3) is only a display hint
|
// int(3) is only a display hint
|
||||||
$maxlength = (!ereg('int', $field["type"]) && preg_match('~^([0-9]+)(,([0-9]+))?$~', $field["length"], $match) ? ((ereg("binary", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
|
$maxlength = (!ereg('int', $field["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $field["length"], $match) ? ((ereg("binary", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
|
||||||
echo "<input value='" . h($value) . "'" . ($maxlength ? " maxlength='$maxlength'" : "") . (ereg('char|binary', $field["type"]) && $maxlength > 20 ? " size='40'" : "") . "$attrs>";
|
echo "<input value='" . h($value) . "'" . ($maxlength ? " maxlength='$maxlength'" : "") . (ereg('char|binary', $field["type"]) && $maxlength > 20 ? " size='40'" : "") . "$attrs>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -665,7 +674,7 @@ function process_input($field) {
|
|||||||
if ($value == "") {
|
if ($value == "") {
|
||||||
return "NULL";
|
return "NULL";
|
||||||
}
|
}
|
||||||
return intval($value);
|
return +$value;
|
||||||
}
|
}
|
||||||
if ($field["auto_increment"] && $value == "") {
|
if ($field["auto_increment"] && $value == "") {
|
||||||
return null;
|
return null;
|
||||||
@@ -721,11 +730,11 @@ function search_tables() {
|
|||||||
*/
|
*/
|
||||||
function dump_csv($row) {
|
function dump_csv($row) {
|
||||||
foreach ($row as $key => $val) {
|
foreach ($row as $key => $val) {
|
||||||
if (preg_match("~[\"\n,;]~", $val) || $val === "") {
|
if (preg_match("~[\"\n,;\t]~", $val) || $val === "") {
|
||||||
$row[$key] = '"' . str_replace('"', '""', $val) . '"';
|
$row[$key] = '"' . str_replace('"', '""', $val) . '"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo implode(($_POST["format"] == "csv" ? "," : ";"), $row) . "\n";
|
echo implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $row) . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Apply SQL function
|
/** Apply SQL function
|
||||||
@@ -785,7 +794,7 @@ function is_mail($email) {
|
|||||||
*/
|
*/
|
||||||
function is_url($string) {
|
function is_url($string) {
|
||||||
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component //! IDN
|
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component //! IDN
|
||||||
return (preg_match("~^(https?)://($domain?\\.)+$domain(:[0-9]+)?(/.*)?(\\?.*)?(#.*)?\$~i", $string, $match) ? strtolower($match[1]) : ""); //! restrict path, query and fragment characters
|
return (preg_match("~^(https?)://($domain?\\.)+$domain(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $string, $match) ? strtolower($match[1]) : ""); //! restrict path, query and fragment characters
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print header for hidden fieldset (close by </div></fieldset>)
|
/** Print header for hidden fieldset (close by </div></fieldset>)
|
||||||
|
@@ -18,6 +18,7 @@ $langs = array(
|
|||||||
'zh-tw' => '繁體中文', // http://tzangms.com
|
'zh-tw' => '繁體中文', // http://tzangms.com
|
||||||
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
|
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
|
||||||
'ta' => 'தமிழ்', // G. Sampath Kumar, Chennai, India, sampathkumar11@gmail.com
|
'ta' => 'தமிழ்', // G. Sampath Kumar, Chennai, India, sampathkumar11@gmail.com
|
||||||
|
'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr
|
||||||
);
|
);
|
||||||
|
|
||||||
function lang($idf, $number = null) {
|
function lang($idf, $number = null) {
|
||||||
|
@@ -79,5 +79,4 @@ if (extension_loaded('pdo')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$possible_drivers = array();
|
|
||||||
$drivers = array();
|
$drivers = array();
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
<?php
|
<?php
|
||||||
$VERSION = "3.0.2-dev";
|
$VERSION = "3.1.0-dev";
|
||||||
|
@@ -1,14 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
/** Adminer - Compact database management
|
/** Adminer - Compact database management
|
||||||
* @link http://www.adminer.org/
|
* @link http://www.adminer.org/
|
||||||
* @author Jakub Vrana, http://php.vrana.cz/
|
* @author Jakub Vrana, http://www.vrana.cz/
|
||||||
* @copyright 2007 Jakub Vrana
|
* @copyright 2007 Jakub Vrana
|
||||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
* @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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include "./include/bootstrap.inc.php";
|
include "./include/bootstrap.inc.php";
|
||||||
|
|
||||||
$enum_length = '\'(?:\'\'|[^\'\\\\]|\\\\.)*\'|"(?:""|[^"\\\\]|\\\\.)*"';
|
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*+'";
|
||||||
$inout = array("IN", "OUT", "INOUT");
|
$inout = array("IN", "OUT", "INOUT");
|
||||||
|
|
||||||
if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"]) {
|
if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"]) {
|
||||||
|
@@ -21,7 +21,7 @@ if ($_POST && !$error && !$_POST["add"]) {
|
|||||||
foreach ($index["columns"] as $key => $column) {
|
foreach ($index["columns"] as $key => $column) {
|
||||||
if ($column != "") {
|
if ($column != "") {
|
||||||
$length = $index["lengths"][$key];
|
$length = $index["lengths"][$key];
|
||||||
$set[] = idf_escape($column) . ($length ? "(" . intval($length) . ")" : "");
|
$set[] = idf_escape($column) . ($length ? "(" . (+$length) . ")" : "");
|
||||||
$columns[] = $column;
|
$columns[] = $column;
|
||||||
$lengths[] = ($length ? $length : null);
|
$lengths[] = ($length ? $length : null);
|
||||||
}
|
}
|
||||||
|
268
adminer/lang/ar.inc.php
Normal file
268
adminer/lang/ar.inc.php
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
'Login' => 'تسجيل الدخول',
|
||||||
|
'Logout successful.' => 'مع السلامة.',
|
||||||
|
'Invalid credentials.' => 'فشل في تسجيل الدخول.',
|
||||||
|
'Server' => 'الخادم',
|
||||||
|
'Username' => 'المستعمل',
|
||||||
|
'Password' => 'كلمة المرور',
|
||||||
|
'Select database' => 'إختر قاعدة البيانات',
|
||||||
|
'Invalid database.' => 'قاعدة بيانات خاطئة.',
|
||||||
|
'Create new database' => 'أنشئ فاعدة بيانات',
|
||||||
|
'Table has been dropped.' => 'تم حذف الجدول.',
|
||||||
|
'Table has been altered.' => 'تم تعديل الجدول.',
|
||||||
|
'Table has been created.' => 'تم إنشاء الجدول.',
|
||||||
|
'Alter table' => 'تعديل الجدول',
|
||||||
|
'Create table' => 'إنشاء جدول',
|
||||||
|
'Table name' => 'إسم الجدول',
|
||||||
|
'engine' => 'المحرك',
|
||||||
|
'collation' => 'الترتيب',
|
||||||
|
'Column name' => 'إسم العمود',
|
||||||
|
'Type' => 'النوع',
|
||||||
|
'Length' => 'الطول',
|
||||||
|
'Auto Increment' => 'تزايد تلقائي',
|
||||||
|
'Options' => 'خيارات',
|
||||||
|
'Save' => 'حفظ',
|
||||||
|
'Drop' => 'حذف',
|
||||||
|
'Database has been created.' => 'تم إنشاء قاعدة البيانات.',
|
||||||
|
'Database has been renamed.' => 'تمت إعادة تسمية فاعدة البيانات.',
|
||||||
|
'Database has been altered.' => 'تم تعديل قاعدة البيانات.',
|
||||||
|
'Alter database' => 'تعديل قاعدة البيانات',
|
||||||
|
'Create database' => 'إنشاء قاعدة بيانات',
|
||||||
|
'SQL command' => 'إستعلام SQL',
|
||||||
|
'Dump' => 'تصدير',
|
||||||
|
'Logout' => 'تسجيل الخروج',
|
||||||
|
'database' => 'قاعدة بيانات',
|
||||||
|
'Use' => 'المستعمل',
|
||||||
|
'No tables.' => 'لا توجد جداول.',
|
||||||
|
'select' => 'تحديد',
|
||||||
|
'Create new table' => 'أنشئ جدول جديد',
|
||||||
|
'Item has been deleted.' => 'تم حذف العنصر.',
|
||||||
|
'Item has been updated.' => 'تم تعديل العنصر.',
|
||||||
|
'Edit' => 'تعديل',
|
||||||
|
'Insert' => 'إنشاء',
|
||||||
|
'Save and insert next' => 'جفظ و إنشاء التالي',
|
||||||
|
'Delete' => 'مسح',
|
||||||
|
'Database' => 'قاعدة بيانات',
|
||||||
|
'Routines' => 'الروتينات',
|
||||||
|
'Indexes have been altered.' => 'تم تعديل المؤشر.',
|
||||||
|
'Indexes' => 'المؤشرات',
|
||||||
|
'Alter indexes' => 'تعديل المؤشرات',
|
||||||
|
'Add next' => 'إضافة التالي',
|
||||||
|
'Language' => 'اللغة',
|
||||||
|
'Select' => 'إختيار',
|
||||||
|
'New item' => 'عنصر جديد',
|
||||||
|
'Search' => 'بحث',
|
||||||
|
'Sort' => 'ترتيب',
|
||||||
|
'descending' => 'تنازلي',
|
||||||
|
'Limit' => 'حد',
|
||||||
|
'No rows.' => 'لا توجد نتائج.',
|
||||||
|
'Action' => 'حركة',
|
||||||
|
'edit' => 'تعديل',
|
||||||
|
'Page' => 'صفحة',
|
||||||
|
'Query executed OK, %d row(s) affected.' => 'تم تنفسذ الإستعلام, %d عدد الأسطر المعدلة.',
|
||||||
|
'Error in query' => 'هناك خطأ في الإستعلام',
|
||||||
|
'Execute' => 'تنفيذ',
|
||||||
|
'Table' => 'جدول',
|
||||||
|
'Foreign keys' => 'مفاتيح أجنبية',
|
||||||
|
'Triggers' => 'الزنادات',
|
||||||
|
'View' => 'عرض',
|
||||||
|
'Unable to select the table' => 'من غير الممكن إختيار الجدول',
|
||||||
|
'Invalid CSRF token. Send the form again.' => 'CSRF Token خاطئ. من فضلك أعد إرسال الإستمارة.',
|
||||||
|
'Comment' => 'تعليق',
|
||||||
|
'Default values' => 'القيمة الإفتراضية',
|
||||||
|
'%d byte(s)' => '%d بايت',
|
||||||
|
'No commands to execute.' => 'لا توجد أوامر للتنفيذ.',
|
||||||
|
'Unable to upload a file.' => 'من غير الممكن رفع الملف.',
|
||||||
|
'File upload' => 'رفع ملف',
|
||||||
|
'File uploads are disabled.' => 'تم إلغاء رفع الملفات.',
|
||||||
|
'Routine has been called, %d row(s) affected.' => 'تم إستدعاء الروتين, عدد الأسطر المعدلة %d.',
|
||||||
|
'Call' => 'إستدعاء',
|
||||||
|
'No extension' => 'إمتداد غير موجود',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'إمتدادات php المدعومة غير موجودة.',
|
||||||
|
'Session support must be enabled.' => 'عليك تفعيل نظام الجلسات.',
|
||||||
|
'Session expired, please login again.' => 'إنتهت الجلسة، من فضلك أعد تسجيل الدخول.',
|
||||||
|
'Text length' => 'طول النص',
|
||||||
|
'Foreign key has been dropped.' => 'المفتاح الأجنبي تم مسحه.',
|
||||||
|
'Foreign key has been altered.' => 'المفتاح الأجنبي تم تعديله.',
|
||||||
|
'Foreign key has been created.' => 'المفتاح الأجنبي تم إنشاؤه.',
|
||||||
|
'Foreign key' => 'مفتاح أجنبي',
|
||||||
|
'Target table' => 'الجدول المستهدف',
|
||||||
|
'Change' => 'تعديل',
|
||||||
|
'Source' => 'المصدر',
|
||||||
|
'Target' => 'الهدف',
|
||||||
|
'Add column' => 'أضف عمود',
|
||||||
|
'Alter' => 'تعديل',
|
||||||
|
'Add foreign key' => 'إضافة مفتاح أجنبي',
|
||||||
|
'ON DELETE' => 'ON DELETE',
|
||||||
|
'ON UPDATE' => 'ON UPDATE',
|
||||||
|
'Index Type' => 'نوع المؤشر',
|
||||||
|
'Column (length)' => 'العمود (الطول)',
|
||||||
|
'View has been dropped.' => 'تم مسح العرض.',
|
||||||
|
'View has been altered.' => 'تم تعديل العرض.',
|
||||||
|
'View has been created.' => 'تم إنشاء العرض.',
|
||||||
|
'Alter view' => 'تعديل عرض',
|
||||||
|
'Create view' => 'إنشاء عرض',
|
||||||
|
'Name' => 'الإسم',
|
||||||
|
'Process list' => 'قائمة الإجراءات',
|
||||||
|
'%d process(es) have been killed.' => 'عدد الإجراءات التي تم إيقافها %d.',
|
||||||
|
'Kill' => 'إيقاف',
|
||||||
|
'Parameter name' => 'إسم المتغير',
|
||||||
|
'Database schema' => 'مخطط فاعدة البيانات',
|
||||||
|
'Create procedure' => 'إنشاء إجراء',
|
||||||
|
'Create function' => 'إنشاء دالة',
|
||||||
|
'Routine has been dropped.' => 'تم حذف الروتين.',
|
||||||
|
'Routine has been altered.' => 'تم تعديل الروتين.',
|
||||||
|
'Routine has been created.' => 'تم إنشاء الروتين.',
|
||||||
|
'Alter function' => 'تعديل الدالة',
|
||||||
|
'Alter procedure' => 'تعديل الإجراء',
|
||||||
|
'Return type' => 'نوع العودة',
|
||||||
|
'Add trigger' => 'إضافة زناد',
|
||||||
|
'Trigger has been dropped.' => 'تم حذف الزناد.',
|
||||||
|
'Trigger has been altered.' => 'تم تعديل الزناد.',
|
||||||
|
'Trigger has been created.' => 'تم إنشاء الزناد.',
|
||||||
|
'Alter trigger' => 'تعديل زناد',
|
||||||
|
'Create trigger' => 'إنشاء زناد',
|
||||||
|
'Time' => 'الوقت',
|
||||||
|
'Event' => 'الحدث',
|
||||||
|
'%d row(s)' => '%d أسطر',
|
||||||
|
'Remove' => 'مسح',
|
||||||
|
'Are you sure?' => 'هل أنت متأكد؟',
|
||||||
|
'Privileges' => 'الإمتيازات',
|
||||||
|
'Create user' => 'إنشاء مستخدم',
|
||||||
|
'User has been dropped.' => 'تم حذف المستخدم.',
|
||||||
|
'User has been altered.' => 'تم تعديل المستخدم.',
|
||||||
|
'User has been created.' => 'تم إنشاء المستخدم.',
|
||||||
|
'Hashed' => 'تلبيد',
|
||||||
|
'Column' => 'عمود',
|
||||||
|
'Routine' => 'روتين',
|
||||||
|
'Grant' => 'Grant',
|
||||||
|
'Revoke' => 'Revoke',
|
||||||
|
'%s version: %s through PHP extension %s' => 'النسخة %s : %s عن طريق إمتداد ال PHP %s',
|
||||||
|
'Logged as: %s' => 'تم تسجيل الدخول بإسم %s',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'معلومات POST كبيرة جدا. قم بتقليص حجم المعلومات أو قم بزيادة قيمة %s في خيارات ال PHP.',
|
||||||
|
'Move up' => 'نقل للأعلى',
|
||||||
|
'Move down' => 'نقل للأسفل',
|
||||||
|
'Export' => 'تصدير',
|
||||||
|
'Tables' => 'جداول',
|
||||||
|
'Data' => 'معلومات',
|
||||||
|
'Output' => 'إخراج',
|
||||||
|
'open' => 'فتح',
|
||||||
|
'save' => 'حفظ',
|
||||||
|
'Format' => 'الصيغة',
|
||||||
|
'Functions' => 'الدوال',
|
||||||
|
'Aggregation' => 'تجميع',
|
||||||
|
'Event has been dropped.' => 'تم مسح الحدث.',
|
||||||
|
'Event has been altered.' => 'تم تعديل الحدث.',
|
||||||
|
'Event has been created.' => 'تم إنشاء الحدث.',
|
||||||
|
'Alter event' => 'تعديل حدث',
|
||||||
|
'Create event' => 'إنشاء حدث',
|
||||||
|
'Start' => 'إبدأ',
|
||||||
|
'End' => 'إنهاء',
|
||||||
|
'Every' => 'كل',
|
||||||
|
'Status' => 'حالة',
|
||||||
|
'On completion preserve' => 'حفظ عند الإنتهاء',
|
||||||
|
'Events' => 'الأحداث',
|
||||||
|
'Schedule' => 'مواعيد',
|
||||||
|
'At given time' => 'في وقت محدد',
|
||||||
|
'Save and continue edit' => 'إحفظ و واصل التعديل',
|
||||||
|
'original' => 'الأصلي',
|
||||||
|
'Tables have been truncated.' => 'تم قطع الجداول.',
|
||||||
|
'Tables have been moved.' => 'تم نقل الجداول.',
|
||||||
|
'Tables have been dropped.' => 'تم حذف الجداول.',
|
||||||
|
'Tables and views' => 'الجداول و العروض',
|
||||||
|
'Engine' => 'المحرك',
|
||||||
|
'Collation' => 'ترتيب',
|
||||||
|
'Data Length' => 'طول المعطيات.',
|
||||||
|
'Index Length' => 'طول المؤشر.',
|
||||||
|
'Data Free' => 'المساحة الحرة',
|
||||||
|
'Rows' => 'الأسطر',
|
||||||
|
',' => ',',
|
||||||
|
'Analyze' => 'تحليل',
|
||||||
|
'Optimize' => 'تحسين',
|
||||||
|
'Check' => 'فحص',
|
||||||
|
'Repair' => 'إصلاح',
|
||||||
|
'Truncate' => 'قطع',
|
||||||
|
'Move to other database' => 'نقل إلى قاعدة بيانات أخرى',
|
||||||
|
'Move' => 'نقل',
|
||||||
|
'%d item(s) have been affected.' => 'عدد العناصر المعدلة هو %d.',
|
||||||
|
'whole result' => 'نتيجة كاملة',
|
||||||
|
'Clone' => 'نسخ',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'لقد تجاوزت العدد الأقصى للحقول. يرجى الرفع من %s و %s.',
|
||||||
|
'Partition by' => 'مقسم بواسطة',
|
||||||
|
'Partitions' => 'التقسيمات',
|
||||||
|
'Partition name' => 'إسم التقسيم',
|
||||||
|
'Values' => 'القيم',
|
||||||
|
'%d row(s) have been imported.' => 'عدد الأسطر المستوردة هو %d.',
|
||||||
|
'anywhere' => 'في اي مكان',
|
||||||
|
'CSV Import' => 'إستيراد CSV',
|
||||||
|
'Import' => 'إستيراد',
|
||||||
|
'Stop on error' => 'أوقف في حالة حدوث خطأ',
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'$1-$3-$5' => '$5/$3/$1',
|
||||||
|
'[yyyy]-mm-dd' => 'jj/mm/[aaaa]',
|
||||||
|
'History' => 'تاريخ',
|
||||||
|
'Variables' => 'متغيرات',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'أعمدة المصدر و الهدف يجب أن تكون بنفس النوع, يجب أن يكون هناك مؤشر في أعمدة الهدف و البيانات المرجعية يجب ان تكون موجودة.',
|
||||||
|
'Relations' => 'علاقات',
|
||||||
|
'Run file' => 'نفذ الملف',
|
||||||
|
'Clear' => 'مسح',
|
||||||
|
'Maximum allowed file size is %sB.' => 'حجم الملف الأقصى هو %sB.',
|
||||||
|
'Numbers' => 'أعداد',
|
||||||
|
'Date and time' => 'التاريخ و الوقت',
|
||||||
|
'Strings' => 'سلاسل',
|
||||||
|
'Binary' => 'ثنائية',
|
||||||
|
'Lists' => 'قوائم',
|
||||||
|
'Editor' => 'المحرر',
|
||||||
|
'E-mail' => 'البريد الإلكتروني',
|
||||||
|
'From' => 'من',
|
||||||
|
'Subject' => 'الموضوع',
|
||||||
|
'Send' => 'إرسال',
|
||||||
|
'%d e-mail(s) have been sent.' => 'تم إرسال %d رسالة.',
|
||||||
|
'Webserver file %s' => 'ملف %s من خادم الويب',
|
||||||
|
'File does not exist.' => 'الملف غير موجود.',
|
||||||
|
'%d in total' => '%d في المجموع',
|
||||||
|
'Permanent login' => 'تسجيل دخول دائم',
|
||||||
|
'Databases have been dropped.' => 'تم حذف قواعد البيانات.',
|
||||||
|
'Database has been dropped.' => 'تم حذف قاعدة البيانات.',
|
||||||
|
'Search data in tables' => 'بحث في الجداول',
|
||||||
|
'schema' => 'المخطط',
|
||||||
|
'Schema' => 'المخطط',
|
||||||
|
'Alter schema' => 'تعديل المخطط',
|
||||||
|
'Create schema' => 'إنشاء مخطط',
|
||||||
|
'Schema has been dropped.' => 'تم حذف المخطط.',
|
||||||
|
'Schema has been created.' => 'تم إنشاء المخطط.',
|
||||||
|
'Schema has been altered.' => 'تم تعديل المخطط.',
|
||||||
|
'Sequences' => 'السلاسل',
|
||||||
|
'Create sequence' => 'إنشاء سلسلة',
|
||||||
|
'Alter sequence' => 'تعديل سلسلة',
|
||||||
|
'Sequence has been dropped.' => 'تم حذف السلسلة.',
|
||||||
|
'Sequence has been created.' => 'تم إنشاء السلسلة.',
|
||||||
|
'Sequence has been altered.' => 'تم تعديل السلسلة.',
|
||||||
|
'User types' => 'نوع المستخدم',
|
||||||
|
'Create type' => 'إنشاء نوع',
|
||||||
|
'Alter type' => 'تعديل نوع',
|
||||||
|
'Type has been dropped.' => 'تم حذف النوع.',
|
||||||
|
'Type has been created.' => 'تم إنشاء النوع.',
|
||||||
|
'Double click on a value to modify it.' => 'أنقر نقرا مزدوجا على قيمة لتعديلها.',
|
||||||
|
'Use edit link to modify this value.' => 'إستعمل الرابط "تعديل" لتعديل هذه القيمة.',
|
||||||
|
'last' => 'الأخيرة',
|
||||||
|
'From server' => 'من الخادم',
|
||||||
|
'System' => 'النظام',
|
||||||
|
'Select data' => 'عرض البيانات',
|
||||||
|
'Show structure' => 'عرض التركيبة',
|
||||||
|
'empty' => 'فارغ',
|
||||||
|
'Network' => 'شبكة',
|
||||||
|
'Geometry' => 'هندسة',
|
||||||
|
'File exists.' => 'الملف موجود.',
|
||||||
|
'Attachments' => 'ملفات مرفقة.',
|
||||||
|
'Item%s has been inserted.' => 'تم إدراج العنصر.',
|
||||||
|
'now' => 'الآن',
|
||||||
|
'%d query(s) executed OK.' => array('تم تنفيذ الإستعلام %d بنجاح.', 'تم تنفيذ الإستعلامات %d بنجاح.'),
|
||||||
|
'Show only errors' => 'إعرض الأخطاء فقط',
|
||||||
|
'Last page' => 'الصفحة السابقة',
|
||||||
|
'Refresh' => 'تحديث',
|
||||||
|
'Invalid schema.' => 'مخطط خاطئ.',
|
||||||
|
'Please use one of the extensions %s.' => 'من فضلك إستعمل إحدى الغمتدادات: %s.',
|
||||||
|
'ltr' => 'rtl',
|
||||||
|
);
|
@@ -9,8 +9,8 @@ $translations = array(
|
|||||||
'Select database' => 'Selecciona base de dades',
|
'Select database' => 'Selecciona base de dades',
|
||||||
'Invalid database.' => 'Base de dades invàlida.',
|
'Invalid database.' => 'Base de dades invàlida.',
|
||||||
'Create new database' => 'Crea una nova base de dades',
|
'Create new database' => 'Crea una nova base de dades',
|
||||||
'Table has been dropped.' => 'S\'ha creat la taula.',
|
'Table has been dropped.' => 'S\'ha suprimit la taula.',
|
||||||
'Table has been altered.' => 'S\'ha creat la taula.',
|
'Table has been altered.' => 'S\'ha modificat la taula.',
|
||||||
'Table has been created.' => 'S\'ha creat la taula.',
|
'Table has been created.' => 'S\'ha creat la taula.',
|
||||||
'Alter table' => 'Modifica la taula',
|
'Alter table' => 'Modifica la taula',
|
||||||
'Create table' => 'Crea una taula',
|
'Create table' => 'Crea una taula',
|
||||||
@@ -35,8 +35,8 @@ $translations = array(
|
|||||||
'Logout' => 'Desconnecta',
|
'Logout' => 'Desconnecta',
|
||||||
'database' => 'base de dades',
|
'database' => 'base de dades',
|
||||||
'Use' => 'Utilitza',
|
'Use' => 'Utilitza',
|
||||||
'No tables.' => 'Cap taula.',
|
'No tables.' => 'No hi ha cap taula.',
|
||||||
'select' => 'escull',
|
'select' => 'registres',
|
||||||
'Create new table' => 'Crea una nova taula',
|
'Create new table' => 'Crea una nova taula',
|
||||||
'Item has been deleted.' => 'S\'ha suprmit l\'element.',
|
'Item has been deleted.' => 'S\'ha suprmit l\'element.',
|
||||||
'Item has been updated.' => 'S\'ha actualitzat l\'element.',
|
'Item has been updated.' => 'S\'ha actualitzat l\'element.',
|
||||||
@@ -52,7 +52,7 @@ $translations = array(
|
|||||||
'Alter indexes' => 'Modifica els índexs',
|
'Alter indexes' => 'Modifica els índexs',
|
||||||
'Add next' => 'Afegeix el següent',
|
'Add next' => 'Afegeix el següent',
|
||||||
'Language' => 'Idioma',
|
'Language' => 'Idioma',
|
||||||
'Select' => 'Escull',
|
'Select' => 'Selecciona',
|
||||||
'New item' => 'Nou element',
|
'New item' => 'Nou element',
|
||||||
'Search' => 'Cerca',
|
'Search' => 'Cerca',
|
||||||
'Sort' => 'Ordena',
|
'Sort' => 'Ordena',
|
||||||
@@ -129,7 +129,7 @@ $translations = array(
|
|||||||
'Event' => 'Event',
|
'Event' => 'Event',
|
||||||
'%s version: %s through PHP extension %s' => 'Versió %s: %s amb l\'extensió de PHP %s',
|
'%s version: %s through PHP extension %s' => 'Versió %s: %s amb l\'extensió de PHP %s',
|
||||||
'%d row(s)' => array('%d fila', '%d files'),
|
'%d row(s)' => array('%d fila', '%d files'),
|
||||||
'Remove' => 'Esborra',
|
'Remove' => 'Suprimeix',
|
||||||
'Are you sure?' => 'Estàs segur?',
|
'Are you sure?' => 'Estàs segur?',
|
||||||
'Privileges' => 'Privilegis',
|
'Privileges' => 'Privilegis',
|
||||||
'Create user' => 'Crea un usuari',
|
'Create user' => 'Crea un usuari',
|
||||||
@@ -198,13 +198,13 @@ $translations = array(
|
|||||||
'CSV Import' => 'Importa CSV',
|
'CSV Import' => 'Importa CSV',
|
||||||
'Import' => 'Importa',
|
'Import' => 'Importa',
|
||||||
'Show structure' => 'Mostra l\'estructura',
|
'Show structure' => 'Mostra l\'estructura',
|
||||||
'Select data' => 'Escull dades',
|
'Select data' => 'Selecciona dades',
|
||||||
'Stop on error' => 'Atura en trobar un error',
|
'Stop on error' => 'Atura en trobar un error',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'S\'ha assolit el nombre màxim de camps. Incrementa %s i %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'S\'ha assolit el nombre màxim de camps. Incrementa %s i %s.',
|
||||||
'anywhere' => 'a qualsevol lloc',
|
'anywhere' => 'a qualsevol lloc',
|
||||||
'%.3f s' => '%.3f s',
|
'%.3f s' => '%.3f s',
|
||||||
'$1-$3-$5' => '$5/$3/$1',
|
'$1-$3-$5' => '$5/$3/$1',
|
||||||
'[yyyy]-mm-dd' => 'dd-mm-[aaaa]',
|
'[yyyy]-mm-dd' => 'dd/mm/[aaaa]',
|
||||||
'History' => 'Història',
|
'History' => 'Història',
|
||||||
'Variables' => 'Variables',
|
'Variables' => 'Variables',
|
||||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Les columnes origen i destí han de ser del mateix tipus, la columna destí ha d\'estar indexada i les dades referenciades han d\'existir.',
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Les columnes origen i destí han de ser del mateix tipus, la columna destí ha d\'estar indexada i les dades referenciades han d\'existir.',
|
||||||
@@ -215,13 +215,13 @@ $translations = array(
|
|||||||
'%d e-mail(s) have been sent.' => array('S\'ha enviat %d correu electrònic.', 'S\'han enviat %d correus electrònics.'),
|
'%d e-mail(s) have been sent.' => array('S\'ha enviat %d correu electrònic.', 'S\'han enviat %d correus electrònics.'),
|
||||||
'Run file' => 'Executa el fitxer',
|
'Run file' => 'Executa el fitxer',
|
||||||
'Numbers' => 'Nombres',
|
'Numbers' => 'Nombres',
|
||||||
'Date and time' => 'Data i temps',
|
'Date and time' => 'Data i hora',
|
||||||
'Strings' => 'Cadenes',
|
'Strings' => 'Cadenes',
|
||||||
'Binary' => 'Binari',
|
'Binary' => 'Binari',
|
||||||
'Lists' => 'Llistes',
|
'Lists' => 'Llistes',
|
||||||
'Relations' => 'Relacions',
|
'Relations' => 'Relacions',
|
||||||
'Maximum allowed file size is %sB.' => 'La mida màxima permesa del fitxer és de %sB.',
|
'Maximum allowed file size is %sB.' => 'La mida màxima permesa del fitxer és de %sB.',
|
||||||
'Clear' => 'Esborra',
|
'Clear' => 'Suprimeix',
|
||||||
'Editor' => 'Editor',
|
'Editor' => 'Editor',
|
||||||
'Webserver file %s' => 'Fitxer %s del servidor web',
|
'Webserver file %s' => 'Fitxer %s del servidor web',
|
||||||
'File does not exist.' => 'El fitxer no existeix.',
|
'File does not exist.' => 'El fitxer no existeix.',
|
||||||
@@ -258,4 +258,10 @@ $translations = array(
|
|||||||
'From server' => 'En el servidor',
|
'From server' => 'En el servidor',
|
||||||
'empty' => 'buit',
|
'empty' => 'buit',
|
||||||
'now' => 'ara',
|
'now' => 'ara',
|
||||||
|
'%d query(s) executed OK.' => array('%d consulta executada correctament.', '%d consultes executades correctament.'),
|
||||||
|
'Show only errors' => 'Mostra només els errors',
|
||||||
|
'Last page' => 'Darrera plana',
|
||||||
|
'Refresh' => 'Refresca',
|
||||||
|
'Invalid schema.' => 'Esquema invàlid.',
|
||||||
|
'Please use one of the extensions %s.' => 'Si us plau, utilitza una de les extensions %s.',
|
||||||
);
|
);
|
||||||
|
@@ -1,140 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
'Login' => 'Přihlásit se',
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
'System' => 'Systém',
|
||||||
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Uživatel',
|
'Username' => 'Uživatel',
|
||||||
'Password' => 'Heslo',
|
'Password' => 'Heslo',
|
||||||
'Select database' => 'Vybrat databázi',
|
'Permanent login' => 'Trvalé přihlášení',
|
||||||
'Invalid database.' => 'Nesprávná databáze.',
|
'Login' => 'Přihlásit se',
|
||||||
'Create new database' => 'Vytvořit novou databázi',
|
|
||||||
'Table has been dropped.' => 'Tabulka byla odstraněna.',
|
|
||||||
'Table has been altered.' => 'Tabulka byla změněna.',
|
|
||||||
'Table has been created.' => 'Tabulka byla vytvořena.',
|
|
||||||
'Alter table' => 'Pozměnit tabulku',
|
|
||||||
'Create table' => 'Vytvořit tabulku',
|
|
||||||
'Table name' => 'Název tabulky',
|
|
||||||
'engine' => 'úložiště',
|
|
||||||
'collation' => 'porovnávání',
|
|
||||||
'Column name' => 'Název sloupce',
|
|
||||||
'Type' => 'Typ',
|
|
||||||
'Length' => 'Délka',
|
|
||||||
'Auto Increment' => 'Auto Increment',
|
|
||||||
'Options' => 'Volby',
|
|
||||||
'Save' => 'Uložit',
|
|
||||||
'Drop' => 'Odstranit',
|
|
||||||
'Database has been dropped.' => 'Databáze byla odstraněna.',
|
|
||||||
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
|
||||||
'Database has been created.' => 'Databáze byla vytvořena.',
|
|
||||||
'Database has been renamed.' => 'Databáze byla přejmenována.',
|
|
||||||
'Database has been altered.' => 'Databáze byla změněna.',
|
|
||||||
'Alter database' => 'Pozměnit databázi',
|
|
||||||
'Create database' => 'Vytvořit databázi',
|
|
||||||
'SQL command' => 'SQL příkaz',
|
|
||||||
'Dump' => 'Export',
|
|
||||||
'Logout' => 'Odhlásit',
|
'Logout' => 'Odhlásit',
|
||||||
'database' => 'databáze',
|
'Logged as: %s' => 'Přihlášen jako: %s',
|
||||||
'Use' => 'Vybrat',
|
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
||||||
'No tables.' => 'Žádné tabulky.',
|
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
||||||
'select' => 'vypsat',
|
|
||||||
'Create new table' => 'Vytvořit novou tabulku',
|
|
||||||
'Item has been deleted.' => 'Položka byla smazána.',
|
|
||||||
'Item has been updated.' => 'Položka byla aktualizována.',
|
|
||||||
|
|
||||||
// %s can contain auto-increment value
|
|
||||||
'Item%s has been inserted.' => 'Položka%s byla vložena.',
|
|
||||||
|
|
||||||
'Edit' => 'Upravit',
|
|
||||||
'Insert' => 'Vložit',
|
|
||||||
'Save and insert next' => 'Uložit a vložit další',
|
|
||||||
'Delete' => 'Smazat',
|
|
||||||
'Database' => 'Databáze',
|
|
||||||
'Routines' => 'Procedury a funkce',
|
|
||||||
'Indexes have been altered.' => 'Indexy byly změněny.',
|
|
||||||
'Indexes' => 'Indexy',
|
|
||||||
'Alter indexes' => 'Pozměnit indexy',
|
|
||||||
'Add next' => 'Přidat další',
|
|
||||||
'Language' => 'Jazyk',
|
'Language' => 'Jazyk',
|
||||||
'Select' => 'Vypsat',
|
|
||||||
'New item' => 'Nová položka',
|
|
||||||
'Search' => 'Vyhledat',
|
|
||||||
'Sort' => 'Seřadit',
|
|
||||||
'descending' => 'sestupně',
|
|
||||||
'Limit' => 'Limit',
|
|
||||||
'No rows.' => 'Žádné řádky.',
|
|
||||||
'Action' => 'Akce',
|
|
||||||
'edit' => 'upravit',
|
|
||||||
'Page' => 'Stránka',
|
|
||||||
'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
|
|
||||||
'Error in query' => 'Chyba v dotazu',
|
|
||||||
'Execute' => 'Provést',
|
|
||||||
'Table' => 'Tabulka',
|
|
||||||
'Foreign keys' => 'Cizí klíče',
|
|
||||||
'Triggers' => 'Triggery',
|
|
||||||
'View' => 'Pohled',
|
|
||||||
'Unable to select the table' => 'Nepodařilo se vypsat tabulku',
|
|
||||||
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
||||||
'Comment' => 'Komentář',
|
|
||||||
'Default values' => 'Výchozí hodnoty',
|
|
||||||
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
|
|
||||||
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
|
||||||
'Unable to upload a file.' => 'Nepodařilo se nahrát soubor.',
|
|
||||||
'File upload' => 'Nahrání souboru',
|
|
||||||
'File uploads are disabled.' => 'Nahrávání souborů není povoleno.',
|
|
||||||
'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl změněn %d záznam.', 'Procedura byla zavolána, byly změněny %d záznamy.', 'Procedura byla zavolána, bylo změněno %d záznamů.'),
|
|
||||||
'Call' => 'Zavolat',
|
|
||||||
'No extension' => 'Žádná extenze',
|
'No extension' => 'Žádná extenze',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Není dostupná žádná z podporovaných PHP extenzí (%s).',
|
'None of the supported PHP extensions (%s) are available.' => 'Není dostupná žádná z podporovaných PHP extenzí (%s).',
|
||||||
'Session support must be enabled.' => 'Session proměnné musí být povolené.',
|
'Session support must be enabled.' => 'Session proměnné musí být povolené.',
|
||||||
'Session expired, please login again.' => 'Session vypršela, přihlašte se prosím znovu.',
|
'Session expired, please login again.' => 'Session vypršela, přihlašte se prosím znovu.',
|
||||||
'Text length' => 'Délka textů',
|
|
||||||
'Foreign key has been dropped.' => 'Cizí klíč byl odstraněn.',
|
|
||||||
'Foreign key has been altered.' => 'Cizí klíč byl změněn.',
|
|
||||||
'Foreign key has been created.' => 'Cizí klíč byl vytvořen.',
|
|
||||||
'Foreign key' => 'Cizí klíč',
|
|
||||||
'Target table' => 'Cílová tabulka',
|
|
||||||
'Change' => 'Změnit',
|
|
||||||
'Source' => 'Zdroj',
|
|
||||||
'Target' => 'Cíl',
|
|
||||||
'Add column' => 'Přidat sloupec',
|
|
||||||
'Alter' => 'Změnit',
|
|
||||||
'Add foreign key' => 'Přidat cizí klíč',
|
|
||||||
'ON DELETE' => 'Při smazání',
|
|
||||||
'ON UPDATE' => 'Při změně',
|
|
||||||
'Index Type' => 'Typ indexu',
|
|
||||||
'Column (length)' => 'Sloupec (délka)',
|
|
||||||
'View has been dropped.' => 'Pohled byl odstraněn.',
|
|
||||||
'View has been altered.' => 'Pohled byl změněn.',
|
|
||||||
'View has been created.' => 'Pohled byl vytvořen.',
|
|
||||||
'Alter view' => 'Pozměnit pohled',
|
|
||||||
'Create view' => 'Vytvořit pohled',
|
|
||||||
'Name' => 'Název',
|
|
||||||
'Process list' => 'Seznam procesů',
|
|
||||||
'%d process(es) have been killed.' => array('Byl ukončen %d proces.', 'Byly ukončeny %d procesy.', 'Bylo ukončeno %d procesů.'),
|
|
||||||
'Kill' => 'Ukončit',
|
|
||||||
'Parameter name' => 'Název parametru',
|
|
||||||
'Database schema' => 'Schéma databáze',
|
|
||||||
'Create procedure' => 'Vytvořit proceduru',
|
|
||||||
'Create function' => 'Vytvořit funkci',
|
|
||||||
'Routine has been dropped.' => 'Procedura byla odstraněna.',
|
|
||||||
'Routine has been altered.' => 'Procedura byla změněna.',
|
|
||||||
'Routine has been created.' => 'Procedura byla vytvořena.',
|
|
||||||
'Alter function' => 'Změnit funkci',
|
|
||||||
'Alter procedure' => 'Změnit proceduru',
|
|
||||||
'Return type' => 'Návratový typ',
|
|
||||||
'Add trigger' => 'Přidat trigger',
|
|
||||||
'Trigger has been dropped.' => 'Trigger byl odstraněn.',
|
|
||||||
'Trigger has been altered.' => 'Trigger byl změněn.',
|
|
||||||
'Trigger has been created.' => 'Trigger byl vytvořen.',
|
|
||||||
'Alter trigger' => 'Změnit trigger',
|
|
||||||
'Create trigger' => 'Vytvořit trigger',
|
|
||||||
'Time' => 'Čas',
|
|
||||||
'Event' => 'Událost',
|
|
||||||
'%s version: %s through PHP extension %s' => 'Verze %s: %s přes PHP extenzi %s',
|
'%s version: %s through PHP extension %s' => 'Verze %s: %s přes PHP extenzi %s',
|
||||||
'%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
|
'Refresh' => 'Obnovit',
|
||||||
'Remove' => 'Odebrat',
|
|
||||||
'Are you sure?' => 'Opravdu?',
|
|
||||||
'Privileges' => 'Oprávnění',
|
'Privileges' => 'Oprávnění',
|
||||||
'Create user' => 'Vytvořit uživatele',
|
'Create user' => 'Vytvořit uživatele',
|
||||||
'User has been dropped.' => 'Uživatel byl odstraněn.',
|
'User has been dropped.' => 'Uživatel byl odstraněn.',
|
||||||
@@ -145,19 +30,93 @@ $translations = array(
|
|||||||
'Routine' => 'Procedura',
|
'Routine' => 'Procedura',
|
||||||
'Grant' => 'Povolit',
|
'Grant' => 'Povolit',
|
||||||
'Revoke' => 'Zakázat',
|
'Revoke' => 'Zakázat',
|
||||||
|
|
||||||
|
'Process list' => 'Seznam procesů',
|
||||||
|
'%d process(es) have been killed.' => array('Byl ukončen %d proces.', 'Byly ukončeny %d procesy.', 'Bylo ukončeno %d procesů.'),
|
||||||
|
'Kill' => 'Ukončit',
|
||||||
|
|
||||||
|
'Variables' => 'Proměnné',
|
||||||
|
'Status' => 'Stav',
|
||||||
|
|
||||||
|
'SQL command' => 'SQL příkaz',
|
||||||
|
'%d query(s) executed OK.' => array('%d příkaz proběhl v pořádku.', '%d příkazy proběhly v pořádku.', '%d příkazů proběhlo v pořádku.'),
|
||||||
|
'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
|
||||||
|
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
||||||
|
'Error in query' => 'Chyba v dotazu',
|
||||||
|
'Execute' => 'Provést',
|
||||||
|
'Stop on error' => 'Zastavit při chybě',
|
||||||
|
'Show only errors' => 'Zobrazit pouze chyby',
|
||||||
|
// sprintf() format for time of the command
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'History' => 'Historie',
|
||||||
|
'Clear' => 'Vyčistit',
|
||||||
|
|
||||||
|
'File upload' => 'Nahrání souboru',
|
||||||
|
'From server' => 'Ze serveru',
|
||||||
|
'Webserver file %s' => 'Soubor %s na webovém serveru',
|
||||||
|
'Run file' => 'Spustit soubor',
|
||||||
|
'File does not exist.' => 'Soubor neexistuje.',
|
||||||
|
'File uploads are disabled.' => 'Nahrávání souborů není povoleno.',
|
||||||
|
'Unable to upload a file.' => 'Nepodařilo se nahrát soubor.',
|
||||||
|
'Maximum allowed file size is %sB.' => 'Maximální povolená velikost souboru je %sB.',
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Příliš velká POST data. Zmenšete data nebo zvyšte hodnotu konfigurační direktivy %s.',
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Příliš velká POST data. Zmenšete data nebo zvyšte hodnotu konfigurační direktivy %s.',
|
||||||
'Logged as: %s' => 'Přihlášen jako: %s',
|
|
||||||
'Move up' => 'Přesunout nahoru',
|
|
||||||
'Move down' => 'Přesunout dolů',
|
|
||||||
'Functions' => 'Funkce',
|
|
||||||
'Aggregation' => 'Agregace',
|
|
||||||
'Export' => 'Export',
|
'Export' => 'Export',
|
||||||
|
'Dump' => 'Export',
|
||||||
'Output' => 'Výstup',
|
'Output' => 'Výstup',
|
||||||
'open' => 'otevřít',
|
'open' => 'otevřít',
|
||||||
'save' => 'uložit',
|
'save' => 'uložit',
|
||||||
'Format' => 'Formát',
|
'Format' => 'Formát',
|
||||||
'Tables' => 'Tabulky',
|
|
||||||
'Data' => 'Data',
|
'Data' => 'Data',
|
||||||
|
|
||||||
|
'Database' => 'Databáze',
|
||||||
|
'database' => 'databáze',
|
||||||
|
'Use' => 'Vybrat',
|
||||||
|
'Select database' => 'Vybrat databázi',
|
||||||
|
'Invalid database.' => 'Nesprávná databáze.',
|
||||||
|
'Create new database' => 'Vytvořit novou databázi',
|
||||||
|
'Database has been dropped.' => 'Databáze byla odstraněna.',
|
||||||
|
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
||||||
|
'Database has been created.' => 'Databáze byla vytvořena.',
|
||||||
|
'Database has been renamed.' => 'Databáze byla přejmenována.',
|
||||||
|
'Database has been altered.' => 'Databáze byla změněna.',
|
||||||
|
'Alter database' => 'Pozměnit databázi',
|
||||||
|
'Create database' => 'Vytvořit databázi',
|
||||||
|
'Database schema' => 'Schéma databáze',
|
||||||
|
|
||||||
|
// thousands separator - must contain single byte
|
||||||
|
',' => ' ',
|
||||||
|
'Engine' => 'Úložiště',
|
||||||
|
'Collation' => 'Porovnávání',
|
||||||
|
'Data Length' => 'Velikost dat',
|
||||||
|
'Index Length' => 'Velikost indexů',
|
||||||
|
'Data Free' => 'Volné místo',
|
||||||
|
'Rows' => 'Řádků',
|
||||||
|
'%d in total' => '%d celkem',
|
||||||
|
'Analyze' => 'Analyzovat',
|
||||||
|
'Optimize' => 'Optimalizovat',
|
||||||
|
'Check' => 'Zkontrolovat',
|
||||||
|
'Repair' => 'Opravit',
|
||||||
|
'Truncate' => 'Vyprázdnit',
|
||||||
|
'Tables have been truncated.' => 'Tabulky byly vyprázdněny.',
|
||||||
|
'Move to other database' => 'Přesunout do jiné databáze',
|
||||||
|
'Move' => 'Přesunout',
|
||||||
|
'Tables have been moved.' => 'Tabulky byly přesunuty.',
|
||||||
|
|
||||||
|
'Routines' => 'Procedury a funkce',
|
||||||
|
'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl změněn %d záznam.', 'Procedura byla zavolána, byly změněny %d záznamy.', 'Procedura byla zavolána, bylo změněno %d záznamů.'),
|
||||||
|
'Call' => 'Zavolat',
|
||||||
|
'Parameter name' => 'Název parametru',
|
||||||
|
'Create procedure' => 'Vytvořit proceduru',
|
||||||
|
'Create function' => 'Vytvořit funkci',
|
||||||
|
'Routine has been dropped.' => 'Procedura byla odstraněna.',
|
||||||
|
'Routine has been altered.' => 'Procedura byla změněna.',
|
||||||
|
'Routine has been created.' => 'Procedura byla vytvořena.',
|
||||||
|
'Alter function' => 'Změnit funkci',
|
||||||
|
'Alter procedure' => 'Změnit proceduru',
|
||||||
|
'Return type' => 'Návratový typ',
|
||||||
|
|
||||||
|
'Events' => 'Události',
|
||||||
'Event has been dropped.' => 'Událost byla odstraněna.',
|
'Event has been dropped.' => 'Událost byla odstraněna.',
|
||||||
'Event has been altered.' => 'Událost byla změněna.',
|
'Event has been altered.' => 'Událost byla změněna.',
|
||||||
'Event has been created.' => 'Událost byla vytvořena.',
|
'Event has been created.' => 'Událost byla vytvořena.',
|
||||||
@@ -165,94 +124,162 @@ $translations = array(
|
|||||||
'Create event' => 'Vytvořit událost',
|
'Create event' => 'Vytvořit událost',
|
||||||
'At given time' => 'V daný čas',
|
'At given time' => 'V daný čas',
|
||||||
'Every' => 'Každých',
|
'Every' => 'Každých',
|
||||||
'Events' => 'Události',
|
|
||||||
'Schedule' => 'Plán',
|
'Schedule' => 'Plán',
|
||||||
'Start' => 'Začátek',
|
'Start' => 'Začátek',
|
||||||
'End' => 'Konec',
|
'End' => 'Konec',
|
||||||
'Status' => 'Stav',
|
|
||||||
'On completion preserve' => 'Po dokončení zachovat',
|
'On completion preserve' => 'Po dokončení zachovat',
|
||||||
|
|
||||||
|
'Tables' => 'Tabulky',
|
||||||
'Tables and views' => 'Tabulky a pohledy',
|
'Tables and views' => 'Tabulky a pohledy',
|
||||||
'Data Length' => 'Velikost dat',
|
'Table' => 'Tabulka',
|
||||||
'Index Length' => 'Velikost indexů',
|
'No tables.' => 'Žádné tabulky.',
|
||||||
'Data Free' => 'Volné místo',
|
'Alter table' => 'Pozměnit tabulku',
|
||||||
'Collation' => 'Porovnávání',
|
'Create table' => 'Vytvořit tabulku',
|
||||||
'Analyze' => 'Analyzovat',
|
'Create new table' => 'Vytvořit novou tabulku',
|
||||||
'Optimize' => 'Optimalizovat',
|
'Table has been dropped.' => 'Tabulka byla odstraněna.',
|
||||||
'Check' => 'Zkontrolovat',
|
|
||||||
'Repair' => 'Opravit',
|
|
||||||
'Truncate' => 'Vyprázdnit',
|
|
||||||
'Tables have been truncated.' => 'Tabulky byly vyprázdněny.',
|
|
||||||
'Rows' => 'Řádků',
|
|
||||||
',' => ' ',
|
|
||||||
'Tables have been moved.' => 'Tabulky byly přesunuty.',
|
|
||||||
'Move to other database' => 'Přesunout do jiné databáze',
|
|
||||||
'Move' => 'Přesunout',
|
|
||||||
'Engine' => 'Úložiště',
|
|
||||||
'Save and continue edit' => 'Uložit a pokračovat v editaci',
|
|
||||||
'original' => 'původní',
|
|
||||||
'%d item(s) have been affected.' => array('Byl ovlivněn %d záznam.', 'Byly ovlivněny %d záznamy.', 'Bylo ovlivněno %d záznamů.'),
|
|
||||||
'whole result' => 'celý výsledek',
|
|
||||||
'Tables have been dropped.' => 'Tabulky byly odstraněny.',
|
'Tables have been dropped.' => 'Tabulky byly odstraněny.',
|
||||||
'Clone' => 'Klonovat',
|
'Table has been altered.' => 'Tabulka byla změněna.',
|
||||||
|
'Table has been created.' => 'Tabulka byla vytvořena.',
|
||||||
|
'Table name' => 'Název tabulky',
|
||||||
|
'Show structure' => 'Zobrazit strukturu',
|
||||||
|
'engine' => 'úložiště',
|
||||||
|
'collation' => 'porovnávání',
|
||||||
|
'Column name' => 'Název sloupce',
|
||||||
|
'Type' => 'Typ',
|
||||||
|
'Length' => 'Délka',
|
||||||
|
'Auto Increment' => 'Auto Increment',
|
||||||
|
'Options' => 'Volby',
|
||||||
|
'Comment' => 'Komentář',
|
||||||
|
'Default values' => 'Výchozí hodnoty',
|
||||||
|
'Drop' => 'Odstranit',
|
||||||
|
'Are you sure?' => 'Opravdu?',
|
||||||
|
'Move up' => 'Přesunout nahoru',
|
||||||
|
'Move down' => 'Přesunout dolů',
|
||||||
|
'Remove' => 'Odebrat',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Byl překročen maximální povolený počet polí. Zvyšte prosím %s a %s.',
|
||||||
|
|
||||||
'Partition by' => 'Rozdělit podle',
|
'Partition by' => 'Rozdělit podle',
|
||||||
'Partitions' => 'Oddíly',
|
'Partitions' => 'Oddíly',
|
||||||
'Partition name' => 'Název oddílu',
|
'Partition name' => 'Název oddílu',
|
||||||
'Values' => 'Hodnoty',
|
'Values' => 'Hodnoty',
|
||||||
'%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
|
|
||||||
|
'View' => 'Pohled',
|
||||||
|
'View has been dropped.' => 'Pohled byl odstraněn.',
|
||||||
|
'View has been altered.' => 'Pohled byl změněn.',
|
||||||
|
'View has been created.' => 'Pohled byl vytvořen.',
|
||||||
|
'Alter view' => 'Pozměnit pohled',
|
||||||
|
'Create view' => 'Vytvořit pohled',
|
||||||
|
|
||||||
|
'Indexes' => 'Indexy',
|
||||||
|
'Indexes have been altered.' => 'Indexy byly změněny.',
|
||||||
|
'Alter indexes' => 'Pozměnit indexy',
|
||||||
|
'Add next' => 'Přidat další',
|
||||||
|
'Index Type' => 'Typ indexu',
|
||||||
|
'Column (length)' => 'Sloupec (délka)',
|
||||||
|
|
||||||
|
'Foreign keys' => 'Cizí klíče',
|
||||||
|
'Foreign key' => 'Cizí klíč',
|
||||||
|
'Foreign key has been dropped.' => 'Cizí klíč byl odstraněn.',
|
||||||
|
'Foreign key has been altered.' => 'Cizí klíč byl změněn.',
|
||||||
|
'Foreign key has been created.' => 'Cizí klíč byl vytvořen.',
|
||||||
|
'Target table' => 'Cílová tabulka',
|
||||||
|
'Change' => 'Změnit',
|
||||||
|
'Source' => 'Zdroj',
|
||||||
|
'Target' => 'Cíl',
|
||||||
|
'Add column' => 'Přidat sloupec',
|
||||||
|
'Alter' => 'Změnit',
|
||||||
|
'Add foreign key' => 'Přidat cizí klíč',
|
||||||
|
'ON DELETE' => 'Při smazání',
|
||||||
|
'ON UPDATE' => 'Při změně',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci musí být definován index a odkazovaná data musí existovat.',
|
||||||
|
|
||||||
|
'Triggers' => 'Triggery',
|
||||||
|
'Add trigger' => 'Přidat trigger',
|
||||||
|
'Trigger has been dropped.' => 'Trigger byl odstraněn.',
|
||||||
|
'Trigger has been altered.' => 'Trigger byl změněn.',
|
||||||
|
'Trigger has been created.' => 'Trigger byl vytvořen.',
|
||||||
|
'Alter trigger' => 'Změnit trigger',
|
||||||
|
'Create trigger' => 'Vytvořit trigger',
|
||||||
|
'Time' => 'Čas',
|
||||||
|
'Event' => 'Událost',
|
||||||
|
'Name' => 'Název',
|
||||||
|
|
||||||
|
'select' => 'vypsat',
|
||||||
|
'Select' => 'Vypsat',
|
||||||
|
'Select data' => 'Vypsat data',
|
||||||
|
'Functions' => 'Funkce',
|
||||||
|
'Aggregation' => 'Agregace',
|
||||||
|
'Search' => 'Vyhledat',
|
||||||
|
'anywhere' => 'kdekoliv',
|
||||||
|
'Search data in tables' => 'Vyhledat data v tabulkách',
|
||||||
|
'Sort' => 'Seřadit',
|
||||||
|
'descending' => 'sestupně',
|
||||||
|
'Limit' => 'Limit',
|
||||||
|
'Text length' => 'Délka textů',
|
||||||
|
'Action' => 'Akce',
|
||||||
|
'Unable to select the table' => 'Nepodařilo se vypsat tabulku',
|
||||||
|
'No rows.' => 'Žádné řádky.',
|
||||||
|
'%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
|
||||||
|
'Page' => 'Stránka',
|
||||||
|
'last' => 'poslední',
|
||||||
|
'Last page' => 'Poslední stránka',
|
||||||
|
'whole result' => 'celý výsledek',
|
||||||
|
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
|
||||||
|
|
||||||
'CSV Import' => 'Import CSV',
|
'CSV Import' => 'Import CSV',
|
||||||
'Import' => 'Import',
|
'Import' => 'Import',
|
||||||
'Show structure' => 'Zobrazit strukturu',
|
'%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
|
||||||
'Select data' => 'Vypsat data',
|
|
||||||
'Stop on error' => 'Zastavit při chybě',
|
// in-place editing in select
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Byl překročen maximální povolený počet polí. Zvyšte prosím %s a %s.',
|
'Double click on a value to modify it.' => 'Dvojklikněte na políčko, které chcete změnit.',
|
||||||
'anywhere' => 'kdekoliv',
|
'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.',
|
||||||
'%.3f s' => '%.3f s',
|
|
||||||
'$1-$3-$5' => '$6.$4.$1',
|
// %s can contain auto-increment value
|
||||||
'[yyyy]-mm-dd' => 'd.m.[rrrr]',
|
'Item%s has been inserted.' => 'Položka%s byla vložena.',
|
||||||
'History' => 'Historie',
|
'Item has been deleted.' => 'Položka byla smazána.',
|
||||||
'Variables' => 'Proměnné',
|
'Item has been updated.' => 'Položka byla aktualizována.',
|
||||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci musí být definován index a odkazovaná data musí existovat.',
|
'%d item(s) have been affected.' => array('Byl ovlivněn %d záznam.', 'Byly ovlivněny %d záznamy.', 'Bylo ovlivněno %d záznamů.'),
|
||||||
|
'New item' => 'Nová položka',
|
||||||
|
'original' => 'původní',
|
||||||
|
// label for value '' in enum data type
|
||||||
|
'empty' => 'prázdné',
|
||||||
|
'edit' => 'upravit',
|
||||||
|
'Edit' => 'Upravit',
|
||||||
|
'Insert' => 'Vložit',
|
||||||
|
'Save' => 'Uložit',
|
||||||
|
'Save and continue edit' => 'Uložit a pokračovat v editaci',
|
||||||
|
'Save and insert next' => 'Uložit a vložit další',
|
||||||
|
'Clone' => 'Klonovat',
|
||||||
|
'Delete' => 'Smazat',
|
||||||
|
|
||||||
'E-mail' => 'E-mail',
|
'E-mail' => 'E-mail',
|
||||||
'From' => 'Odesílatel',
|
'From' => 'Odesílatel',
|
||||||
'Subject' => 'Předmět',
|
'Subject' => 'Předmět',
|
||||||
|
'Attachments' => 'Přílohy',
|
||||||
'Send' => 'Odeslat',
|
'Send' => 'Odeslat',
|
||||||
'%d e-mail(s) have been sent.' => array('Byl odeslán %d e-mail.', 'Byly odeslány %d e-maily.', 'Bylo odesláno %d e-mailů.'),
|
'%d e-mail(s) have been sent.' => array('Byl odeslán %d e-mail.', 'Byly odeslány %d e-maily.', 'Bylo odesláno %d e-mailů.'),
|
||||||
'Run file' => 'Spustit soubor',
|
|
||||||
|
// data type descriptions
|
||||||
'Numbers' => 'Čísla',
|
'Numbers' => 'Čísla',
|
||||||
'Date and time' => 'Datum a čas',
|
'Date and time' => 'Datum a čas',
|
||||||
'Strings' => 'Řetězce',
|
'Strings' => 'Řetězce',
|
||||||
'Binary' => 'Binární',
|
'Binary' => 'Binární',
|
||||||
'Lists' => 'Seznamy',
|
'Lists' => 'Seznamy',
|
||||||
'Relations' => 'Vztahy',
|
|
||||||
'Maximum allowed file size is %sB.' => 'Maximální povolená velikost souboru je %sB.',
|
|
||||||
'Clear' => 'Vyčistit',
|
|
||||||
'Editor' => 'Editor',
|
|
||||||
'Webserver file %s' => 'Soubor %s na webovém serveru',
|
|
||||||
'File does not exist.' => 'Soubor neexistuje.',
|
|
||||||
'Permanent login' => 'Trvalé přihlášení',
|
|
||||||
'%d in total' => '%d celkem',
|
|
||||||
|
|
||||||
// label for e-mail attachments in Adminer Editor
|
|
||||||
'Attachments' => 'Přílohy',
|
|
||||||
|
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
|
||||||
'System' => 'Systém',
|
|
||||||
|
|
||||||
// link to last page if exact number is unknown
|
|
||||||
'last' => 'poslední',
|
|
||||||
|
|
||||||
// new data type categories
|
|
||||||
'Network' => 'Síť',
|
'Network' => 'Síť',
|
||||||
'Geometry' => 'Geometrie',
|
'Geometry' => 'Geometrie',
|
||||||
|
'Relations' => 'Vztahy',
|
||||||
|
|
||||||
|
'Editor' => 'Editor',
|
||||||
|
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||||
|
'$1-$3-$5' => '$6.$4.$1',
|
||||||
|
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||||
|
'[yyyy]-mm-dd' => 'd.m.[rrrr]',
|
||||||
|
'now' => 'teď',
|
||||||
|
|
||||||
// general SQLite error in create, drop or rename database
|
// general SQLite error in create, drop or rename database
|
||||||
'File exists.' => 'Soubor existuje.',
|
'File exists.' => 'Soubor existuje.',
|
||||||
'Please use one of the extensions %s.' => 'Prosím použijte jednu z koncovek %s.',
|
'Please use one of the extensions %s.' => 'Prosím použijte jednu z koncovek %s.',
|
||||||
|
|
||||||
// selects now support in-place editing
|
|
||||||
'Double click on a value to modify it.' => 'Dvojklikněte na políčko, které chcete změnit.',
|
|
||||||
'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.',
|
|
||||||
|
|
||||||
// PostgreSQL and MS SQL schema support
|
// PostgreSQL and MS SQL schema support
|
||||||
'Alter schema' => 'Pozměnit schéma',
|
'Alter schema' => 'Pozměnit schéma',
|
||||||
'Create schema' => 'Vytvořit schéma',
|
'Create schema' => 'Vytvořit schéma',
|
||||||
@@ -277,16 +304,4 @@ $translations = array(
|
|||||||
'Type has been dropped.' => 'Typ byl odstraněn.',
|
'Type has been dropped.' => 'Typ byl odstraněn.',
|
||||||
'Type has been created.' => 'Typ byl vytvořen.',
|
'Type has been created.' => 'Typ byl vytvořen.',
|
||||||
'Alter type' => 'Pozměnit typ',
|
'Alter type' => 'Pozměnit typ',
|
||||||
|
|
||||||
// label for search in whole database
|
|
||||||
'Search data in tables' => 'Vyhledat data v tabulkách',
|
|
||||||
|
|
||||||
// label for box with "Run webserver file adminer.sql"
|
|
||||||
'From server' => 'Ze serveru',
|
|
||||||
|
|
||||||
// label for value '' in enum data type
|
|
||||||
'empty' => 'prázdné',
|
|
||||||
|
|
||||||
// function translation used in Editor
|
|
||||||
'now' => 'teď',
|
|
||||||
);
|
);
|
||||||
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Geometrie',
|
'Geometry' => 'Geometrie',
|
||||||
'File exists.' => 'Datei existiert schon.',
|
'File exists.' => 'Datei existiert schon.',
|
||||||
'Attachments' => 'Anhänge',
|
'Attachments' => 'Anhänge',
|
||||||
|
'%d query(s) executed OK.' => array('SQL-Query erfolgreich ausgeführt.', '%d SQL-Queries erfolgreich ausgeführt.'),
|
||||||
|
'Show only errors' => 'Nur Fehler anzeigen',
|
||||||
|
'Last page' => 'Letzte Seite',
|
||||||
|
'Refresh' => 'Aktualisieren',
|
||||||
|
'Invalid schema.' => 'Schema nicht gültig.',
|
||||||
|
'Please use one of the extensions %s.' => 'Bitte einen der Dateitypen %s benutzen.',
|
||||||
|
'now' => 'jetzt',
|
||||||
);
|
);
|
||||||
|
@@ -9,4 +9,5 @@ $translations = array(
|
|||||||
'%d row(s) have been imported.' => array('%d row has been imported.', '%d rows have been imported.'),
|
'%d row(s) have been imported.' => array('%d row has been imported.', '%d rows have been imported.'),
|
||||||
'%d e-mail(s) have been sent.' => array('%d e-mail has been sent.', '%d e-mails have been sent.'),
|
'%d e-mail(s) have been sent.' => array('%d e-mail has been sent.', '%d e-mails have been sent.'),
|
||||||
'%d in total' => '%d in total',
|
'%d in total' => '%d in total',
|
||||||
|
'%d query(s) executed OK.' => array('%d query executed OK.', '%d queries executed OK.'),
|
||||||
);
|
);
|
||||||
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Geometría',
|
'Geometry' => 'Geometría',
|
||||||
'File exists.' => 'Archivo ya existe.',
|
'File exists.' => 'Archivo ya existe.',
|
||||||
'Attachments' => 'Adjuntos',
|
'Attachments' => 'Adjuntos',
|
||||||
|
'%d query(s) executed OK.' => array('%d sentencia sql ejecutada correctamente.', '%d sentencias sql ejecutadas correctamente.'),
|
||||||
|
'Show only errors' => 'Mostrar solamente errores',
|
||||||
|
'Last page' => 'Ultima página',
|
||||||
|
'Refresh' => 'Refrescar',
|
||||||
|
'Invalid schema.' => 'Esquema inválido.',
|
||||||
|
'Please use one of the extensions %s.' => 'Por favor use una de las extensiones %s.',
|
||||||
|
'now' => 'ahora',
|
||||||
);
|
);
|
||||||
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Geomeetria',
|
'Geometry' => 'Geomeetria',
|
||||||
'File exists.' => 'Fail juba eksisteerib.',
|
'File exists.' => 'Fail juba eksisteerib.',
|
||||||
'Attachments' => 'Manused',
|
'Attachments' => 'Manused',
|
||||||
|
'%d query(s) executed OK.' => array('%d päring edukalt käivitatud.', '%d päringut edukalt käivitatud.'),
|
||||||
|
'Show only errors' => 'Kuva vaid veateateid',
|
||||||
|
'Last page' => 'Viimane lehekülg',
|
||||||
|
'Refresh' => 'Uuenda',
|
||||||
|
'Invalid schema.' => 'Sobimatu skeema.',
|
||||||
|
'Please use one of the extensions %s.' => 'Palun kasuta üht laiendustest %s.',
|
||||||
|
'now' => 'nüüd',
|
||||||
);
|
);
|
||||||
|
@@ -204,7 +204,7 @@ $translations = array(
|
|||||||
'anywhere' => 'bárhol',
|
'anywhere' => 'bárhol',
|
||||||
'%.3f s' => '%.3f másodperc',
|
'%.3f s' => '%.3f másodperc',
|
||||||
'$1-$3-$5' => '$6.$4.$1',
|
'$1-$3-$5' => '$6.$4.$1',
|
||||||
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
'[yyyy]-mm-dd' => '[yyyy].m.d',
|
||||||
'History' => 'Történet',
|
'History' => 'Történet',
|
||||||
'Variables' => 'Változók',
|
'Variables' => 'Változók',
|
||||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'A forrás és cél oszlopoknak azonos típusúak legyenek, a cél oszlopok indexeltek legyenek, és a hivatkozott adatnak léteznie kell.',
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'A forrás és cél oszlopoknak azonos típusúak legyenek, a cél oszlopok indexeltek legyenek, és a hivatkozott adatnak léteznie kell.',
|
||||||
@@ -258,4 +258,10 @@ $translations = array(
|
|||||||
'From server' => 'Szerverről',
|
'From server' => 'Szerverről',
|
||||||
'empty' => 'üres',
|
'empty' => 'üres',
|
||||||
'now' => 'most',
|
'now' => 'most',
|
||||||
|
'%d query(s) executed OK.' => '%d sikeres lekérdezés.',
|
||||||
|
'Show only errors' => 'Csak a hibák mutatása',
|
||||||
|
'Last page' => 'Utolsó oldal',
|
||||||
|
'Refresh' => 'Frissítés',
|
||||||
|
'Invalid schema.' => 'Érvénytelen séma.',
|
||||||
|
'Please use one of the extensions %s.' => 'Használja a(z) %s kiterjesztést.',
|
||||||
);
|
);
|
||||||
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Geometrie',
|
'Geometry' => 'Geometrie',
|
||||||
'File exists.' => 'Bestand bestaat reeds.',
|
'File exists.' => 'Bestand bestaat reeds.',
|
||||||
'Attachments' => 'Bijlagen',
|
'Attachments' => 'Bijlagen',
|
||||||
|
'%d query(s) executed OK.' => array('%d query succesvol uitgevoerd.', '%d querys succesvol uitgevoerd'),
|
||||||
|
'Show only errors' => 'Enkel fouten tonen',
|
||||||
|
'Last page' => 'Laatste pagina',
|
||||||
|
'Refresh' => 'Vernieuwen',
|
||||||
|
'Invalid schema.' => 'Ongeldig schema.',
|
||||||
|
'Please use one of the extensions %s.' => 'Gebruik 1 van volgende extensies: %s.',
|
||||||
|
'now' => 'nu',
|
||||||
);
|
);
|
||||||
|
279
adminer/lang/pl.inc.php
Normal file
279
adminer/lang/pl.inc.php
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
// hidden because of poor quality according to author Helmut von Ślask cieszyński
|
||||||
|
'Login' => 'Zalogować się',
|
||||||
|
'Logout successful.' => 'Wylogowanie pomyślne.',
|
||||||
|
'Invalid credentials.' => 'Nieprawidłowe dane.',
|
||||||
|
'Server' => 'Serwer',
|
||||||
|
'Username' => 'Użytkownik',
|
||||||
|
'Password' => 'Hasło',
|
||||||
|
'Select database' => 'Wybierz bazę danych',
|
||||||
|
'Invalid database.' => 'Nie znaleziono bazę danych.',
|
||||||
|
'Create new database' => 'Utwórz nową bazę danych',
|
||||||
|
'Table has been dropped.' => 'Tabela została usunięta.',
|
||||||
|
'Table has been altered.' => 'Tabela została zmieniona.',
|
||||||
|
'Table has been created.' => 'Tabela została utworzona.',
|
||||||
|
'Alter table' => 'Zmień tabelę',
|
||||||
|
'Create table' => 'Utwórz nową tabelę',
|
||||||
|
'Table name' => 'Nazwa tabeli',
|
||||||
|
'engine' => 'składowanie',
|
||||||
|
'collation' => 'porównywanie',
|
||||||
|
'Column name' => 'Nazwa kolumny',
|
||||||
|
'Type' => 'Typ',
|
||||||
|
'Length' => 'Długość',
|
||||||
|
'Auto Increment' => 'Auto Increment',
|
||||||
|
'Options' => 'Operacje',
|
||||||
|
'Save' => 'Zachowaj',
|
||||||
|
'Drop' => 'Usuń',
|
||||||
|
'Database has been dropped.' => 'Baza danych została usunięta.',
|
||||||
|
'Database has been created.' => 'Baza danych została utworzona.',
|
||||||
|
'Database has been renamed.' => 'Baza danych została przemianowana.',
|
||||||
|
'Database has been altered.' => 'Baza danych została zmieniona.',
|
||||||
|
'Alter database' => 'Zmień bazę danych',
|
||||||
|
'Create database' => 'Utwórz bazę danych',
|
||||||
|
'SQL command' => 'SQL zapytanie',
|
||||||
|
'Dump' => 'Eksport',
|
||||||
|
'Logout' => 'Wyjście',
|
||||||
|
'database' => 'baza danych',
|
||||||
|
'Use' => 'Vybrat',
|
||||||
|
'No tables.' => 'Nie znaleziono tabeli.',
|
||||||
|
'select' => 'pokaż',
|
||||||
|
'Create new table' => 'Utwórz nową tabelę',
|
||||||
|
'Item has been deleted.' => 'Rekord został usunięty.',
|
||||||
|
'Item has been updated.' => 'Rekord został aktualizowany.',
|
||||||
|
'Item%s has been inserted.' => 'Rekord%s został włożony.',
|
||||||
|
'Edit' => 'Edytuj',
|
||||||
|
'Insert' => 'Dodaj',
|
||||||
|
'Save and insert next' => 'Wykonaj i dodaj następny',
|
||||||
|
'Delete' => 'Usuń',
|
||||||
|
'Database' => 'Baza danych',
|
||||||
|
'Routines' => 'Procedury i funkcje',
|
||||||
|
'Indexes have been altered.' => 'Indeksy uległy zmianie.',
|
||||||
|
'Indexes' => 'Indeksy',
|
||||||
|
'Alter indexes' => 'Edytuj indeksy',
|
||||||
|
'Add next' => 'Dodaj następny',
|
||||||
|
'Language' => 'Język',
|
||||||
|
'Select' => 'Przeglądaj',
|
||||||
|
'New item' => 'Nowy rekord',
|
||||||
|
'Search' => 'Szukaj',
|
||||||
|
'Sort' => 'Sortuj',
|
||||||
|
'descending' => 'malejąco',
|
||||||
|
'Limit' => 'Limit',
|
||||||
|
'No rows.' => 'Pusty wynik.',
|
||||||
|
'Action' => 'Czynność',
|
||||||
|
'edit' => 'zmień',
|
||||||
|
'Page' => 'Strona',
|
||||||
|
'Query executed OK, %d row(s) affected.' => array('Wykonanie pomyślne, zmieniono %d rekord.',
|
||||||
|
'Wykonanie pomyślne, zmieniono %d rekordy.',
|
||||||
|
'Wykonanie pomyślne, zmieniono %d rekordów.'),
|
||||||
|
'Error in query' => 'Bląd w zapytaniu',
|
||||||
|
'Execute' => 'Wykonaj',
|
||||||
|
'Table' => 'Tabela',
|
||||||
|
'Foreign keys' => 'Klucze obce',
|
||||||
|
'Triggers' => 'Wyzwalacze',
|
||||||
|
'View' => 'Perspektywa',
|
||||||
|
'Unable to select the table' => 'Nie mozna było przeglądać tabel',
|
||||||
|
'Invalid CSRF token. Send the form again.' => 'Niepoprawny CSRF token. Odeślij ponownie.',
|
||||||
|
'Comment' => 'Komentarz',
|
||||||
|
'Default values' => 'Wartości domyślne',
|
||||||
|
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtów'),
|
||||||
|
'No commands to execute.' => 'Nic do wykonania.',
|
||||||
|
'Unable to upload a file.' => 'Nie było możliwe nagrać plik.',
|
||||||
|
'File upload' => 'Nagranie pliku',
|
||||||
|
'File uploads are disabled.' => 'Nagranie pliku nie jest dozwolone.',
|
||||||
|
'Routine has been called, %d row(s) affected.' => array('Procedura była uruchomiona, został zmieniony %d rekord.',
|
||||||
|
'Procedura była uruchomiona, zostały zmienione %d rekordy.',
|
||||||
|
'Procedura była uruchomiona, %d rekordów zostało zmienionych.'),
|
||||||
|
'Call' => 'Uruchomić',
|
||||||
|
'No extension' => 'Bez rozszerzenia',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'Nie jest dostępne żadne z PHP rozszerzeń (%s).',
|
||||||
|
'Session support must be enabled.' => 'Session zmienne muszą być dozwolone.',
|
||||||
|
'Session expired, please login again.' => 'Minął czas session, zaloguj się ponownie.',
|
||||||
|
'Text length' => 'Długość tekstu',
|
||||||
|
'Foreign key has been dropped.' => 'Klucz obcy został usunięty.',
|
||||||
|
'Foreign key has been altered.' => 'Klucz obcy został zmieniony.',
|
||||||
|
'Foreign key has been created.' => 'Klucz obcy został utworzony.',
|
||||||
|
'Foreign key' => 'Obcy klucz',
|
||||||
|
'Target table' => 'Tabela celowa',
|
||||||
|
'Change' => 'Zmienić',
|
||||||
|
'Source' => 'Źródło',
|
||||||
|
'Target' => 'Cel',
|
||||||
|
'Add column' => 'Dodaj kolumnę',
|
||||||
|
'Alter' => 'Zmień',
|
||||||
|
'Add foreign key' => 'Dodaj klucz obcy',
|
||||||
|
'ON DELETE' => 'W przypadku usunięcia',
|
||||||
|
'ON UPDATE' => 'W przypadku zmiany',
|
||||||
|
'Index Type' => 'Typ indeksu',
|
||||||
|
'Column (length)' => 'Kolumna (długość)',
|
||||||
|
'View has been dropped.' => 'Perspektywa została usunięta.',
|
||||||
|
'View has been altered.' => 'Perspektywa została zmieniona.',
|
||||||
|
'View has been created.' => 'Perspektywa została utworzona.',
|
||||||
|
'Alter view' => 'Zmień perspektywę',
|
||||||
|
'Create view' => 'Utwórz perspektywę',
|
||||||
|
'Name' => 'Nazwa',
|
||||||
|
'Process list' => 'Lista procesów',
|
||||||
|
'%d process(es) have been killed.' => array('Wątek %d został unicestwiony.',
|
||||||
|
'Unicestwiono %d wątki.',
|
||||||
|
'Unicestwiono %d wątków.'),
|
||||||
|
'Kill' => 'Unicestwij',
|
||||||
|
'Parameter name' => 'Nazwa parametru',
|
||||||
|
'Database schema' => 'Schemat bazy danych',
|
||||||
|
'Create procedure' => 'Utwórz procedurę',
|
||||||
|
'Create function' => 'Utwórz funkcję',
|
||||||
|
'Routine has been dropped.' => 'Procedura została usunięta.',
|
||||||
|
'Routine has been altered.' => 'Procedura została zmieniona.',
|
||||||
|
'Routine has been created.' => 'Procedura została utworzona.',
|
||||||
|
'Alter function' => 'Zmień funkcję',
|
||||||
|
'Alter procedure' => 'Zmień procedurę',
|
||||||
|
'Return type' => 'Typ zwracania',
|
||||||
|
'Add trigger' => 'Dodaj wyzwalacz',
|
||||||
|
'Trigger has been dropped.' => 'Wyzwalacz został usunięty.',
|
||||||
|
'Trigger has been altered.' => 'Wyzwalacz został zmieniony.',
|
||||||
|
'Trigger has been created.' => 'Wyzwalacz został utworzony.',
|
||||||
|
'Alter trigger' => 'Zmień wyzwalacz',
|
||||||
|
'Create trigger' => 'Utwórz wyzwalacz',
|
||||||
|
'Time' => 'Czas',
|
||||||
|
'Event' => 'Wydarzenie',
|
||||||
|
'%s version: %s through PHP extension %s' => 'Wersja %s: %s przez PHP rozszerzenie %s',
|
||||||
|
'%d row(s)' => array('%d linia', '%d linie ', '%d linii'),
|
||||||
|
'Remove' => 'Usunąć',
|
||||||
|
'Are you sure?' => 'Naprawdę?',
|
||||||
|
'Privileges' => 'Uprawnienia użytkowników',
|
||||||
|
'Create user' => 'Utwórz użytkownika',
|
||||||
|
'User has been dropped.' => 'Użytkownik został usunięty.',
|
||||||
|
'User has been altered.' => 'Użytkownik został zmieniony.',
|
||||||
|
'User has been created.' => 'Użytkownik został utworzony.',
|
||||||
|
'Hashed' => 'Hashed',
|
||||||
|
'Column' => 'Kolumna',
|
||||||
|
'Routine' => 'Procedura',
|
||||||
|
'Grant' => 'Udzielić',
|
||||||
|
'Revoke' => 'Odwołać',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' =>
|
||||||
|
'Zbyt duże POST data. Zmiejszyj data albo podwyższ wartość w konfiguracji %s.',
|
||||||
|
'Logged as: %s' => 'Zalogowany jako: %s',
|
||||||
|
'Move up' => 'Przesuń w górę',
|
||||||
|
'Move down' => 'Przesuń w dół',
|
||||||
|
'Functions' => 'Funkcje',
|
||||||
|
'Aggregation' => 'Agregacje',
|
||||||
|
'Export' => 'Eksport',
|
||||||
|
'Output' => 'Wyjście',
|
||||||
|
'open' => 'otworzyć',
|
||||||
|
'save' => 'uchować',
|
||||||
|
'Format' => 'Format',
|
||||||
|
'Tables' => 'Tabele',
|
||||||
|
'Data' => 'Data',
|
||||||
|
'Event has been dropped.' => 'Wydarzenie zostało usunięte.',
|
||||||
|
'Event has been altered.' => 'Wydarzenie zostało zmienione.',
|
||||||
|
'Event has been created.' => 'Wydarzenie zostało utworzone.',
|
||||||
|
'Alter event' => 'Zmień wydarzenie',
|
||||||
|
'Create event' => 'Utwórz wydarzenie',
|
||||||
|
'At given time' => 'O danym czasie',
|
||||||
|
'Every' => 'Każdych',
|
||||||
|
'Events' => 'Wydarzenie',
|
||||||
|
'Schedule' => 'Harmonogram',
|
||||||
|
'Start' => 'Początek',
|
||||||
|
'End' => 'Koniec',
|
||||||
|
'Status' => 'Status',
|
||||||
|
'On completion preserve' => 'Po zakończeniu zachować',
|
||||||
|
'Tables and views' => 'Tabele a perspektywy',
|
||||||
|
'Data Length' => 'Długość danych',
|
||||||
|
'Index Length' => 'Długość indeksów',
|
||||||
|
'Data Free' => 'Wolne miejsce',
|
||||||
|
'Collation' => 'Porównywanie',
|
||||||
|
'Analyze' => 'Analizuj',
|
||||||
|
'Optimize' => 'Optymalizacja',
|
||||||
|
'Check' => 'Sprawdź',
|
||||||
|
'Repair' => 'Napraw',
|
||||||
|
'Truncate' => 'Wypróźnij',
|
||||||
|
'Tables have been truncated.' => 'Tabele zostały wypróźnione.',
|
||||||
|
'Rows' => 'Linie',
|
||||||
|
',' => ' ',
|
||||||
|
'Tables have been moved.' => 'Tabele zostały przesunięte',
|
||||||
|
'Move to other database' => 'Przesunąć do innej bazy danych',
|
||||||
|
'Move' => 'Przesunąć',
|
||||||
|
'Engine' => 'Engine',
|
||||||
|
'Save and continue edit' => 'Zapisz i kontynuuj edycję',
|
||||||
|
'original' => 'oryginalny',
|
||||||
|
'%d item(s) have been affected.' => array('Został dotknięty %d rekord.',
|
||||||
|
'Zostały dotknięte %d rekordy.',
|
||||||
|
'Zostało dotkniętych %d rekordów.'),
|
||||||
|
'whole result' => 'cały wynik',
|
||||||
|
'Tables have been dropped.' => 'Tabele zostały usunięte.',
|
||||||
|
'Clone' => 'Klonować',
|
||||||
|
'Partition by' => 'Rozdzielić przez',
|
||||||
|
'Partitions' => 'Rozdziały',
|
||||||
|
'Partition name' => 'Nazwa rozdziału',
|
||||||
|
'Values' => 'Wartości',
|
||||||
|
'%d row(s) have been imported.' => array('%d rekord został importowany.',
|
||||||
|
'%d rekordy zostały importowane.',
|
||||||
|
'Zostało importowanych %d rekordów.'),
|
||||||
|
'CSV Import' => 'Import CSV',
|
||||||
|
'Import' => 'Import',
|
||||||
|
'Show structure' => 'Pokaż całą strukturę',
|
||||||
|
'Select data' => 'Pokaż dane',
|
||||||
|
'Stop on error' => 'Stop w przypadku błędu',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s and %s.' =>
|
||||||
|
'Przekroczono maksymalną liczbę pól. Zwiększ %s i %s.',
|
||||||
|
'anywhere' => 'kdziekolwiek',
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'$1-$3-$5' => '$6.$4.$1',
|
||||||
|
'[yyyy]-mm-dd' => 'd.m.[rrrr]',
|
||||||
|
'History' => 'Historia',
|
||||||
|
'Variables' => 'Zmienne',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target
|
||||||
|
columns and referenced data must exist.' =>
|
||||||
|
'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci
|
||||||
|
musí být definován index a odkazovaná data musí existovat.',
|
||||||
|
'E-mail' => 'E-mail',
|
||||||
|
'From' => 'Nadawca',
|
||||||
|
'Subject' => 'Temat',
|
||||||
|
'Send' => 'Wyślij',
|
||||||
|
'%d e-mail(s) have been sent.' => array('Został wysłany %d e-mail.',
|
||||||
|
'Zostały wysłane %d e-maile.', 'Zostało wysłanych %d e-mailów.'),
|
||||||
|
'Run file' => 'Uruchomić plik',
|
||||||
|
'Numbers' => 'Numery',
|
||||||
|
'Date and time' => 'Datum i czas',
|
||||||
|
'Strings' => 'Typu string',
|
||||||
|
'Binary' => 'Binarny',
|
||||||
|
'Lists' => 'Listy',
|
||||||
|
'Relations' => 'Relacje',
|
||||||
|
'Maximum allowed file size is %sB.' => 'Maksymalna wielkość pliku to %sB.',
|
||||||
|
'Clear' => 'Wyczyścić',
|
||||||
|
'Editor' => 'Edytor',
|
||||||
|
'Webserver file %s' => 'Plik %s na serweru',
|
||||||
|
'File does not exist.' => 'Plik nieistnieje.',
|
||||||
|
'Permanent login' => 'Logowanie stałe',
|
||||||
|
'%d in total' => '%d w sumie',
|
||||||
|
'Attachments' => 'Załączniki',
|
||||||
|
'System' => 'System',
|
||||||
|
'last' => 'ostatni',
|
||||||
|
'Network' => 'Sieć',
|
||||||
|
'Geometry' => 'Geometria',
|
||||||
|
'Databases have been dropped.' => 'Baze danych zostały usunięte.',
|
||||||
|
'File exists.' => 'Plik istnieje.',
|
||||||
|
'Double click on a value to modify it.' => 'Kliknij podwójnie by zmienić wartość.',
|
||||||
|
'Increase text length to modify this value.' => 'Aby zmienić wartość to potrzeba powiększyć długość tekstu.',
|
||||||
|
'Use edit link to modify this value.' => 'Użyj linku zmienić by poprawić wartość.',
|
||||||
|
'Alter schema' => 'Zmienić schemat',
|
||||||
|
'Create schema' => 'Utwórz schemat',
|
||||||
|
'Schema has been dropped.' => 'Schemat został usunięty.',
|
||||||
|
'Schema has been created.' => 'Schemat został utworzony.',
|
||||||
|
'Schema has been altered.' => 'Schemat został zmieniony.',
|
||||||
|
'schema' => 'schemat',
|
||||||
|
'Schema' => 'Schemat',
|
||||||
|
'Sequences' => 'Sekwencje',
|
||||||
|
'Create sequence' => 'Utwórz sekwencję',
|
||||||
|
'Sequence has been dropped.' => 'Sekwencja została usunięta.',
|
||||||
|
'Sequence has been created.' => 'Sekwencja została utworzona.',
|
||||||
|
'Sequence has been altered.' => 'Sekwencja została zmieniona.',
|
||||||
|
'Alter sequence' => 'Zmień sekwencję',
|
||||||
|
'User types' => 'Typy definiowane użytkownikiem',
|
||||||
|
'Create type' => 'Utwórz definiowany typ',
|
||||||
|
'Type has been dropped.' => 'Typ został usunięty.',
|
||||||
|
'Type has been created.' => 'Typ został utworzony.',
|
||||||
|
'Alter type' => 'Zmień typ',
|
||||||
|
'Search data in tables' => 'Wyszukaj data w tabelach',
|
||||||
|
'From server' => 'Ze serweru',
|
||||||
|
'empty' => 'puste',
|
||||||
|
'now' => 'teraz',
|
||||||
|
);
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Геометрия',
|
'Geometry' => 'Геометрия',
|
||||||
'File exists.' => 'Файл уже существует.',
|
'File exists.' => 'Файл уже существует.',
|
||||||
'Attachments' => 'Прикрепленные файлы',
|
'Attachments' => 'Прикрепленные файлы',
|
||||||
|
'%d query(s) executed OK.' => array('%d запрос выполнен успешно.', '%d запроса выполнено успешно.', '%d запросов выполнено успешно.'),
|
||||||
|
'Show only errors' => 'Только ошибки',
|
||||||
|
'Last page' => 'Последняя страница',
|
||||||
|
'Refresh' => 'Обновить',
|
||||||
|
'Invalid schema.' => 'Неправильная схема.',
|
||||||
|
'Please use one of the extensions %s.' => 'Используйте одно из этих расширений %s.',
|
||||||
|
'now' => 'сейчас',
|
||||||
);
|
);
|
||||||
|
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => 'Geometria',
|
'Geometry' => 'Geometria',
|
||||||
'File exists.' => 'Súbor existuje.',
|
'File exists.' => 'Súbor existuje.',
|
||||||
'Attachments' => 'Prílohy',
|
'Attachments' => 'Prílohy',
|
||||||
|
'%d query(s) executed OK.' => array('Bol vykonaný %d dotaz.', 'Boli vykonané %d dotazy.', 'Bolo vykonaných %d dotazov.'),
|
||||||
|
'Show only errors' => 'Zobraziť iba chyby',
|
||||||
|
'Last page' => 'Posledná stránka',
|
||||||
|
'Refresh' => 'Obnoviť',
|
||||||
|
'Invalid schema.' => 'Neplatné schéma.',
|
||||||
|
'Please use one of the extensions %s.' => 'Prosím vyberte jednu z koncoviek %s.',
|
||||||
|
'now' => 'teraz',
|
||||||
);
|
);
|
||||||
|
@@ -258,4 +258,10 @@ $translations = array(
|
|||||||
'File exists.' => 'கோப்பு உள்ளது.',
|
'File exists.' => 'கோப்பு உள்ளது.',
|
||||||
'Attachments' => 'இணைப்புகள்',
|
'Attachments' => 'இணைப்புகள்',
|
||||||
'now' => 'இப்பொழுது',
|
'now' => 'இப்பொழுது',
|
||||||
|
'%d query(s) executed OK.' => array('%d வினவல் செயல்படுத்தப்பட்டது.', '%d வினவல்கள் செயல்படுத்தப்பட்டன.'),
|
||||||
|
'Show only errors' => 'பிழைகளை மட்டும் காண்பிக்கவும்',
|
||||||
|
'Last page' => 'கடைசி பக்கம்',
|
||||||
|
'Refresh' => 'புதுப்பி (Refresh)',
|
||||||
|
'Invalid schema.' => 'அமைப்புமுறை சரியானதல்ல (Invalid Schema).',
|
||||||
|
'Please use one of the extensions %s.' => 'தயவு செய்து ஒரு விரிவினை %s (extension) உபயோகிக்கவும்.',
|
||||||
);
|
);
|
||||||
|
@@ -227,13 +227,13 @@ $translations = array(
|
|||||||
'Table has been dropped.' => '已經刪除資料表。',
|
'Table has been dropped.' => '已經刪除資料表。',
|
||||||
'Databases have been dropped.' => '資料庫已刪除。',
|
'Databases have been dropped.' => '資料庫已刪除。',
|
||||||
'Search data in tables' => '在資料庫搜尋',
|
'Search data in tables' => '在資料庫搜尋',
|
||||||
'schema' => '架構',
|
'schema' => '資料表結構',
|
||||||
'Schema' => '架構',
|
'Schema' => '資料表結構',
|
||||||
'Alter schema' => '更改架構',
|
'Alter schema' => '更改資料表結構',
|
||||||
'Create schema' => '建立架構',
|
'Create schema' => '建立資料表結構',
|
||||||
'Schema has been dropped.' => '已刪除架構。',
|
'Schema has been dropped.' => '已刪除資料表結構。',
|
||||||
'Schema has been created.' => '已建立架構。',
|
'Schema has been created.' => '已建立資料表結構。',
|
||||||
'Schema has been altered.' => '已更改架構。',
|
'Schema has been altered.' => '已更改資料表結構。',
|
||||||
'Sequences' => 'Sequences',
|
'Sequences' => 'Sequences',
|
||||||
'Create sequence' => '建立 sequence',
|
'Create sequence' => '建立 sequence',
|
||||||
'Alter sequence' => '更改 sequence',
|
'Alter sequence' => '更改 sequence',
|
||||||
@@ -257,4 +257,11 @@ $translations = array(
|
|||||||
'Geometry' => '幾何',
|
'Geometry' => '幾何',
|
||||||
'File exists.' => '檔案已存在。',
|
'File exists.' => '檔案已存在。',
|
||||||
'Attachments' => '附件',
|
'Attachments' => '附件',
|
||||||
|
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
|
||||||
|
'Show only errors' => '僅顯示錯誤訊息',
|
||||||
|
'Last page' => '最後一頁',
|
||||||
|
'Refresh' => '重新載入',
|
||||||
|
'Invalid schema.' => '無效的資料表結構。',
|
||||||
|
'Please use one of the extensions %s.' => '請使用下列其中一個 extension %s。',
|
||||||
|
'now' => '現在',
|
||||||
);
|
);
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
if ($_POST && !$error) {
|
if ($_POST && !$error) {
|
||||||
$killed = 0;
|
$killed = 0;
|
||||||
foreach ((array) $_POST["kill"] as $val) {
|
foreach ((array) $_POST["kill"] as $val) {
|
||||||
if (queries("KILL " . ereg_replace("[^0-9]+", "", $val))) {
|
if (queries("KILL " . (+$val))) {
|
||||||
$killed++;
|
$killed++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,11 @@ foreach (get_rows("SHOW FULL PROCESSLIST") as $i => $row) {
|
|||||||
if (!$i) {
|
if (!$i) {
|
||||||
echo "<thead><tr lang='en'><th> <th>" . implode("<th>", array_keys($row)) . "</thead>\n";
|
echo "<thead><tr lang='en'><th> <th>" . implode("<th>", array_keys($row)) . "</thead>\n";
|
||||||
}
|
}
|
||||||
echo "<tr" . odd() . "><td>" . checkbox("kill[]", $row["Id"], 0) . "<td>" . implode("<td>", array_map('nbsp', $row)) . "\n";
|
echo "<tr" . odd() . "><td>" . checkbox("kill[]", $row["Id"], 0);
|
||||||
|
foreach ($row as $key => $val) {
|
||||||
|
echo "<td>" . ($key == "Info" && $val != "" ? "<code class='jush-$jush'>" . nbsp($val) . '</code> <a href="' . h(ME . ($row["db"] != "" ? "db=" . urlencode($row["db"]) . "&" : "") . "sql=" . urlencode($val)) . '">' . lang('Edit') . '</a>' : nbsp($val));
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -7,7 +7,7 @@ $table_pos_js = array();
|
|||||||
preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $_COOKIE["adminer_schema"], $matches, PREG_SET_ORDER); //! ':' in table name
|
preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $_COOKIE["adminer_schema"], $matches, PREG_SET_ORDER); //! ':' in table name
|
||||||
foreach ($matches as $i => $match) {
|
foreach ($matches as $i => $match) {
|
||||||
$table_pos[$match[1]] = array($match[2], $match[3]);
|
$table_pos[$match[1]] = array($match[2], $match[3]);
|
||||||
$table_pos_js[] = "\n\t'" . addcslashes($match[1], "\r\n'\\/") . "': [ $match[2], $match[3] ]";
|
$table_pos_js[] = "\n\t'" . js_escape($match[1]) . "': [ $match[2], $match[3] ]";
|
||||||
}
|
}
|
||||||
|
|
||||||
$top = 0;
|
$top = 0;
|
||||||
@@ -27,23 +27,21 @@ foreach (table_status() as $row) {
|
|||||||
$schema[$row["Name"]]["fields"][$name] = $field;
|
$schema[$row["Name"]]["fields"][$name] = $field;
|
||||||
}
|
}
|
||||||
$schema[$row["Name"]]["pos"] = ($table_pos[$row["Name"]] ? $table_pos[$row["Name"]] : array($top, 0));
|
$schema[$row["Name"]]["pos"] = ($table_pos[$row["Name"]] ? $table_pos[$row["Name"]] : array($top, 0));
|
||||||
if (fk_support($row)) {
|
foreach ($adminer->foreignKeys($row["Name"]) as $val) {
|
||||||
foreach (foreign_keys($row["Name"]) as $val) {
|
if (!$val["db"]) {
|
||||||
if (!$val["db"]) {
|
$left = $base_left;
|
||||||
$left = $base_left;
|
if ($table_pos[$row["Name"]][1] || $table_pos[$val["table"]][1]) {
|
||||||
if ($table_pos[$row["Name"]][1] || $table_pos[$val["table"]][1]) {
|
$left = min(floatval($table_pos[$row["Name"]][1]), floatval($table_pos[$val["table"]][1])) - 1;
|
||||||
$left = min(floatval($table_pos[$row["Name"]][1]), floatval($table_pos[$val["table"]][1])) - 1;
|
} else {
|
||||||
} else {
|
$base_left -= .1;
|
||||||
$base_left -= .1;
|
|
||||||
}
|
|
||||||
while ($lefts[(string) $left]) {
|
|
||||||
// find free $left
|
|
||||||
$left -= .0001;
|
|
||||||
}
|
|
||||||
$schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
|
|
||||||
$referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
|
|
||||||
$lefts[(string) $left] = true;
|
|
||||||
}
|
}
|
||||||
|
while ($lefts[(string) $left]) {
|
||||||
|
// find free $left
|
||||||
|
$left -= .0001;
|
||||||
|
}
|
||||||
|
$schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
|
||||||
|
$referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
|
||||||
|
$lefts[(string) $left] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$top = max($top, $schema[$row["Name"]]["pos"][0] + 2.5 + $pos);
|
$top = max($top, $schema[$row["Name"]]["pos"][0] + 2.5 + $pos);
|
||||||
|
@@ -4,7 +4,7 @@ header("Content-Type: text/javascript; charset=utf-8");
|
|||||||
if ($_GET["script"] == "db") {
|
if ($_GET["script"] == "db") {
|
||||||
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
||||||
foreach (table_status() as $row) {
|
foreach (table_status() as $row) {
|
||||||
$id = $row["Name"];
|
$id = js_escape($row["Name"]);
|
||||||
json_row("Comment-$id", nbsp($row["Comment"]));
|
json_row("Comment-$id", nbsp($row["Comment"]));
|
||||||
if (!is_view($row)) {
|
if (!is_view($row)) {
|
||||||
foreach (array("Engine", "Collation") as $key) {
|
foreach (array("Engine", "Collation") as $key) {
|
||||||
@@ -29,7 +29,7 @@ if ($_GET["script"] == "db") {
|
|||||||
json_row("");
|
json_row("");
|
||||||
} else { // connect
|
} else { // connect
|
||||||
foreach (count_tables(get_databases()) as $db => $val) {
|
foreach (count_tables(get_databases()) as $db => $val) {
|
||||||
json_row("tables-$db", $val);
|
json_row("tables-" . js_escape($db), $val);
|
||||||
}
|
}
|
||||||
json_row("");
|
json_row("");
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
$TABLE = $_GET["select"];
|
$TABLE = $_GET["select"];
|
||||||
$table_status = table_status($TABLE);
|
$table_status = table_status($TABLE);
|
||||||
$indexes = indexes($TABLE);
|
$indexes = indexes($TABLE);
|
||||||
$fields = fields($TABLE, 1); // 1 - hidden
|
$fields = fields($TABLE);
|
||||||
$foreign_keys = column_foreign_keys($TABLE);
|
$foreign_keys = column_foreign_keys($TABLE);
|
||||||
|
|
||||||
$rights = array(); // privilege => 0
|
$rights = array(); // privilege => 0
|
||||||
@@ -51,9 +51,9 @@ if ($_POST && !$error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($_POST["export"]) {
|
if ($_POST["export"]) {
|
||||||
dump_headers($TABLE);
|
$adminer->dumpHeaders($TABLE);
|
||||||
dump_table($TABLE, "");
|
$adminer->dumpTable($TABLE, "");
|
||||||
if ($_POST["format"] != "sql") { // Editor doesn't send format
|
if (ereg("[ct]sv", $_POST["format"])) { // CSV or TSV
|
||||||
$row = array_keys($fields);
|
$row = array_keys($fields);
|
||||||
if ($select) {
|
if ($select) {
|
||||||
$row = array();
|
$row = array();
|
||||||
@@ -68,14 +68,14 @@ if ($_POST && !$error) {
|
|||||||
if (is_array($_POST["check"])) {
|
if (is_array($_POST["check"])) {
|
||||||
$where2[] = "($where_check)";
|
$where2[] = "($where_check)";
|
||||||
}
|
}
|
||||||
dump_data($TABLE, "INSERT", "SELECT $from" . ($where2 ? "\nWHERE " . implode(" AND ", $where2) : "") . $group_by);
|
$adminer->dumpData($TABLE, "INSERT", "SELECT $from" . ($where2 ? "\nWHERE " . implode(" AND ", $where2) : "") . $group_by);
|
||||||
} else {
|
} else {
|
||||||
$union = array();
|
$union = array();
|
||||||
foreach ($_POST["check"] as $val) {
|
foreach ($_POST["check"] as $val) {
|
||||||
// where is not unique so OR can't be used
|
// where is not unique so OR can't be used
|
||||||
$union[] = "(SELECT" . limit($from, "\nWHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($val) . $group_by, 1) . ")";
|
$union[] = "(SELECT" . limit($from, "\nWHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($val) . $group_by, 1) . ")";
|
||||||
}
|
}
|
||||||
dump_data($TABLE, "INSERT", implode(" UNION ALL ", $union));
|
$adminer->dumpData($TABLE, "INSERT", implode(" UNION ALL ", $union));
|
||||||
}
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ if ($_POST && !$error) {
|
|||||||
preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $file, $matches);
|
preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $file, $matches);
|
||||||
$affected = count($matches[0]);
|
$affected = count($matches[0]);
|
||||||
begin();
|
begin();
|
||||||
$separator = ($_POST["separator"] == "csv" ? "," : ";");
|
$separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";"));
|
||||||
foreach ($matches[0] as $key => $val) {
|
foreach ($matches[0] as $key => $val) {
|
||||||
preg_match_all("~((\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2);
|
preg_match_all("~((\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2);
|
||||||
if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n
|
if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n
|
||||||
@@ -220,7 +220,7 @@ if (!$columns) {
|
|||||||
$page = floor(max(0, $found_rows - 1) / $limit);
|
$page = floor(max(0, $found_rows - 1) / $limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "SELECT" . limit((intval($limit) && $group && count($group) < count($select) && $jush == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . $from, ($where ? "\nWHERE " . implode(" AND ", $where) : "") . $group_by, ($limit != "" ? intval($limit) : null), ($page ? $limit * $page : 0), "\n");
|
$query = "SELECT" . limit((+$limit && $group && count($group) < count($select) && $jush == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . $from, ($where ? "\nWHERE " . implode(" AND ", $where) : "") . $group_by, ($limit != "" ? +$limit : null), ($page ? $limit * $page : 0), "\n");
|
||||||
echo $adminer->selectQuery($query);
|
echo $adminer->selectQuery($query);
|
||||||
|
|
||||||
$result = $connection->query($query);
|
$result = $connection->query($query);
|
||||||
@@ -238,7 +238,7 @@ if (!$columns) {
|
|||||||
}
|
}
|
||||||
// use count($rows) without LIMIT, COUNT(*) without grouping, FOUND_ROWS otherwise (slowest)
|
// use count($rows) without LIMIT, COUNT(*) without grouping, FOUND_ROWS otherwise (slowest)
|
||||||
if ($_GET["page"] != "last") {
|
if ($_GET["page"] != "last") {
|
||||||
$found_rows = (intval($limit) && $group && count($group) < count($select)
|
$found_rows = (+$limit && $group && count($group) < count($select)
|
||||||
? ($jush == "sql" ? $connection->result(" SELECT FOUND_ROWS()") : $connection->result("SELECT COUNT(*) FROM ($query) x")) // space to allow mysql.trace_mode
|
? ($jush == "sql" ? $connection->result(" SELECT FOUND_ROWS()") : $connection->result("SELECT COUNT(*) FROM ($query) x")) // space to allow mysql.trace_mode
|
||||||
: count($rows)
|
: count($rows)
|
||||||
);
|
);
|
||||||
@@ -254,15 +254,16 @@ if (!$columns) {
|
|||||||
$names = array();
|
$names = array();
|
||||||
$functions = array();
|
$functions = array();
|
||||||
reset($select);
|
reset($select);
|
||||||
$order = 1;
|
$rank = 1;
|
||||||
foreach ($rows[0] as $key => $val) {
|
foreach ($rows[0] as $key => $val) {
|
||||||
$val = $_GET["columns"][key($select)];
|
$val = $_GET["columns"][key($select)];
|
||||||
$field = $fields[$select ? $val["col"] : $key];
|
$field = $fields[$select ? $val["col"] : $key];
|
||||||
$name = ($field ? $adminer->fieldName($field, $order) : "*");
|
$name = ($field ? $adminer->fieldName($field, $rank) : "*");
|
||||||
if ($name != "") {
|
if ($name != "") {
|
||||||
$order++;
|
$rank++;
|
||||||
$names[$key] = $name;
|
$names[$key] = $name;
|
||||||
echo '<th><a href="' . h(remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($key) . ($_GET["order"][0] == $key && !$_GET["desc"][0] ? '&desc%5B0%5D=1' : '')) . '" onclick="return !ajaxMain(this.href, undefined, event);">' . apply_sql_function($val["fun"], $name) . "</a>"; //! columns looking like functions
|
$column = idf_escape($key);
|
||||||
|
echo '<th><a href="' . h(remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($key) . ($order[0] == $column || $order[0] == $key || (!$order && $group[0] == $column) ? '&desc%5B0%5D=1' : '')) . '" onclick="return !ajaxMain(this.href, undefined, event);">' . apply_sql_function($val["fun"], $name) . "</a>"; // $order[0] == $key - COUNT(*) //! columns looking like functions
|
||||||
}
|
}
|
||||||
$functions[$key] = $val["fun"];
|
$functions[$key] = $val["fun"];
|
||||||
next($select);
|
next($select);
|
||||||
@@ -300,19 +301,22 @@ if (!$columns) {
|
|||||||
if ($val == "") {
|
if ($val == "") {
|
||||||
$val = " ";
|
$val = " ";
|
||||||
} elseif ($text_length != "" && ereg('text|blob', $field["type"]) && is_utf8($val)) {
|
} elseif ($text_length != "" && ereg('text|blob', $field["type"]) && is_utf8($val)) {
|
||||||
$val = shorten_utf8($val, max(0, intval($text_length))); // usage of LEFT() would reduce traffic but complicate query - expected average speedup: .001 s VS .01 s on local network
|
$val = shorten_utf8($val, max(0, +$text_length)); // usage of LEFT() would reduce traffic but complicate query - expected average speedup: .001 s VS .01 s on local network
|
||||||
} else {
|
} else {
|
||||||
$val = h($val);
|
$val = h($val);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$link) { // link related items
|
if (!$link) { // link related items
|
||||||
foreach ((array) $foreign_keys[$key] as $foreign_key) {
|
foreach ((array) $foreign_keys[$key] as $foreign_key) {
|
||||||
if (count($foreign_keys[$key]) == 1 || count($foreign_key["source"]) == 1) {
|
if (count($foreign_keys[$key]) == 1 || end($foreign_key["source"]) == $key) {
|
||||||
|
$link = "";
|
||||||
foreach ($foreign_key["source"] as $i => $source) {
|
foreach ($foreign_key["source"] as $i => $source) {
|
||||||
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
|
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
|
||||||
}
|
}
|
||||||
$link = h(($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link); // InnoDB supports non-UNIQUE keys
|
$link = h(($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link); // InnoDB supports non-UNIQUE keys
|
||||||
break;
|
if (count($foreign_key["source"]) == 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -362,7 +366,7 @@ if (!$columns) {
|
|||||||
|
|
||||||
if ($rows || $page) {
|
if ($rows || $page) {
|
||||||
$exact_count = true;
|
$exact_count = true;
|
||||||
if ($_GET["page"] != "last" && intval($limit) && count($group) >= count($select) && ($found_rows >= $limit || $page)) {
|
if ($_GET["page"] != "last" && +$limit && count($group) >= count($select) && ($found_rows >= $limit || $page)) {
|
||||||
$found_rows = $table_status["Rows"];
|
$found_rows = $table_status["Rows"];
|
||||||
if (!isset($found_rows) || $where || 2 * $page * $limit > $found_rows || ($table_status["Engine"] == "InnoDB" && $found_rows < 1e4)) {
|
if (!isset($found_rows) || $where || 2 * $page * $limit > $found_rows || ($table_status["Engine"] == "InnoDB" && $found_rows < 1e4)) {
|
||||||
// slow with big tables
|
// slow with big tables
|
||||||
@@ -374,10 +378,10 @@ if (!$columns) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo "<p class='pages'>";
|
echo "<p class='pages'>";
|
||||||
if (intval($limit) && $found_rows > $limit) {
|
if (+$limit && $found_rows > $limit) {
|
||||||
// display first, previous 4, next 4 and last page
|
// display first, previous 4, next 4 and last page
|
||||||
$max_page = floor(($found_rows - 1) / $limit);
|
$max_page = floor(($found_rows - 1) / $limit);
|
||||||
echo '<a href="' . h(remove_from_uri("page")) . "\" onclick=\"var page = +prompt('" . lang('Page') . "', '" . ($page + 1) . "'); if (!isNaN(page) && page) ajaxMain(this.href + (page != 1 ? '&page=' + (page - 1) : ''), undefined, event); return false;\">" . lang('Page') . "</a>:";
|
echo '<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . lang('Page') . "', '" . ($page + 1) . "'), event); return false;\">" . lang('Page') . "</a>:";
|
||||||
echo pagination(0, $page) . ($page > 5 ? " ..." : "");
|
echo pagination(0, $page) . ($page > 5 ? " ..." : "");
|
||||||
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
||||||
echo pagination($i, $page);
|
echo pagination($i, $page);
|
||||||
@@ -397,13 +401,14 @@ if (!$columns) {
|
|||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
print_fieldset("export", lang('Export'));
|
print_fieldset("export", lang('Export'));
|
||||||
echo $adminer->dumpOutput(1, $adminer_export["output"]) . " " . $adminer->dumpFormat(1, $adminer_export["format"]); // 1 - select
|
$output = $adminer->dumpOutput();
|
||||||
|
echo ($output ? html_select("output", $output, $adminer_export["output"]) . " " : "") . html_select("format", $adminer->dumpFormat(), $adminer_export["format"]);
|
||||||
echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n";
|
echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n";
|
||||||
echo "</div></fieldset>\n";
|
echo "</div></fieldset>\n";
|
||||||
}
|
}
|
||||||
print_fieldset("import", lang('CSV Import'), !$rows);
|
print_fieldset("import", lang('CSV Import'), !$rows);
|
||||||
echo "<input type='hidden' name='token' value='$token'><input type='file' name='csv_file'> ";
|
echo "<input type='hidden' name='token' value='$token'><input type='file' name='csv_file'> ";
|
||||||
echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;"), $adminer_export["format"], 1); // 1 - select
|
echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_export["format"], 1); // 1 - select
|
||||||
echo " <input type='submit' name='import' value='" . lang('Import') . "'>\n";
|
echo " <input type='submit' name='import' value='" . lang('Import') . "'>\n";
|
||||||
echo "</div></fieldset>\n";
|
echo "</div></fieldset>\n";
|
||||||
|
|
||||||
|
@@ -40,13 +40,14 @@ if (!$error && $_POST) {
|
|||||||
$connection2->select_db(DB);
|
$connection2->select_db(DB);
|
||||||
}
|
}
|
||||||
$commands = 0;
|
$commands = 0;
|
||||||
$errors = "";
|
$errors = array();
|
||||||
|
$parse = '[\'`"]' . ($jush == "pgsql" ? '|\\$[^$]*\\$' : ($jush == "mssql" || $jush == "sqlite" ? '|\\[' : '')) . '|/\\*|-- |#'; //! ` and # not everywhere
|
||||||
while ($query != "") {
|
while ($query != "") {
|
||||||
if (!$offset && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
|
if (!$offset && $jush == "sql" && preg_match('~^\\s*DELIMITER\\s+(.+)~i', $query, $match)) {
|
||||||
$delimiter = $match[1];
|
$delimiter = $match[1];
|
||||||
$query = substr($query, strlen($match[0]));
|
$query = substr($query, strlen($match[0]));
|
||||||
} else {
|
} else {
|
||||||
preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match
|
preg_match('(' . preg_quote($delimiter) . "|$parse|\$)", $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match
|
||||||
$found = $match[0][0];
|
$found = $match[0][0];
|
||||||
$offset = $match[0][1] + strlen($found);
|
$offset = $match[0][1] + strlen($found);
|
||||||
if (!$found && $fp && !feof($fp)) {
|
if (!$found && $fp && !feof($fp)) {
|
||||||
@@ -55,18 +56,32 @@ if (!$error && $_POST) {
|
|||||||
if (!$found && rtrim($query) == "") {
|
if (!$found && rtrim($query) == "") {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!$found || $found == $delimiter) { // end of a query
|
if ($found && $found != $delimiter) { // find matching quote or comment end
|
||||||
|
while (preg_match('(' . ($found == '/*' ? '\\*/' : ($found == '[' ? ']' : (ereg('^-- |^#', $found) ? "\n" : preg_quote($found) . "|\\\\."))) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
|
||||||
|
$s = $match[0][0];
|
||||||
|
$offset = $match[0][1] + strlen($s);
|
||||||
|
if (!$s && $fp && !feof($fp)) {
|
||||||
|
$query .= fread($fp, 1e6);
|
||||||
|
} elseif ($s[0] != "\\") {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // end of a query
|
||||||
$empty = false;
|
$empty = false;
|
||||||
$q = substr($query, 0, $match[0][1]);
|
$q = substr($query, 0, $match[0][1]);
|
||||||
$commands++;
|
$commands++;
|
||||||
echo "<pre id='sql-$commands'><code class='jush-$jush'>" . shorten_utf8(trim($q), 1000) . "</code></pre>\n";
|
$print = "<pre id='sql-$commands'><code class='jush-$jush'>" . shorten_utf8(trim($q), 1000) . "</code></pre>\n";
|
||||||
ob_flush();
|
if (!$_POST["only_errors"]) {
|
||||||
flush(); // can take a long time - show the running query
|
echo $print;
|
||||||
|
ob_flush();
|
||||||
|
flush(); // can take a long time - show the running query
|
||||||
|
}
|
||||||
$start = explode(" ", microtime()); // microtime(true) is available since PHP 5
|
$start = explode(" ", microtime()); // microtime(true) is available since PHP 5
|
||||||
//! don't allow changing of character_set_results, convert encoding of displayed query
|
//! don't allow changing of character_set_results, convert encoding of displayed query
|
||||||
if (!$connection->multi_query($q)) {
|
if (!$connection->multi_query($q)) {
|
||||||
|
echo ($_POST["only_errors"] ? $print : "");
|
||||||
echo "<p class='error'>" . lang('Error in query') . ": " . error() . "\n";
|
echo "<p class='error'>" . lang('Error in query') . ": " . error() . "\n";
|
||||||
$errors .= " <a href='#sql-$commands'>$commands</a>";
|
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
||||||
if ($_POST["error_stops"]) {
|
if ($_POST["error_stops"]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -77,8 +92,21 @@ if (!$error && $_POST) {
|
|||||||
do {
|
do {
|
||||||
$result = $connection->store_result();
|
$result = $connection->store_result();
|
||||||
$end = explode(" ", microtime());
|
$end = explode(" ", microtime());
|
||||||
$time = " <span class='time'>(" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . ")</span>";
|
$time = " <span class='time'>(" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . ")</span>" . (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : ""); // 1000 - maximum length of encoded URL in IE is 2083 characters
|
||||||
if (is_object($result)) {
|
if (!is_object($result)) {
|
||||||
|
if (preg_match("~^$space*(CREATE|DROP|ALTER)$space+(DATABASE|SCHEMA)\\b~isU", $q)) {
|
||||||
|
restart_session();
|
||||||
|
set_session("dbs", null); // clear cache
|
||||||
|
session_write_close();
|
||||||
|
}
|
||||||
|
if (!$_POST["only_errors"]) {
|
||||||
|
echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($_POST["only_errors"]) {
|
||||||
|
echo $print;
|
||||||
|
$print = "";
|
||||||
|
}
|
||||||
select($result, $connection2);
|
select($result, $connection2);
|
||||||
echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) : "") . $time;
|
echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) : "") . $time;
|
||||||
if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q)) {
|
if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q)) {
|
||||||
@@ -88,38 +116,22 @@ if (!$error && $_POST) {
|
|||||||
select(explain($connection2, $q));
|
select(explain($connection2, $q));
|
||||||
echo "</div>\n";
|
echo "</div>\n";
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (preg_match("~^$space*(CREATE|DROP|ALTER)$space+(DATABASE|SCHEMA)\\b~isU", $q)) {
|
|
||||||
restart_session();
|
|
||||||
set_session("dbs", null); // clear cache
|
|
||||||
session_write_close();
|
|
||||||
}
|
|
||||||
echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n";
|
|
||||||
}
|
}
|
||||||
$start = $end;
|
$start = $end;
|
||||||
} while ($connection->next_result());
|
} while ($connection->next_result());
|
||||||
}
|
}
|
||||||
$query = substr($query, $offset);
|
$query = substr($query, $offset);
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
} else { // find matching quote or comment end
|
|
||||||
while (preg_match('~' . ($found == '/*' ? '\\*/' : (ereg('-- |#', $found) ? "\n" : "$found|\\\\.")) . '|$~s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
|
|
||||||
$s = $match[0][0];
|
|
||||||
$offset = $match[0][1] + strlen($s);
|
|
||||||
if (!$s && $fp && !feof($fp)) {
|
|
||||||
$query .= fread($fp, 1e6);
|
|
||||||
} elseif ($s[0] != "\\") {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($errors && $commands > 1) {
|
|
||||||
echo "<p class='error'>" . lang('Error in query') . ": $errors\n";
|
|
||||||
}
|
|
||||||
if ($empty) {
|
if ($empty) {
|
||||||
echo "<p class='message'>" . lang('No commands to execute.') . "\n";
|
echo "<p class='message'>" . lang('No commands to execute.') . "\n";
|
||||||
|
} elseif ($_POST["only_errors"]) {
|
||||||
|
echo "<p class='message'>" . lang('%d query(s) executed OK.', $commands - count($errors)) . "\n";
|
||||||
|
} elseif ($errors && $commands > 1) {
|
||||||
|
echo "<p class='error'>" . lang('Error in query') . ": " . implode("", $errors) . "\n";
|
||||||
}
|
}
|
||||||
//! MS SQL - SET SHOWPLAN_ALL OFF
|
//! MS SQL - SET SHOWPLAN_ALL OFF
|
||||||
} else {
|
} else {
|
||||||
@@ -145,7 +157,8 @@ echo "<p>" . (ini_bool("file_uploads") ? lang('File upload') . ': <input type="f
|
|||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
<input type="submit" value="<?php echo lang('Execute'); ?>" title="Ctrl+Enter">
|
<input type="submit" value="<?php echo lang('Execute'); ?>" title="Ctrl+Enter">
|
||||||
<?php
|
<?php
|
||||||
echo checkbox("error_stops", 1, $_POST["error_stops"], lang('Stop on error'));
|
echo checkbox("error_stops", 1, $_POST["error_stops"], lang('Stop on error')) . "\n";
|
||||||
|
echo checkbox("only_errors", 1, $_POST["only_errors"], lang('Show only errors')) . "\n";
|
||||||
|
|
||||||
print_fieldset("webfile", lang('From server'), $_POST["webfile"]);
|
print_fieldset("webfile", lang('From server'), $_POST["webfile"]);
|
||||||
$compress = array();
|
$compress = array();
|
||||||
|
@@ -47,6 +47,12 @@ pre { margin: 1em 0 0; }
|
|||||||
#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
|
#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
|
||||||
#schema .references { position: absolute; }
|
#schema .references { position: absolute; }
|
||||||
|
|
||||||
|
.rtl h2 { margin: 0 -18px 20px 0; }
|
||||||
|
.rtl p, .rtl table, .rtl .error, .rtl .message { margin: 1em 0 0 20px; }
|
||||||
|
.rtl #content { margin: 2em 21em 0 0; padding: 10px 0 20px 20px; }
|
||||||
|
.rtl #breadcrumb { left: auto; right: 21em; margin: 0 -18px 0 0; }
|
||||||
|
.rtl #lang, .rtl #menu { left: auto; right: 0; }
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
#lang, #menu { display: none; }
|
#lang, #menu { display: none; }
|
||||||
#content { margin-left: 1em; }
|
#content { margin-left: 1em; }
|
||||||
|
@@ -39,7 +39,7 @@ function bodyLoad(version, protocol) {
|
|||||||
* @return HTMLElement
|
* @return HTMLElement
|
||||||
*/
|
*/
|
||||||
function formField(form, name) {
|
function formField(form, name) {
|
||||||
// required in old IE, maybe can be rewritten as form.elements[name]
|
// required in IE < 8, form.elements[name] doesn't work
|
||||||
for (var i=0; i < form.length; i++) {
|
for (var i=0; i < form.length; i++) {
|
||||||
if (form[i].name == name) {
|
if (form[i].name == name) {
|
||||||
return form[i];
|
return form[i];
|
||||||
@@ -130,7 +130,7 @@ function editingAddRow(button, allowed, focus) {
|
|||||||
if (allowed && rowCount >= allowed) {
|
if (allowed && rowCount >= allowed) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
|
var match = /(\d+)(\.\d+)?/.exec(button.name);
|
||||||
var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
|
var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
|
||||||
var row = button.parentNode.parentNode;
|
var row = button.parentNode.parentNode;
|
||||||
var row2 = row.cloneNode(true);
|
var row2 = row.cloneNode(true);
|
||||||
@@ -300,11 +300,11 @@ function indexesAddRow(field) {
|
|||||||
}
|
}
|
||||||
var selects = row.getElementsByTagName('select');
|
var selects = row.getElementsByTagName('select');
|
||||||
for (var i=0; i < selects.length; i++) {
|
for (var i=0; i < selects.length; i++) {
|
||||||
selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
|
selects[i].name = selects[i].name.replace(/indexes\[\d+/, '$&1');
|
||||||
selects[i].selectedIndex = 0;
|
selects[i].selectedIndex = 0;
|
||||||
}
|
}
|
||||||
var input = row.getElementsByTagName('input')[0];
|
var input = row.getElementsByTagName('input')[0];
|
||||||
input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
|
input.name = input.name.replace(/indexes\[\d+/, '$&1');
|
||||||
input.value = '';
|
input.value = '';
|
||||||
field.parentNode.parentNode.parentNode.appendChild(row);
|
field.parentNode.parentNode.parentNode.appendChild(row);
|
||||||
}
|
}
|
||||||
@@ -316,10 +316,10 @@ function indexesAddColumn(field) {
|
|||||||
field.onchange = function () { };
|
field.onchange = function () { };
|
||||||
var column = field.parentNode.cloneNode(true);
|
var column = field.parentNode.cloneNode(true);
|
||||||
var select = column.getElementsByTagName('select')[0];
|
var select = column.getElementsByTagName('select')[0];
|
||||||
select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
|
select.name = select.name.replace(/\]\[\d+/, '$&1');
|
||||||
select.selectedIndex = 0;
|
select.selectedIndex = 0;
|
||||||
var input = column.getElementsByTagName('input')[0];
|
var input = column.getElementsByTagName('input')[0];
|
||||||
input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
|
input.name = input.name.replace(/\]\[\d+/, '$&1');
|
||||||
input.value = '';
|
input.value = '';
|
||||||
field.parentNode.parentNode.appendChild(column);
|
field.parentNode.parentNode.appendChild(column);
|
||||||
}
|
}
|
||||||
@@ -365,7 +365,7 @@ function schemaMousemove(ev) {
|
|||||||
isTop = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
|
isTop = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
|
||||||
}
|
}
|
||||||
if (!lineSet[id]) {
|
if (!lineSet[id]) {
|
||||||
var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
|
var line = document.getElementById(divs[i].id.replace(/^....(.+)-\d+$/, 'refl$1'));
|
||||||
var shift = ev.clientY - y - that.offsetTop;
|
var shift = ev.clientY - y - that.offsetTop;
|
||||||
line.style.left = (left + left1) + 'em';
|
line.style.left = (left + left1) + 'em';
|
||||||
if (isTop) {
|
if (isTop) {
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
@@ -1,5 +1,5 @@
|
|||||||
// to hide elements displayed by JavaScript
|
// to hide elements displayed by JavaScript
|
||||||
document.body.className = 'js';
|
document.body.className += ' js';
|
||||||
|
|
||||||
/** Toggle visibility
|
/** Toggle visibility
|
||||||
* @param string
|
* @param string
|
||||||
@@ -107,6 +107,20 @@ function setHtml(id, html) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Go to the specified page
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @param [MouseEvent]
|
||||||
|
*/
|
||||||
|
function pageClick(href, page, event) {
|
||||||
|
if (!isNaN(page) && page) {
|
||||||
|
href += (page != 1 ? '&page=' + (page - 1) : '');
|
||||||
|
if (!ajaxMain(href, undefined, event)) {
|
||||||
|
location.href = href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Add row in select fieldset
|
/** Add row in select fieldset
|
||||||
@@ -117,12 +131,12 @@ function selectAddRow(field) {
|
|||||||
var row = field.parentNode.cloneNode(true);
|
var row = field.parentNode.cloneNode(true);
|
||||||
var selects = row.getElementsByTagName('select');
|
var selects = row.getElementsByTagName('select');
|
||||||
for (var i=0; i < selects.length; i++) {
|
for (var i=0; i < selects.length; i++) {
|
||||||
selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
|
selects[i].name = selects[i].name.replace(/[a-z]\[\d+/, '$&1');
|
||||||
selects[i].selectedIndex = 0;
|
selects[i].selectedIndex = 0;
|
||||||
}
|
}
|
||||||
var inputs = row.getElementsByTagName('input');
|
var inputs = row.getElementsByTagName('input');
|
||||||
if (inputs.length) {
|
if (inputs.length) {
|
||||||
inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
|
inputs[0].name = inputs[0].name.replace(/[a-z]\[\d+/, '$&1');
|
||||||
inputs[0].value = '';
|
inputs[0].value = '';
|
||||||
inputs[0].className = '';
|
inputs[0].className = '';
|
||||||
}
|
}
|
||||||
|
@@ -30,7 +30,7 @@ if ($_POST) {
|
|||||||
|
|
||||||
<form action="" method="post" id="form">
|
<form action="" method="post" id="form">
|
||||||
<table cellspacing="0">
|
<table cellspacing="0">
|
||||||
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "if (/^" . h(preg_quote($TABLE, "/")) . "_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '" . h(addcslashes($TABLE, "\r\n'\\")) . "_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"); ?>
|
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "if (/^" . h(preg_quote($TABLE, "/")) . "_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '" . h(js_escape($TABLE)) . "_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"); ?>
|
||||||
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_event, $row["Event"], "this.form['Timing'].onchange();"); ?>
|
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_event, $row["Event"], "this.form['Timing'].onchange();"); ?>
|
||||||
<tr><th><?php echo lang('Type'); ?><td><?php echo html_select("Type", $trigger_options["Type"], $row["Type"]); ?>
|
<tr><th><?php echo lang('Type'); ?><td><?php echo html_select("Type", $trigger_options["Type"], $row["Type"]); ?>
|
||||||
</table>
|
</table>
|
||||||
|
17
changes.txt
17
changes.txt
@@ -1,3 +1,20 @@
|
|||||||
|
Adminer 3.1.0-dev:
|
||||||
|
TSV export and import
|
||||||
|
Customizable export
|
||||||
|
Option to show only errors in SQL command
|
||||||
|
Link to bookmark SQL command
|
||||||
|
Recognize $$ strings in SQL command (PostgreSQL)
|
||||||
|
Highlight and edit SQL command in processlist
|
||||||
|
Always display all drivers
|
||||||
|
Timestamp at the end of export
|
||||||
|
Link to refresh database cache (bug #3102451)
|
||||||
|
Support for virtual foreign keys
|
||||||
|
Disable XSS "protection" of IE8
|
||||||
|
Immunity against zend.ze1_compatibility_mode (bug #3089645)
|
||||||
|
Fix last page with empty result set
|
||||||
|
Arabic translation and RTL support
|
||||||
|
Dual licensing: Apache or GPL
|
||||||
|
|
||||||
Adminer 3.0.1 (released 2010-10-18):
|
Adminer 3.0.1 (released 2010-10-18):
|
||||||
Send the form by Ctrl+Enter in all textareas
|
Send the form by Ctrl+Enter in all textareas
|
||||||
Disable creating SQLite databases with extension other than db, sdb, sqlite
|
Disable creating SQLite databases with extension other than db, sdb, sqlite
|
||||||
|
@@ -29,8 +29,11 @@ function adminer_object() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fieldName($field, $order = 0) {
|
function fieldName($field, $order = 0) {
|
||||||
|
if ($order && ereg('_(md5|sha1)$', $field["field"])) {
|
||||||
|
return ""; // hide hashes in select
|
||||||
|
}
|
||||||
// only columns with comments will be displayed and only the first five in select
|
// only columns with comments will be displayed and only the first five in select
|
||||||
return ($order <= 5 && !ereg('_(md5|sha1)$', $field["field"]) ? h($field["comment"]) : "");
|
return ($order <= 5 ? h($field["comment"]) : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ class Adminer {
|
|||||||
|
|
||||||
function headers() {
|
function headers() {
|
||||||
header("X-Frame-Options: deny");
|
header("X-Frame-Options: deny");
|
||||||
|
header("X-XSS-Protection: 0");
|
||||||
}
|
}
|
||||||
|
|
||||||
function loginForm() {
|
function loginForm() {
|
||||||
@@ -61,10 +62,11 @@ document.getElementById('username').focus();
|
|||||||
if (isset($set)) {
|
if (isset($set)) {
|
||||||
echo '<p class="tabs"><a href="' . h(ME . 'edit=' . urlencode($TABLE) . $set) . '">' . lang('New item') . "</a>\n";
|
echo '<p class="tabs"><a href="' . h(ME . 'edit=' . urlencode($TABLE) . $set) . '">' . lang('New item') . "</a>\n";
|
||||||
}
|
}
|
||||||
echo "<a href='" . h(remove_from_uri("page")) . "&page=last' title='" . lang('Page') . ": " . lang('last') . "' onclick='return !ajaxMain(this.href, undefined, event);'>>></a>\n";
|
echo "<a href='" . h(remove_from_uri("page")) . "&page=last' title='" . lang('Last page') . "' onclick='return !ajaxMain(this.href, undefined, event);'>>></a>\n";
|
||||||
if (is_ajax()) {
|
}
|
||||||
echo "<a href='" . h($_SERVER["REQUEST_URI"]) . "'>#</a>\n";
|
|
||||||
}
|
function foreignKeys($table) {
|
||||||
|
return foreign_keys($table);
|
||||||
}
|
}
|
||||||
|
|
||||||
function backwardKeys($table, $tableName) {
|
function backwardKeys($table, $tableName) {
|
||||||
@@ -181,7 +183,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
|||||||
|
|
||||||
function editVal($val, $field) {
|
function editVal($val, $field) {
|
||||||
if (ereg('date|timestamp', $field["type"]) && isset($val)) {
|
if (ereg('date|timestamp', $field["type"]) && isset($val)) {
|
||||||
return preg_replace('~^([0-9]{2}([0-9]+))-(0?([0-9]+))-(0?([0-9]+))~', lang('$1-$3-$5'), $val);
|
return preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~', lang('$1-$3-$5'), $val);
|
||||||
}
|
}
|
||||||
return (ereg("binary", $field["type"]) ? reset(unpack("H*", $val)) : $val);
|
return (ereg("binary", $field["type"]) ? reset(unpack("H*", $val)) : $val);
|
||||||
}
|
}
|
||||||
@@ -204,7 +206,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
|||||||
$key = $keys[$name];
|
$key = $keys[$name];
|
||||||
$i--;
|
$i--;
|
||||||
echo "<div>" . h($desc) . "<input type='hidden' name='where[$i][col]' value='" . h($name) . "'>:";
|
echo "<div>" . h($desc) . "<input type='hidden' name='where[$i][col]' value='" . h($name) . "'>:";
|
||||||
enum_input("checkbox", " name='where[$i][val][]'", $field, (array) $where[$key]["val"]); //! impossible to search for NULL
|
echo enum_input("checkbox", " name='where[$i][val][]'", $field, (array) $where[$key]["val"]); //! impossible to search for NULL
|
||||||
echo "</div>\n";
|
echo "</div>\n";
|
||||||
unset($columns[$name]);
|
unset($columns[$name]);
|
||||||
}
|
}
|
||||||
@@ -394,7 +396,10 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
|||||||
|
|
||||||
function editInput($table, $field, $attrs, $value) {
|
function editInput($table, $field, $attrs, $value) {
|
||||||
if ($field["type"] == "enum") {
|
if ($field["type"] == "enum") {
|
||||||
return ($field["null"] ? "<input type='radio'$attrs value=''" . ($value || isset($_GET["select"]) ? "" : " checked") . ">" : "");
|
return (isset($_GET["select"]) ? "<label><input type='radio'$attrs value='-1' checked><i>" . lang('original') . "</i></label> " : "")
|
||||||
|
. ($field["null"] ? "<label><input type='radio'$attrs value=''" . ($value || isset($_GET["select"]) ? "" : " checked") . "><i>" . lang('empty') . "</i></label>" : "")
|
||||||
|
. enum_input("radio", $attrs, $field, $value)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
$options = $this->_foreignKeyOptions($table, $field["field"]);
|
$options = $this->_foreignKeyOptions($table, $field["field"]);
|
||||||
if ($options) {
|
if ($options) {
|
||||||
@@ -414,7 +419,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
|||||||
return "$function()";
|
return "$function()";
|
||||||
}
|
}
|
||||||
$return = $value;
|
$return = $value;
|
||||||
if (ereg('date|timestamp', $field["type"]) && preg_match('(^' . str_replace('\\$1', '(?P<p1>[0-9]*)', preg_replace('~(\\\\\\$([2-6]))~', '(?P<p\\2>[0-9]{1,2})', preg_quote(lang('$1-$3-$5')))) . '(.*))', $value, $match)) {
|
if (ereg('date|timestamp', $field["type"]) && preg_match('(^' . str_replace('\\$1', '(?P<p1>\\d*)', preg_replace('~(\\\\\\$([2-6]))~', '(?P<p\\2>\\d{1,2})', preg_quote(lang('$1-$3-$5')))) . '(.*))', $value, $match)) {
|
||||||
$return = ($match["p1"] != "" ? $match["p1"] : ($match["p2"] != "" ? ($match["p2"] < 70 ? 20 : 19) . $match["p2"] : gmdate("Y"))) . "-$match[p3]$match[p4]-$match[p5]$match[p6]" . end($match);
|
$return = ($match["p1"] != "" ? $match["p1"] : ($match["p2"] != "" ? ($match["p2"] < 70 ? 20 : 19) . $match["p2"] : gmdate("Y"))) . "-$match[p3]$match[p4]-$match[p5]$match[p6]" . end($match);
|
||||||
}
|
}
|
||||||
$return = q($return);
|
$return = q($return);
|
||||||
@@ -429,12 +434,35 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpOutput($select, $value = "") {
|
function dumpOutput() {
|
||||||
return "";
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpFormat($select, $value = "") {
|
function dumpFormat() {
|
||||||
return html_select("format", array('csv' => 'CSV,', 'csv;' => 'CSV;'), $value, $select);
|
return array('csv' => 'CSV,', 'csv;' => 'CSV;', 'tsv' => 'TSV');
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpTable() {
|
||||||
|
echo "\xef\xbb\xbf"; // UTF-8 byte order mark
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpData($table, $style, $query) {
|
||||||
|
global $connection;
|
||||||
|
$result = $connection->query($query, 1); // 1 - MYSQLI_USE_RESULT
|
||||||
|
if ($result) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
dump_csv($row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpHeaders($identifier) {
|
||||||
|
$filename = ($identifier != "" ? friendly_url($identifier) : "dump");
|
||||||
|
$ext = "csv";
|
||||||
|
header("Content-Type: text/csv; charset=utf-8");
|
||||||
|
header("Content-Disposition: attachment; filename=$filename.$ext");
|
||||||
|
session_write_close();
|
||||||
|
return $ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
function navigation($missing) {
|
function navigation($missing) {
|
||||||
|
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
function dump_table($table) {
|
|
||||||
echo "\xef\xbb\xbf"; // UTF-8 byte order mark
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_data($table, $style, $select = "") {
|
|
||||||
global $connection;
|
|
||||||
$result = $connection->query(($select ? $select : "SELECT * FROM " . idf_escape($table)), 1); // 1 - MYSQLI_USE_RESULT
|
|
||||||
if ($result) {
|
|
||||||
while ($row = $result->fetch_assoc()) {
|
|
||||||
dump_csv($row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dump_headers($identifier) {
|
|
||||||
$filename = ($identifier != "" ? friendly_url($identifier) : "dump");
|
|
||||||
$ext = "csv";
|
|
||||||
header("Content-Type: text/csv; charset=utf-8");
|
|
||||||
header("Content-Disposition: attachment; filename=$filename.$ext");
|
|
||||||
session_write_close();
|
|
||||||
return $ext;
|
|
||||||
}
|
|
@@ -1,9 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
/** Adminer Editor - Compact database editor
|
/** Adminer Editor - Compact database editor
|
||||||
* @link http://www.adminer.org/
|
* @link http://www.adminer.org/
|
||||||
* @author Jakub Vrana, http://php.vrana.cz/
|
* @author Jakub Vrana, http://www.vrana.cz/
|
||||||
* @copyright 2009 Jakub Vrana
|
* @copyright 2009 Jakub Vrana
|
||||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
* @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)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
include "../adminer/include/bootstrap.inc.php";
|
include "../adminer/include/bootstrap.inc.php";
|
||||||
|
15
lang.php
15
lang.php
@@ -40,12 +40,15 @@ foreach (glob(dirname(__FILE__) . "/adminer/lang/" . ($_SESSION["lang"] ? $_SESS
|
|||||||
$s .= "$match[1]// $match[2],\n";
|
$s .= "$match[1]// $match[2],\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach($messages as $idf => $val) {
|
if ($messages) {
|
||||||
// add new messages
|
$s .= "\n";
|
||||||
if ($val == "," && strpos($idf, "%d")) {
|
foreach ($messages as $idf => $val) {
|
||||||
$s .= "\t$idf => array(),\n";
|
// add new messages
|
||||||
} elseif (basename($filename) != "en.inc.php") {
|
if ($val == "," && strpos($idf, "%d")) {
|
||||||
$s .= "\t$idf => null,\n";
|
$s .= "\t$idf => array(),\n";
|
||||||
|
} elseif (basename($filename) != "en.inc.php") {
|
||||||
|
$s .= "\t$idf => null,\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$s = "<?php\n\$translations = array(\n$s);\n";
|
$s = "<?php\n\$translations = array(\n$s);\n";
|
||||||
|
@@ -3,8 +3,8 @@ Adminer Editor - Data manipulation for end-users
|
|||||||
|
|
||||||
http://www.adminer.org/
|
http://www.adminer.org/
|
||||||
Supports: MySQL, PostgreSQL, SQLite, MS SQL, Oracle
|
Supports: MySQL, PostgreSQL, SQLite, MS SQL, Oracle
|
||||||
Requirements: PHP 4.3.2+ or PHP 5+
|
Requirements: PHP 4.3.3+ or PHP 5+
|
||||||
Apache License, Version 2.0
|
Apache License 2.0 or GPL 2
|
||||||
|
|
||||||
adminer/index.php - Run development version of Adminer
|
adminer/index.php - Run development version of Adminer
|
||||||
editor/index.php - Run development version of Adminer Editor
|
editor/index.php - Run development version of Adminer Editor
|
||||||
|
9
todo.txt
9
todo.txt
@@ -1,7 +1,7 @@
|
|||||||
Transactions in export
|
Transactions in export
|
||||||
Create view and routine options
|
Create view and routine options
|
||||||
Variables editation, especially timezone (or set by PHP date.timezone)
|
Variables editation, especially timezone (or set by PHP date.timezone)
|
||||||
Highlight SQL textarea, then display query inside textarea in select - may use external CodeMirror
|
Highlight SQL textarea - may use external CodeMirror
|
||||||
Blob download and image display in edit form (important for Editor with hidden fields in select)
|
Blob download and image display in edit form (important for Editor with hidden fields in select)
|
||||||
Add title to Logout, edit (in select) and select (in menu) in style "hever"
|
Add title to Logout, edit (in select) and select (in menu) in style "hever"
|
||||||
Shift-click in checkboxes to select range
|
Shift-click in checkboxes to select range
|
||||||
@@ -10,10 +10,9 @@ Only first part of big BZ2 export is readable, files are missing in TAR
|
|||||||
Auto-refresh processlist (thanks to Jan Garaj)
|
Auto-refresh processlist (thanks to Jan Garaj)
|
||||||
Save schema layout to #hash in URL
|
Save schema layout to #hash in URL
|
||||||
Double click in select - Esc to abort editation
|
Double click in select - Esc to abort editation
|
||||||
XML export
|
|
||||||
? Filter by value in row under <thead> in select
|
? Filter by value in row under <thead> in select
|
||||||
? Column and table names auto-completition in SQL textarea
|
? Column and table names auto-completition in SQL textarea
|
||||||
? Aliasing of built-in functions can save 7 KB, function minification can save 7 KB, substitution of repetitive $a["a"] can save 4 KB, substitution of $_GET and friends can save 2 KB, aliasing of $connection->query, $connection->result and $connection->quote can save ~ 3 KB, JS packer can save 1 KB, not enclosing HTML attribute values can save 1.2 KB, replacing \\n by \n can save .3 KB
|
? Aliasing of built-in functions can save 7 KB, function minification can save 7 KB, substitution of repetitive $a["a"] can save 4 KB, substitution of $_GET and friends can save 2 KB, aliasing of $connection->query can save 24 B, JS Closure compiler can save 2 KB, not enclosing HTML attribute values can save 1.2 KB, replacing \\n by \n can save .3 KB
|
||||||
? Branch binary_compile: LZW compression of translations can save 30 KB, LZW compression of all texts can save 11 KB, remove of base64_decode() + using chars 127-255 in minification can save 1 KB
|
? Branch binary_compile: LZW compression of translations can save 30 KB, LZW compression of all texts can save 11 KB, remove of base64_decode() + using chars 127-255 in minification can save 1 KB
|
||||||
|
|
||||||
Editor:
|
Editor:
|
||||||
@@ -26,6 +25,7 @@ JS calendar for date fields
|
|||||||
|
|
||||||
MySQL:
|
MySQL:
|
||||||
Saving of MySQL 5 BIT data type - don't use quote()
|
Saving of MySQL 5 BIT data type - don't use quote()
|
||||||
|
Data longer than max_allowed_packet can be sent by mysqli_stmt_send_long_data()
|
||||||
? Geometry support
|
? Geometry support
|
||||||
|
|
||||||
SQLite:
|
SQLite:
|
||||||
@@ -39,13 +39,12 @@ Users - SELECT * FROM pg_user
|
|||||||
ORDER BY COUNT(*)
|
ORDER BY COUNT(*)
|
||||||
Export - http://www.postgresql.org/docs/8.4/static/functions-info.html
|
Export - http://www.postgresql.org/docs/8.4/static/functions-info.html
|
||||||
Column rights - http://www.postgresql.org/docs/8.4/static/functions-info.html
|
Column rights - http://www.postgresql.org/docs/8.4/static/functions-info.html
|
||||||
Dollar terminated string in SQL command
|
|
||||||
bool in Editor
|
bool in Editor
|
||||||
|
|
||||||
MS SQL:
|
MS SQL:
|
||||||
Non UTF-8 character sets
|
Non UTF-8 character sets
|
||||||
Detection of table collation
|
Detection of table collation
|
||||||
PDO driver with seek
|
PDO_MSSQL and PDO_SQLSRV driver with seek
|
||||||
|
|
||||||
Oracle:
|
Oracle:
|
||||||
clob comparable with string
|
clob comparable with string
|
||||||
|
Reference in New Issue
Block a user