mirror of
https://github.com/vrana/adminer.git
synced 2025-08-30 01:30:12 +02:00
Compare commits
35 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
da9d5f3e49 | ||
|
f7d4587880 | ||
|
d49903b21d | ||
|
09327efdaf | ||
|
ea258302b4 | ||
|
8d565e63ab | ||
|
16b5be1e8d | ||
|
ad9edea30b | ||
|
6f5c1981a0 | ||
|
031a82a4ad | ||
|
0782a7b2c1 | ||
|
9db4259409 | ||
|
1cd506ee1e | ||
|
b835ce4ef4 | ||
|
6ab272b72c | ||
|
44ae8c8766 | ||
|
53d7f0306d | ||
|
210802d1c4 | ||
|
abe5e7b0a7 | ||
|
51e609c461 | ||
|
644c355d94 | ||
|
420faa3dc4 | ||
|
53804a2c20 | ||
|
0198c36c90 | ||
|
1a8d7f1733 | ||
|
1cf374bf48 | ||
|
207673f06c | ||
|
faa6e7edd7 | ||
|
5875f6db0c | ||
|
14ca6f0931 | ||
|
ec4b1cf915 | ||
|
7b4aecb86e | ||
|
01e967d26c | ||
|
52b9820ebc | ||
|
dc8ac1da25 |
@@ -28,7 +28,7 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c
|
||||
if (!$_POST["collation"]) {
|
||||
redirect(substr(ME, 0, -1));
|
||||
}
|
||||
query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . " COLLATE " . q($_POST["collation"]), substr(ME, 0, -1), lang('Database has been altered.'));
|
||||
query_redirect("ALTER DATABASE " . idf_escape($_POST["name"]) . (eregi('^[a-z0-9_]+$', $_POST["collation"]) ? " COLLATE $_POST[collation]" : ""), substr(ME, 0, -1), lang('Database has been altered.'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ if ($_POST) {
|
||||
<p>
|
||||
<?php
|
||||
echo ($_POST["add_x"] || strpos($name, "\n")
|
||||
? '<textarea name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
|
||||
? '<textarea name="name" rows="10" cols="40" onkeydown="return textareaKeydown(this, event);">' . h($name) . '</textarea><br>'
|
||||
: '<input name="name" value="' . h($name) . '" maxlength="64">'
|
||||
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate) : "");
|
||||
?>
|
||||
|
@@ -154,7 +154,9 @@ if ($_GET["ns"] !== "") {
|
||||
echo '<p><a href="' . h(ME) . 'event=">' . lang('Create event') . "</a>\n";
|
||||
}
|
||||
|
||||
page_footer();
|
||||
echo "<script type='text/javascript' src='" . h(ME) . "script=db'></script>\n";
|
||||
exit; // page_footer() already called
|
||||
if ($tables_list) {
|
||||
page_footer();
|
||||
echo "<script type='text/javascript' src='" . h(ME . "script=db&token=$token") . "'></script>\n";
|
||||
exit; // page_footer() already called
|
||||
}
|
||||
}
|
||||
|
@@ -285,7 +285,7 @@ if (isset($_GET["mssql"])) {
|
||||
$return = array();
|
||||
foreach ($databases as $db) {
|
||||
$connection->select_db($db);
|
||||
$return[$db] = $connection->result("SELECT COUNT(*) FROM information_schema.TABLES");
|
||||
$return[$db] = $connection->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
@@ -343,11 +343,11 @@ WHERE o.schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND o.type IN ('S', 'U',
|
||||
}
|
||||
$return = array();
|
||||
// sp_statistics doesn't return information about primary key
|
||||
foreach (get_rows("SELECT indexes.name, key_ordinal, is_unique, is_primary_key, columns.name AS column_name
|
||||
FROM sys.indexes
|
||||
INNER JOIN sys.index_columns ON indexes.object_id = index_columns.object_id AND indexes.index_id = index_columns.index_id
|
||||
INNER JOIN sys.columns ON index_columns.object_id = columns.object_id AND index_columns.column_id = columns.column_id
|
||||
WHERE OBJECT_NAME(indexes.object_id) = " . q($table)
|
||||
foreach (get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name
|
||||
FROM sys.indexes i
|
||||
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
|
||||
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
|
||||
WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
||||
, $connection2) as $row) {
|
||||
$return[$row["name"]]["type"] = ($row["is_primary_key"] ? "PRIMARY" : ($row["is_unique"] ? "UNIQUE" : "INDEX"));
|
||||
$return[$row["name"]]["lengths"] = array();
|
||||
@@ -358,7 +358,7 @@ WHERE OBJECT_NAME(indexes.object_id) = " . q($table)
|
||||
|
||||
function view($name) {
|
||||
global $connection;
|
||||
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $connection->result("SELECT view_definition FROM information_schema.views WHERE table_schema = SCHEMA_NAME() AND table_name = " . q($name))));
|
||||
return array("select" => preg_replace('~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU', '', $connection->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = " . q($name))));
|
||||
}
|
||||
|
||||
function collations() {
|
||||
@@ -383,7 +383,7 @@ WHERE OBJECT_NAME(indexes.object_id) = " . q($table)
|
||||
}
|
||||
|
||||
function create_database($db, $collation) {
|
||||
return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " COLLATE " . idf_escape($collation) : ""));
|
||||
return queries("CREATE DATABASE " . idf_escape($db) . (eregi('^[a-z0-9_]+$', $collation) ? " COLLATE $collation" : ""));
|
||||
}
|
||||
|
||||
function drop_databases($databases) {
|
||||
@@ -391,8 +391,8 @@ WHERE OBJECT_NAME(indexes.object_id) = " . q($table)
|
||||
}
|
||||
|
||||
function rename_database($name, $collation) {
|
||||
if ($collation) {
|
||||
queries("ALTER DATABASE " . idf_escape(DB) . " COLLATE " . idf_escape($collation));
|
||||
if (eregi('^[a-z0-9_]+$', $collation)) {
|
||||
queries("ALTER DATABASE " . idf_escape(DB) . " COLLATE $collation");
|
||||
}
|
||||
queries("ALTER DATABASE " . idf_escape(DB) . " MODIFY NAME = " . idf_escape($name));
|
||||
return true; //! false negative "The database name 'test2' has been set."
|
||||
|
@@ -870,7 +870,7 @@ if (!defined("DRIVER")) {
|
||||
}
|
||||
|
||||
/** Check whether a feature is supported
|
||||
* @param string
|
||||
* @param string "comment", "drop_col", "dump", "event", "partitioning", "routine", "scheme", "sequence", "status", "trigger", "type", "variables", "view"
|
||||
* @return bool
|
||||
*/
|
||||
function support($feature) {
|
||||
|
@@ -22,11 +22,11 @@ if (isset($_GET["pgsql"])) {
|
||||
function connect($server, $username, $password) {
|
||||
set_error_handler(array($this, '_error'));
|
||||
$this->_string = "host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' user='" . addcslashes($username, "'\\") . "' password='" . addcslashes($password, "'\\") . "'";
|
||||
$this->_link = @pg_connect($this->_string . (DB != "" ? " dbname='" . addcslashes(DB, "'\\") . "'" : ""), PGSQL_CONNECT_FORCE_NEW);
|
||||
$this->_link = @pg_connect($this->_string . (DB != "" ? " dbname='" . addcslashes(DB, "'\\") . "'" : " dbname='template1'"), PGSQL_CONNECT_FORCE_NEW);
|
||||
if (!$this->_link && DB != "") {
|
||||
// try to connect directly with database for performance
|
||||
$this->_database = false;
|
||||
$this->_link = @pg_connect($this->_string, PGSQL_CONNECT_FORCE_NEW);
|
||||
$this->_link = @pg_connect("$this->_string dbname='template1'", PGSQL_CONNECT_FORCE_NEW);
|
||||
}
|
||||
restore_error_handler();
|
||||
if ($this->_link) {
|
||||
@@ -53,7 +53,7 @@ if (isset($_GET["pgsql"])) {
|
||||
}
|
||||
|
||||
function close() {
|
||||
$this->_link = @pg_connect($this->_string);
|
||||
$this->_link = @pg_connect("$this->_string dbname='template1'");
|
||||
}
|
||||
|
||||
function query($query, $unbuffered = false) {
|
||||
|
@@ -344,13 +344,27 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
function exact_value($val) {
|
||||
return q($val);
|
||||
}
|
||||
|
||||
|
||||
function check_sqlite_name($name) {
|
||||
// avoid creating PHP files on unsecured servers
|
||||
global $connection;
|
||||
$extensions = "db|sdb|sqlite";
|
||||
if (!preg_match("~^[^\\0]*\\.($extensions)\$~", $name)) {
|
||||
$connection->error = lang('Please use one of the extensions %s.', str_replace("|", ", ", $extensions));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function create_database($db, $collation) {
|
||||
global $connection;
|
||||
if (file_exists($db)) {
|
||||
$connection->error = lang('File exists.');
|
||||
return false;
|
||||
}
|
||||
if (!check_sqlite_name($db)) {
|
||||
return false;
|
||||
}
|
||||
$link = new Min_SQLite($db); //! exception handler
|
||||
$link->query('PRAGMA encoding = "UTF-8"');
|
||||
$link->query('CREATE TABLE adminer (i)'); // otherwise creates empty file
|
||||
@@ -372,6 +386,9 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function rename_database($name, $collation) {
|
||||
global $connection;
|
||||
if (!check_sqlite_name($name)) {
|
||||
return false;
|
||||
}
|
||||
$connection->Min_SQLite(":memory:");
|
||||
$connection->error = lang('File exists.');
|
||||
return @rename(DB, $name);
|
||||
|
@@ -214,7 +214,7 @@ if (DB != "") {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";
|
||||
echo "<tr><td><textarea name='databases' rows='10' cols='20' onkeydown='return textareaKeydown(this, event);'></textarea>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@@ -32,6 +32,13 @@ class Adminer {
|
||||
return DB;
|
||||
}
|
||||
|
||||
/** Headers to send before HTML output
|
||||
* @return null
|
||||
*/
|
||||
function headers() {
|
||||
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox NoScript plugin
|
||||
}
|
||||
|
||||
/** Print login form
|
||||
* @return null
|
||||
*/
|
||||
@@ -484,7 +491,7 @@ document.getElementById('username').focus();
|
||||
}
|
||||
|
||||
/** Prints navigation after Adminer title
|
||||
* @param string can be "auth" if there is no database connection or "db" if there is no database selected
|
||||
* @param string can be "auth" if there is no database connection, "db" if there is no database selected, "ns" with invalid schema
|
||||
* @return null
|
||||
*/
|
||||
function navigation($missing) {
|
||||
@@ -516,10 +523,14 @@ document.getElementById('username').focus();
|
||||
?>
|
||||
<form action="" method="post">
|
||||
<p class="logout">
|
||||
<a href="<?php echo h(ME); ?>sql="><?php echo bold(lang('SQL command'), isset($_GET["sql"])); ?></a>
|
||||
<?php if (support("dump")) { ?>
|
||||
<a href="<?php echo h(ME); ?>dump=<?php echo urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]); ?>"><?php echo bold(lang('Dump'), isset($_GET["dump"])); ?></a>
|
||||
<?php } ?>
|
||||
<?php
|
||||
if (DB == "" || !$missing) {
|
||||
echo "<a href='" . h(ME) . "sql='>" . bold(lang('SQL command'), isset($_GET["sql"])) . "</a>\n";
|
||||
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";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||
<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>">
|
||||
</p>
|
||||
@@ -537,7 +548,7 @@ document.getElementById('username').focus();
|
||||
set_schema($_GET["ns"]);
|
||||
}
|
||||
}
|
||||
if ($_GET["ns"] !== "") {
|
||||
if ($_GET["ns"] !== "" && !$missing) {
|
||||
$tables = tables_list();
|
||||
if (!$tables) {
|
||||
echo "<p class='message'>" . lang('No tables.') . "\n";
|
||||
|
@@ -6,7 +6,6 @@ function connect_error() {
|
||||
page_header(lang('Database') . ": " . h(DB), lang('Invalid database.'), true);
|
||||
} else {
|
||||
if ($_POST["db"] && !$error) {
|
||||
set_session("dbs", null);
|
||||
queries_redirect(substr(ME, 0, -1), lang('Databases have been dropped.'), drop_databases($_POST["db"]));
|
||||
}
|
||||
|
||||
@@ -26,6 +25,7 @@ function connect_error() {
|
||||
echo "<p>" . lang('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n";
|
||||
$databases = get_databases();
|
||||
if ($databases) {
|
||||
$scheme = support("scheme");
|
||||
$collations = collations();
|
||||
echo "<form action='' method='post'>\n";
|
||||
echo "<table cellspacing='0' onclick='tableClick(event);'>\n";
|
||||
@@ -34,7 +34,7 @@ function connect_error() {
|
||||
$root = h(ME) . "db=" . urlencode($db);
|
||||
echo "<tr" . odd() . "><td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"]));
|
||||
echo "<th><a href='$root'>" . h($db) . "</a>";
|
||||
echo "<td><a href='$root&database='>" . nbsp(db_collation($db, $collations)) . "</a>";
|
||||
echo "<td><a href='$root" . ($scheme ? "&ns=" : "") . "&database='>" . nbsp(db_collation($db, $collations)) . "</a>";
|
||||
echo "<td align='right'><a href='$root&schema=' id='tables-" . h($db) . "'>?</a>";
|
||||
echo "\n";
|
||||
}
|
||||
@@ -44,7 +44,9 @@ function connect_error() {
|
||||
}
|
||||
}
|
||||
page_footer("db");
|
||||
echo "<script type='text/javascript' src='" . h(ME) . "script=connect'></script>\n";
|
||||
if ($databases) {
|
||||
echo "<script type='text/javascript' src='" . h(ME . "script=connect&token=$token") . "'></script>\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["status"])) {
|
||||
@@ -58,6 +60,13 @@ if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET
|
||||
exit;
|
||||
}
|
||||
|
||||
if (support("scheme") && DB != "" && $_GET["ns"] !== "" && (!isset($_GET["ns"]) || !set_schema($_GET["ns"]))) {
|
||||
redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . get_schema());
|
||||
if (support("scheme") && DB != "" && $_GET["ns"] !== "") {
|
||||
if (!isset($_GET["ns"])) {
|
||||
redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . get_schema());
|
||||
}
|
||||
if (!set_schema($_GET["ns"])) {
|
||||
page_header(lang('Schema') . ": " . h($_GET["ns"]), lang('Invalid schema.'), true);
|
||||
page_footer("ns");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@
|
||||
function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
global $LANG, $HTTPS, $adminer, $connection, $drivers;
|
||||
header("Content-Type: text/html; charset=utf-8");
|
||||
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox NoScript plugin
|
||||
$adminer->headers();
|
||||
$title_all = $title . ($title2 != "" ? ": " . h($title2) : "");
|
||||
$protocol = ($HTTPS ? "https" : "http");
|
||||
?>
|
||||
@@ -73,7 +73,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
}
|
||||
|
||||
/** Print HTML footer
|
||||
* @param string auth|db
|
||||
* @param string "auth", "db", "ns"
|
||||
* @return null
|
||||
*/
|
||||
function page_footer($missing = "") {
|
||||
|
@@ -104,7 +104,7 @@ function referencable_primary($self) {
|
||||
* @return null
|
||||
*/
|
||||
function textarea($name, $value, $rows = 10, $cols = 80) {
|
||||
echo "<textarea name='$name' rows='$rows' cols='$cols' style='width: 98%;' spellcheck='false' onkeydown='return textareaKeydown(this, event);'>" . h($value) . "</textarea>"; // spellcheck - not valid before HTML5
|
||||
echo "<textarea name='$name' rows='$rows' cols='$cols' style='width: 98%;' spellcheck='false' onkeydown='return textareaKeydown(this, event, true);'>" . h($value) . "</textarea>"; // spellcheck - not valid before HTML5
|
||||
}
|
||||
|
||||
/** Print table columns for type edit
|
||||
|
@@ -237,10 +237,11 @@ function unique_array($row, $indexes) {
|
||||
* @return string
|
||||
*/
|
||||
function where($where) {
|
||||
global $jush;
|
||||
$return = array();
|
||||
foreach ((array) $where["where"] as $key => $val) {
|
||||
$return[] = idf_escape(bracket_escape($key, 1)) // 1 - back
|
||||
. (ereg('\\.', $val) ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val)) // LIKE because of floats, but slow with ints
|
||||
. (ereg('\\.', $val) || $jush == "mssql" ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val)) // LIKE because of floats, but slow with ints, in MS SQL because of text
|
||||
; //! enum and set
|
||||
}
|
||||
foreach ((array) $where["null"] as $key) {
|
||||
@@ -412,6 +413,7 @@ function apply_queries($query, $tables, $escape = 'table') {
|
||||
* @param string
|
||||
* @param string
|
||||
* @param bool
|
||||
* @return bool
|
||||
*/
|
||||
function queries_redirect($location, $message, $redirect) {
|
||||
return query_redirect(queries(), $location, $message, $redirect, false, !$redirect);
|
||||
@@ -597,7 +599,7 @@ function input($field, $value, $function) {
|
||||
} elseif (ereg('blob|bytea|raw|file', $field["type"]) && ini_bool("file_uploads")) {
|
||||
echo "<input type='file' name='fields-$name'$onchange>";
|
||||
} elseif (ereg('text|lob', $field["type"])) {
|
||||
echo "<textarea " . ($jush != "sqlite" || ereg("\n", $value) ? "cols='50' rows='12'" : "cols='30' rows='1' style='height: 1.2em;'") . "$attrs>" . 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 {
|
||||
// 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));
|
||||
@@ -729,7 +731,7 @@ function password_file() {
|
||||
* @param string
|
||||
* @return bool
|
||||
*/
|
||||
function is_email($email) {
|
||||
function is_mail($email) {
|
||||
$atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // characters of local-name
|
||||
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component
|
||||
$pattern = "$atom+(\\.$atom+)*@($domain?\\.)+$domain";
|
||||
|
@@ -12,6 +12,7 @@ $langs = array(
|
||||
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
||||
'et' => 'Eesti', // Priit Kallas
|
||||
'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu
|
||||
'ca' => 'Català', // Joan Llosas
|
||||
'ru' => 'Русский язык', // Maksim Izmaylov
|
||||
'zh' => '简体中文', // Mr. Lodar
|
||||
'zh-tw' => '繁體中文', // http://tzangms.com
|
||||
|
@@ -1,2 +1,2 @@
|
||||
<?php
|
||||
$VERSION = "3.0.0";
|
||||
$VERSION = "3.0.1";
|
||||
|
262
adminer/lang/ca.inc.php
Normal file
262
adminer/lang/ca.inc.php
Normal file
@@ -0,0 +1,262 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'Inicia la sessió',
|
||||
'Logout successful.' => 'Desconnexió correcta.',
|
||||
'Invalid credentials.' => 'Credencials invàlids.',
|
||||
'Server' => 'Servidor',
|
||||
'Username' => 'Nom d\'usuari',
|
||||
'Password' => 'Contrasenya',
|
||||
'Select database' => 'Selecciona base de dades',
|
||||
'Invalid database.' => 'Base de dades invàlida.',
|
||||
'Create new database' => 'Crea una nova base de dades',
|
||||
'Table has been dropped.' => 'S\'ha creat la taula.',
|
||||
'Table has been altered.' => 'S\'ha creat la taula.',
|
||||
'Table has been created.' => 'S\'ha creat la taula.',
|
||||
'Alter table' => 'Modifica la taula',
|
||||
'Create table' => 'Crea una taula',
|
||||
'Table name' => 'Nom de la taula',
|
||||
'engine' => 'motor',
|
||||
'collation' => 'compaginació',
|
||||
'Column name' => 'Nom de la columna',
|
||||
'Type' => 'Tipus',
|
||||
'Length' => 'Llargada',
|
||||
'Auto Increment' => 'Increment automàtic',
|
||||
'Options' => 'Opcions',
|
||||
'Save' => 'Desa',
|
||||
'Drop' => 'Suprimeix',
|
||||
'Database has been dropped.' => 'S\'ha suprimit la base de dades.',
|
||||
'Database has been created.' => 'S\'ha creat la base de dades.',
|
||||
'Database has been renamed.' => 'S\'ha canviat el nom de la base de dades.',
|
||||
'Database has been altered.' => 'S\'ha modificat la base de dades.',
|
||||
'Alter database' => 'Modifica la base de dades',
|
||||
'Create database' => 'Crea una base de dades',
|
||||
'SQL command' => 'Ordre SQL',
|
||||
'Dump' => 'Exporta',
|
||||
'Logout' => 'Desconnecta',
|
||||
'database' => 'base de dades',
|
||||
'Use' => 'Utilitza',
|
||||
'No tables.' => 'Cap taula.',
|
||||
'select' => 'escull',
|
||||
'Create new table' => 'Crea una nova taula',
|
||||
'Item has been deleted.' => 'S\'ha suprmit l\'element.',
|
||||
'Item has been updated.' => 'S\'ha actualitzat l\'element.',
|
||||
'Item%s has been inserted.' => 'S\'ha insertat l\'element%s.',
|
||||
'Edit' => 'Edita',
|
||||
'Insert' => 'Insereix',
|
||||
'Save and insert next' => 'Desa i insereix el següent',
|
||||
'Delete' => 'Suprimeix',
|
||||
'Database' => 'Base de dades',
|
||||
'Routines' => 'Rutines',
|
||||
'Indexes have been altered.' => 'S\'han modificat els índexs.',
|
||||
'Indexes' => 'Índexs',
|
||||
'Alter indexes' => 'Modifica els índexs',
|
||||
'Add next' => 'Afegeix el següent',
|
||||
'Language' => 'Idioma',
|
||||
'Select' => 'Escull',
|
||||
'New item' => 'Nou element',
|
||||
'Search' => 'Cerca',
|
||||
'Sort' => 'Ordena',
|
||||
'descending' => 'descendent',
|
||||
'Limit' => 'Límit',
|
||||
'No rows.' => 'No hi ha cap fila.',
|
||||
'Action' => 'Acció',
|
||||
'edit' => 'edita',
|
||||
'Page' => 'Plana',
|
||||
'Query executed OK, %d row(s) affected.' => array('Consulta executada correctament, %d fila modificada.', 'Consulta executada correctament, %d files modificades.'),
|
||||
'Error in query' => 'Error en la consulta',
|
||||
'Execute' => 'Executa',
|
||||
'Table' => 'Taula',
|
||||
'Foreign keys' => 'Claus foranes',
|
||||
'Triggers' => 'Activadors',
|
||||
'View' => 'Vista',
|
||||
'Unable to select the table' => 'Impossible seleccionar la taula',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invàlid. Torna a enviar el formulari.',
|
||||
'Comment' => 'Comentari',
|
||||
'Default values' => 'Valors per defecte',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Cap comanda per executar.',
|
||||
'Unable to upload a file.' => 'Impossible adjuntar el fitxer.',
|
||||
'File upload' => 'Adjunta un fitxer',
|
||||
'File uploads are disabled.' => 'L\'ddjunció de fitxers està desactivada.',
|
||||
'Routine has been called, %d row(s) affected.' => array('S\'ha cridat la rutina, %d fila modificada.', 'S\'ha cridat la rutina, %d files modificades.'),
|
||||
'Call' => 'Crida',
|
||||
'No extension' => 'Cap extensió',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'No hi ha cap de les extensions PHP soporatades (%s) disponible.',
|
||||
'Session support must be enabled.' => 'Cal que estigui permès l\'us de sessions.',
|
||||
'Session expired, please login again.' => 'La sessió ha expirat, torna a iniciar-ne una.',
|
||||
'Text length' => 'Longitud del text',
|
||||
'Foreign key has been dropped.' => 'S\'ha suprimit la clau forana.',
|
||||
'Foreign key has been altered.' => 'S\'ha modificat la clau forana.',
|
||||
'Foreign key has been created.' => 'S\'ha creat la clau forana.',
|
||||
'Foreign key' => 'Clau forana',
|
||||
'Target table' => 'Taula de destí',
|
||||
'Change' => 'Canvi',
|
||||
'Source' => 'Font',
|
||||
'Target' => 'Destí',
|
||||
'Add column' => 'Afegeix una columna',
|
||||
'Alter' => 'Modifica',
|
||||
'Add foreign key' => 'Afegeix una clau forana',
|
||||
'ON DELETE' => 'ON DELETE',
|
||||
'ON UPDATE' => 'ON UPDATE',
|
||||
'Index Type' => 'Tipus d\'índex',
|
||||
'Column (length)' => 'Columna (longitud)',
|
||||
'View has been dropped.' => 'S\'ha suprimit la vista.',
|
||||
'View has been altered.' => 'S\'ha modificat la vista.',
|
||||
'View has been created.' => 'S\'ha creat la vista.',
|
||||
'Alter view' => 'Modifica la vista',
|
||||
'Create view' => 'Crea una vista',
|
||||
'Name' => 'Nom',
|
||||
'Process list' => 'Llista de processos',
|
||||
'%d process(es) have been killed.' => array('S\'ha aturat %d procés.', 'S\'han aturat %d processos.'),
|
||||
'Kill' => 'Atura',
|
||||
'Parameter name' => 'Nom del paràmetre',
|
||||
'Database schema' => 'Esquema de la base de dades',
|
||||
'Create procedure' => 'Crea un procediment',
|
||||
'Create function' => 'Crea una funció',
|
||||
'Routine has been dropped.' => 'S\'ha suprimit la rutina.',
|
||||
'Routine has been altered.' => 'S\'ha modificat la rutina.',
|
||||
'Routine has been created.' => 'S\'ha creat la rutina.',
|
||||
'Alter function' => 'Modifica la funció',
|
||||
'Alter procedure' => 'Modifica el procediment',
|
||||
'Return type' => 'Tipus retornat',
|
||||
'Add trigger' => 'Afegeix un activador',
|
||||
'Trigger has been dropped.' => 'S\'ha suprimit l\'activador.',
|
||||
'Trigger has been altered.' => 'S\'ha modificat l\'activador.',
|
||||
'Trigger has been created.' => 'S\'ha creat l\'activador.',
|
||||
'Alter trigger' => 'Modifica l\'activador',
|
||||
'Create trigger' => 'Crea un activador',
|
||||
'Time' => 'Temps',
|
||||
'Event' => 'Event',
|
||||
'%s version: %s through PHP extension %s' => 'Versió %s: %s amb l\'extensió de PHP %s',
|
||||
'%d row(s)' => array('%d fila', '%d files'),
|
||||
'Remove' => 'Esborra',
|
||||
'Are you sure?' => 'Estàs segur?',
|
||||
'Privileges' => 'Privilegis',
|
||||
'Create user' => 'Crea un usuari',
|
||||
'User has been dropped.' => 'S\'ha suprimit l\'usuari.',
|
||||
'User has been altered.' => 'S\'ha modificat l\'usuari.',
|
||||
'User has been created.' => 'S\'ha creat l\'usuari.',
|
||||
'Hashed' => 'Hashed',
|
||||
'Column' => 'Columna',
|
||||
'Routine' => 'Rutina',
|
||||
'Grant' => 'Grant',
|
||||
'Revoke' => 'Revoke',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Les dades POST són massa grans. Redueix les dades o incrementa la directiva de configuració %s.',
|
||||
'Logged as: %s' => 'Connectat com: %s',
|
||||
'Move up' => 'Mou a dalt',
|
||||
'Move down' => 'Mou a baix',
|
||||
'Functions' => 'Funcions',
|
||||
'Aggregation' => 'Agregació',
|
||||
'Export' => 'Exporta',
|
||||
'Output' => 'Sortida',
|
||||
'open' => 'obre',
|
||||
'save' => 'desa',
|
||||
'Format' => 'Format',
|
||||
'Tables' => 'Taules',
|
||||
'Data' => 'Data',
|
||||
'Event has been dropped.' => 'S\'ha suprimit l\'event.',
|
||||
'Event has been altered.' => 'S\'ha modificat l\'event.',
|
||||
'Event has been created.' => 'S\'ha creat l\'event.',
|
||||
'Alter event' => 'Modifica l\'event',
|
||||
'Create event' => 'Crea un event',
|
||||
'At given time' => 'A un moment donat',
|
||||
'Every' => 'Cada',
|
||||
'Events' => 'Events',
|
||||
'Schedule' => 'Horari',
|
||||
'Start' => 'Comença',
|
||||
'End' => 'Acaba',
|
||||
'Status' => 'Estat',
|
||||
'On completion preserve' => 'Conservar en completar',
|
||||
'Tables and views' => 'Taules i vistes',
|
||||
'Data Length' => 'Longitud de les dades',
|
||||
'Index Length' => 'L\'ongitud de l\'índex',
|
||||
'Data Free' => 'Espai lliure',
|
||||
'Collation' => 'Compaginació',
|
||||
'Analyze' => 'Analitza',
|
||||
'Optimize' => 'Optimitza',
|
||||
'Check' => 'Verifica',
|
||||
'Repair' => 'Repara',
|
||||
'Truncate' => 'Escapça',
|
||||
'Tables have been truncated.' => 'S\'han escapçat les taules.',
|
||||
'Rows' => 'Files',
|
||||
',' => ',',
|
||||
'Tables have been moved.' => 'S\'han desplaçat les taules.',
|
||||
'Move to other database' => 'Desplaça a una altra base de dades',
|
||||
'Move' => 'Desplaça',
|
||||
'Engine' => 'Motor',
|
||||
'Save and continue edit' => 'Desa i segueix editant',
|
||||
'original' => 'original',
|
||||
'%d item(s) have been affected.' => array('S\'ha modificat %d element.', 'S\'han modificat %d elements.'),
|
||||
'whole result' => 'tots els resultats',
|
||||
'Tables have been dropped.' => 'S\'han suprimit les taules.',
|
||||
'Clone' => 'Clona',
|
||||
'Partition by' => 'Fes particions segons',
|
||||
'Partitions' => 'Particions',
|
||||
'Partition name' => 'Nom de la partició',
|
||||
'Values' => 'Valors',
|
||||
'%d row(s) have been imported.' => array('S\'ha importat %d fila.', 'S\'han importat %d files.'),
|
||||
'CSV Import' => 'Importa CSV',
|
||||
'Import' => 'Importa',
|
||||
'Show structure' => 'Mostra l\'estructura',
|
||||
'Select data' => 'Escull dades',
|
||||
'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.',
|
||||
'anywhere' => 'a qualsevol lloc',
|
||||
'%.3f s' => '%.3f s',
|
||||
'$1-$3-$5' => '$5/$3/$1',
|
||||
'[yyyy]-mm-dd' => 'dd-mm-[aaaa]',
|
||||
'History' => 'Història',
|
||||
'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.',
|
||||
'E-mail' => 'Correu electrònic',
|
||||
'From' => 'De',
|
||||
'Subject' => 'Assumpte',
|
||||
'Send' => 'Envia',
|
||||
'%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',
|
||||
'Numbers' => 'Nombres',
|
||||
'Date and time' => 'Data i temps',
|
||||
'Strings' => 'Cadenes',
|
||||
'Binary' => 'Binari',
|
||||
'Lists' => 'Llistes',
|
||||
'Relations' => 'Relacions',
|
||||
'Maximum allowed file size is %sB.' => 'La mida màxima permesa del fitxer és de %sB.',
|
||||
'Clear' => 'Esborra',
|
||||
'Editor' => 'Editor',
|
||||
'Webserver file %s' => 'Fitxer %s del servidor web',
|
||||
'File does not exist.' => 'El fitxer no existeix.',
|
||||
'Permanent login' => 'Sessió permanent',
|
||||
'%d in total' => '%d en total',
|
||||
'Attachments' => 'Adjuncions',
|
||||
'System' => 'Sistema',
|
||||
'last' => 'darrera',
|
||||
'Network' => 'Xarxa',
|
||||
'Geometry' => 'Geometria',
|
||||
'Databases have been dropped.' => 'S\'han suprimit les bases de dades.',
|
||||
'File exists.' => 'El fitxer ja existeix.',
|
||||
'Double click on a value to modify it.' => 'Fes un doble clic a un valor per modificar-lo.',
|
||||
'Increase Text length to modify this value.' => 'Incrementa la Longitud del text per modificar aquest valor.',
|
||||
'Use edit link to modify this value.' => 'Utilitza l\'enllaç d\'edició per modificar aquest valor.',
|
||||
'Alter schema' => 'Modifica l\'esquema',
|
||||
'Create schema' => 'Crea un esquema',
|
||||
'Schema has been dropped.' => 'S\'ha suprimit l\'esquema.',
|
||||
'Schema has been created.' => 'S\'ha creat l\'esquema.',
|
||||
'Schema has been altered.' => 'S\'ha modificat l\'esquema.',
|
||||
'schema' => 'esquema',
|
||||
'Schema' => 'Esquema',
|
||||
'Sequences' => 'Seqüències',
|
||||
'Create sequence' => 'Crea una seqüència',
|
||||
'Sequence has been dropped.' => 'S\'ha suprimit la seqüència.',
|
||||
'Sequence has been created.' => 'S\'ha creat la seqüència.',
|
||||
'Sequence has been altered.' => 'S\'ha modificat la seqüència.',
|
||||
'Alter sequence' => 'Modifica la seqüència',
|
||||
'User types' => 'Tipus de l\'usuari',
|
||||
'Create type' => 'Crea un tipus',
|
||||
'Type has been dropped.' => 'S\'ha suprimit el tipus.',
|
||||
'Type has been created.' => 'S\'ha creat el tipus.',
|
||||
'Alter type' => 'Modifica el tipus',
|
||||
'Search data in tables' => 'Cerca dades en les taules',
|
||||
'From server' => 'En el servidor',
|
||||
'empty' => 'buit',
|
||||
'now' => 'ara',
|
||||
);
|
@@ -25,6 +25,7 @@ $translations = array(
|
||||
'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.',
|
||||
@@ -40,7 +41,10 @@ $translations = array(
|
||||
'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ší',
|
||||
@@ -180,7 +184,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'Tabulky byly vyprázdněny.',
|
||||
'Rows' => 'Řádků',
|
||||
',' => ' ',
|
||||
'Tables have been moved.' => 'Tabulky byly přesunuty',
|
||||
'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ě',
|
||||
@@ -227,16 +231,30 @@ $translations = array(
|
||||
'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íť',
|
||||
'Geometry' => 'Geometrie',
|
||||
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'Soubor existuje.',
|
||||
'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.',
|
||||
'Increase text length to modify this value.' => 'Ke změně této hodnoty zvyšte délku textů.',
|
||||
'Increase Text length to modify this value.' => 'Ke změně této hodnoty zvyšte Délku textů.',
|
||||
'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Pozměnit schéma',
|
||||
'Create schema' => 'Vytvořit schéma',
|
||||
'Schema has been dropped.' => 'Schéma bylo odstraněno.',
|
||||
@@ -244,19 +262,32 @@ $translations = array(
|
||||
'Schema has been altered.' => 'Schéma bylo změněno.',
|
||||
'schema' => 'schéma',
|
||||
'Schema' => 'Schéma',
|
||||
'Invalid schema.' => 'Nesprávné schéma.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Sekvence',
|
||||
'Create sequence' => 'Vytvořit sekvenci',
|
||||
'Sequence has been dropped.' => 'Sekvence byla odstraněna.',
|
||||
'Sequence has been created.' => 'Sekvence byla vytvořena.',
|
||||
'Sequence has been altered.' => 'Sekvence byla změněna.',
|
||||
'Alter sequence' => 'Pozměnit sekvenci',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Uživatelské typy',
|
||||
'Create type' => 'Vytvořit typ',
|
||||
'Type has been dropped.' => 'Typ byl odstraněn.',
|
||||
'Type has been created.' => 'Typ byl vytvořen.',
|
||||
'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ď',
|
||||
);
|
||||
|
@@ -173,7 +173,7 @@ $translations = array(
|
||||
'Data Free' => 'Freier Bereich',
|
||||
'Collation' => 'Collation',
|
||||
'Analyze' => 'Analysieren',
|
||||
'Optimize' => 'Optimisieren',
|
||||
'Optimize' => 'Optimieren',
|
||||
'Check' => 'Prüfen',
|
||||
'Repair' => 'Reparieren',
|
||||
'Truncate' => 'Entleeren (truncate)',
|
||||
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Typ gelöscht.',
|
||||
'Type has been created.' => 'Typ erstellt.',
|
||||
'Double click on a value to modify it.' => 'Doppelklick zum Bearbeiten des Wertes.',
|
||||
'Increase text length to modify this value.' => 'Vergrössern Sie die Textlänge um den Wert ändern zu können.',
|
||||
'Increase Text length to modify this value.' => 'Vergrössern Sie die Textlänge um den Wert ändern zu können.',
|
||||
'Use edit link to modify this value.' => 'Benutzen Sie den Link zum editieren dieses Wertes.',
|
||||
'last' => 'letzte',
|
||||
'From server' => 'Auf Server',
|
||||
|
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Tipo eliminado.',
|
||||
'Type has been created.' => 'Tipo creado.',
|
||||
'Double click on a value to modify it.' => 'Doble-clic sobre el valor para editarlo.',
|
||||
'Increase text length to modify this value.' => 'Aumente el tamaño del campo de texto para modificar este valor.',
|
||||
'Increase Text length to modify this value.' => 'Aumente el tamaño del campo de texto para modificar este valor.',
|
||||
'Use edit link to modify this value.' => 'Utilice el enlace de modificar para realizar los cambios.',
|
||||
'last' => 'último',
|
||||
'From server' => 'Desde servidor',
|
||||
|
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Tüüp on edukalt kustutatud.',
|
||||
'Type has been created.' => 'Tüüp on edukalt loodud.',
|
||||
'Double click on a value to modify it.' => 'Väärtuse muutmiseks topelt-kliki sellel.',
|
||||
'Increase text length to modify this value.' => 'Väärtuse muutmiseks suurenda tekstiveeru pikkust.',
|
||||
'Increase Text length to modify this value.' => 'Väärtuse muutmiseks suurenda Tekstiveeru pikkust.',
|
||||
'Use edit link to modify this value.' => 'Väärtuse muutmiseks kasuta muutmislinki.',
|
||||
'last' => 'viimane',
|
||||
'From server' => 'Serverist',
|
||||
|
@@ -245,7 +245,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Le type a été supprimé.',
|
||||
'Type has been created.' => 'Le type a été créé.',
|
||||
'Double click on a value to modify it.' => 'Double-cliquez sur une valeur pour la modifier.',
|
||||
'Increase text length to modify this value.' => 'Augmentez la longueur de texte affiché pour modifier cette valeur.',
|
||||
'Increase Text length to modify this value.' => 'Augmentez la Longueur de texte affiché pour modifier cette valeur.',
|
||||
'Use edit link to modify this value.' => 'Utilisez le lien "modifier" pour modifier cette valeur.',
|
||||
'last' => 'dernière',
|
||||
'From server' => 'Depuis le serveur',
|
||||
|
@@ -69,7 +69,7 @@ $translations = array(
|
||||
'Foreign keys' => 'Idegen kulcs',
|
||||
'Triggers' => 'Trigger',
|
||||
'View' => 'Nézet',
|
||||
'Unable to select the table' => 'Nem tudom kiválasztani a táblát.',
|
||||
'Unable to select the table' => 'Nem tudom kiválasztani a táblát',
|
||||
'Invalid CSRF token. Send the form again.' => 'Érvénytelen CSRF azonosító. Küldd újra az űrlapot.',
|
||||
'Comment' => 'Megjegyzés',
|
||||
'Default values' => 'Alapértelmezett értékek',
|
||||
@@ -113,7 +113,7 @@ $translations = array(
|
||||
'Database schema' => 'Adatbázis séma',
|
||||
'Create procedure' => 'Eljárás létrehozása',
|
||||
'Create function' => 'Funkció létrehozása',
|
||||
'Routine has been dropped.' => 'A rutin eldobva,',
|
||||
'Routine has been dropped.' => 'A rutin eldobva.',
|
||||
'Routine has been altered.' => 'A rutin módosult.',
|
||||
'Routine has been created.' => 'A rutin létrejött.',
|
||||
'Alter function' => 'Funkció módosítása',
|
||||
@@ -180,7 +180,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'A tábla felszabadítva.',
|
||||
'Rows' => 'Oszlop',
|
||||
',' => ' ',
|
||||
'Tables have been moved.' => 'Táblák áthelyezve',
|
||||
'Tables have been moved.' => 'Táblák áthelyezve.',
|
||||
'Move to other database' => 'Áthelyezés másik adatbázisba',
|
||||
'Move' => 'Áthelyez',
|
||||
'Engine' => 'Motor',
|
||||
@@ -194,13 +194,13 @@ $translations = array(
|
||||
'Partitions' => 'Particiók',
|
||||
'Partition name' => 'Partició neve',
|
||||
'Values' => 'Értékek',
|
||||
'%d row(s) have been imported.' => array('%d sor importálva.', '%d sor importálva', '%d sor importálva'),
|
||||
'%d row(s) have been imported.' => array('%d sor importálva.', '%d sor importálva.', '%d sor importálva.'),
|
||||
'CSV Import' => 'CSV importálása',
|
||||
'Import' => 'Importálás',
|
||||
'Show structure' => 'Struktúra',
|
||||
'Select data' => 'Tartalom',
|
||||
'Stop on error' => 'Hiba esetén megáll',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'A maximális mezőszámot elérted. Növeld meg ezeket: %s, %s',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'A maximális mezőszámot elérted. Növeld meg ezeket: %s, %s.',
|
||||
'anywhere' => 'bárhol',
|
||||
'%.3f s' => '%.3f másodperc',
|
||||
'$1-$3-$5' => '$6.$4.$1',
|
||||
@@ -235,7 +235,7 @@ $translations = array(
|
||||
'Databases have been dropped.' => 'Adatbázis eldobva.',
|
||||
'File exists.' => 'A fájl létezik.',
|
||||
'Double click on a value to modify it.' => 'Kattints kétszer az értékre a szerkesztéshez.',
|
||||
'Increase text length to modify this value.' => 'Növeld a szöveg hosszát, hogy módosítani tudd ezt az értéket.',
|
||||
'Increase Text length to modify this value.' => 'Növeld a Szöveg hosszát, hogy módosítani tudd ezt az értéket.',
|
||||
'Use edit link to modify this value.' => 'Használd a szerkesztés hivatkozást ezen érték módosításához.',
|
||||
'Alter schema' => 'Séma módosítása',
|
||||
'Create schema' => 'Séma létrehozása',
|
||||
|
@@ -187,7 +187,7 @@ $translations = array(
|
||||
'Truncate' => 'Svuota',
|
||||
'Move to other database' => 'Sposta in altro database',
|
||||
'Move' => 'Sposta',
|
||||
'%d item(s) have been affected.' => array('Il risultato consiste in %d elemento', 'Il risultato consiste in %d elementi'),
|
||||
'%d item(s) have been affected.' => array('Il risultato consiste in %d elemento.', 'Il risultato consiste in %d elementi.'),
|
||||
'whole result' => 'intero risultato',
|
||||
'Clone' => 'Clona',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Troppi campi. Per favore aumentare %s e %s.',
|
||||
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Tipo definito dall\'utente eliminato.',
|
||||
'Type has been created.' => 'Tipo definito dall\'utente creato.',
|
||||
'Double click on a value to modify it.' => 'Fai doppio click su un valore per modificarlo.',
|
||||
'Increase text length to modify this value.' => 'Aumenta la lunghezza del testo per modificare questo valore.',
|
||||
'Increase Text length to modify this value.' => 'Aumenta la Lunghezza del testo per modificare questo valore.',
|
||||
'Use edit link to modify this value.' => 'Usa il link modifica per modificare questo valore.',
|
||||
'last' => 'ultima',
|
||||
'From server' => 'Dal server',
|
||||
|
@@ -247,7 +247,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'ユーザー定義型を削除しました',
|
||||
'Type has been created.' => 'ユーザー定義型を追加しました',
|
||||
'Double click on a value to modify it.' => 'ダブルクリックして編集',
|
||||
'Increase text length to modify this value.' => '編集枠を広げる',
|
||||
'Increase Text length to modify this value.' => '編集枠を広げる',
|
||||
'Use edit link to modify this value.' => 'リンクを編集する',
|
||||
'last' => '最終',
|
||||
'From server' => 'サーバーから実行',
|
||||
|
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Type verwijderd.',
|
||||
'Type has been created.' => 'Type aangemaakt.',
|
||||
'Double click on a value to modify it.' => 'Dubbelklik op een waarde om deze te bewerken.',
|
||||
'Increase text length to modify this value.' => 'Verhoog de lengte om deze waarde te bewerken.',
|
||||
'Increase Text length to modify this value.' => 'Verhoog de lengte om deze waarde te bewerken.',
|
||||
'Use edit link to modify this value.' => 'Gebruik de link "bewerk" om deze waarde te wijzigen.',
|
||||
'last' => 'laatste',
|
||||
'From server' => 'Van server',
|
||||
|
@@ -147,7 +147,7 @@ $translations = array(
|
||||
'Move down' => 'Переместить вниз',
|
||||
'Functions' => 'Функции',
|
||||
'Aggregation' => 'Агрегация',
|
||||
'Export' => 'Експорт',
|
||||
'Export' => 'Экспорт',
|
||||
'Output' => 'Выходные данные',
|
||||
'open' => 'открыть',
|
||||
'save' => 'сохранить',
|
||||
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Тип удален.',
|
||||
'Type has been created.' => 'Создан новый тип.',
|
||||
'Double click on a value to modify it.' => 'Кликни два раза по значению, чтобы его изменить.',
|
||||
'Increase text length to modify this value.' => 'Увеличь длину текста, чтобы изменить это значение.',
|
||||
'Increase Text length to modify this value.' => 'Увеличь Длину текста, чтобы изменить это значение.',
|
||||
'Use edit link to modify this value.' => 'Изменить это значение можно с помощью ссылки «изменить».',
|
||||
'last' => 'последняя',
|
||||
'From server' => 'С сервера',
|
||||
|
@@ -170,9 +170,9 @@ $translations = array(
|
||||
'On completion preserve' => 'Po dokončení zachovat',
|
||||
'Save and continue edit' => 'Uložiť a pokračovať v úpravách',
|
||||
'original' => 'originál',
|
||||
'Tables have been truncated.' => 'Tabuľka bola vyprázdnená',
|
||||
'Tables have been moved.' => 'Tabuľka bola presunutá',
|
||||
'Tables have been dropped.' => 'Tabuľka bola odstránená',
|
||||
'Tables have been truncated.' => 'Tabuľka bola vyprázdnená.',
|
||||
'Tables have been moved.' => 'Tabuľka bola presunutá.',
|
||||
'Tables have been dropped.' => 'Tabuľka bola odstránená.',
|
||||
'Tables and views' => 'Tabuľky a pohľady',
|
||||
'Engine' => 'Typ',
|
||||
'Collation' => 'Porovnávanie',
|
||||
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been created.' => 'Typ bol vytvorený.',
|
||||
'Alter type' => 'Pozmeniť typ',
|
||||
'Double click on a value to modify it.' => 'Dvojkliknite na políčko, ktoré chcete zmeniť.',
|
||||
'Increase text length to modify this value.' => 'Pre zmenu tejto hodnoty zvýšte dĺžku textov.',
|
||||
'Increase Text length to modify this value.' => 'Pre zmenu tejto hodnoty zvýšte Dĺžku textov.',
|
||||
'Use edit link to modify this value.' => 'Pre zmenu tejto hodnoty použite odkaz upraviť.',
|
||||
'last' => 'posledný',
|
||||
'From server' => 'Zo serveru',
|
||||
|
@@ -2,14 +2,14 @@
|
||||
$translations = array(
|
||||
'Login' => 'நுழை',
|
||||
'Logout successful.' => 'வெற்றிகரமாய் வெளியேறியாயிற்று.',
|
||||
'Invalid credentials.' => 'சரியான விபரங்கள் இல்லை',
|
||||
'Invalid credentials.' => 'சரியான விபரங்கள் இல்லை.',
|
||||
'Server' => 'வழங்கி (Server)',
|
||||
'Username' => 'பயனாளர் (User)',
|
||||
'Password' => 'கடவுச்சொல்',
|
||||
'Select database' => 'தகவல்தளத்தை தேர்வு செய்',
|
||||
'Invalid database.' => 'தகவல்தளம் சரியானதல்ல.',
|
||||
'Create new database' => 'புதிய தகவல்தளத்தை உருவாக்கு',
|
||||
'Table has been dropped.' => 'அட்டவணை நீக்கப்பட்டது',
|
||||
'Table has been dropped.' => 'அட்டவணை நீக்கப்பட்டது.',
|
||||
'Table has been altered.' => 'அட்டவணை மாற்றப்பட்டது.',
|
||||
'Table has been created.' => 'அட்டவணை உருவாக்கப்பட்டது.',
|
||||
'Alter table' => 'அட்டவணையை மாற்று',
|
||||
@@ -62,13 +62,13 @@ $translations = array(
|
||||
'edit' => 'தொகு',
|
||||
'Page' => 'பக்கம்',
|
||||
'Query executed OK, %d row(s) affected.' => array('வினவல் செயல்படுத்தப்பட்டது, %d வரிசை மாற்றப்பட்டது.', 'வினவல் செயல்படுத்தப்பட்டது, %d வரிசைகள் மாற்றப்பட்டன.'),
|
||||
'Error in query' => 'வினவலில் தவறுள்ளது.',
|
||||
'Error in query' => 'வினவலில் தவறுள்ளது',
|
||||
'Execute' => 'செயல்படுத்து',
|
||||
'Table' => 'அட்டவணை',
|
||||
'Foreign keys' => 'வேற்று விசைகள்',
|
||||
'Triggers' => 'தூண்டுதல்கள்',
|
||||
'View' => 'தோற்றம்',
|
||||
'Unable to select the table' => 'அட்டவணையை தேர்வு செய்ய முடியவில்லை.',
|
||||
'Unable to select the table' => 'அட்டவணையை தேர்வு செய்ய முடியவில்லை',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF டோக்கன் செல்லாது. படிவத்தை மீண்டும் அனுப்பவும்.',
|
||||
'Comment' => 'குறிப்பு',
|
||||
'Default values' => 'உள்ளிருக்கும் (Default) மதிப்புகள் ',
|
||||
@@ -121,8 +121,8 @@ $translations = array(
|
||||
'Trigger has been dropped.' => 'தூண்டு விசை நீக்கப்பட்டது.',
|
||||
'Trigger has been altered.' => 'தூண்டு விசை மாற்றப்பட்டது.',
|
||||
'Trigger has been created.' => 'தூண்டு விசை உருவாக்கப்பட்டது.',
|
||||
'Alter trigger' => 'தூண்டு விசையை மாற்று.',
|
||||
'Create trigger' => 'தூண்டு விசையை உருவாக்கு.',
|
||||
'Alter trigger' => 'தூண்டு விசையை மாற்று',
|
||||
'Create trigger' => 'தூண்டு விசையை உருவாக்கு',
|
||||
'Time' => 'நேரம்',
|
||||
'Event' => 'நிகழ்ச்சி',
|
||||
'%d row(s)' => array('%d வரிசை', '%d வரிசைகள்'),
|
||||
@@ -236,7 +236,7 @@ $translations = array(
|
||||
'Schema has been created.' => 'அமைப்புமுறை உருவாக்கப்பட்டது.',
|
||||
'Schema has been altered.' => 'அமைப்புமுறை மாற்றப்பட்டது.',
|
||||
'Double click on a value to modify it.' => 'மதிப்பினை மாற்ற அதன் மீது இருமுறை சொடுக்கவும் (Double click).',
|
||||
'Increase text length to modify this value.' => 'இந்த மதிப்பினை மாற்ற, டெக்ஸ்ட் நீளத்தினை அதிகரிக்கவும்.',
|
||||
'Increase Text length to modify this value.' => 'இந்த மதிப்பினை மாற்ற, டெக்ஸ்ட் நீளத்தினை அதிகரிக்கவும்.',
|
||||
'Use edit link to modify this value.' => 'இந்த மதிப்பினை மாற்ற, தொகுப்பு இணைப்பினை உபயோகிக்கவும்.',
|
||||
'last' => 'கடைசி',
|
||||
'Sequence has been dropped.' => 'வரிசைமுறை நீக்கப்பட்டது.',
|
||||
@@ -257,6 +257,6 @@ $translations = array(
|
||||
'Network' => 'நெட்வொர்க்',
|
||||
'Geometry' => 'வடிவவியல் (Geometry)',
|
||||
'File exists.' => 'கோப்பு உள்ளது.',
|
||||
'Attachments' => 'இணைப்புகள்.',
|
||||
'Attachments' => 'இணைப்புகள்',
|
||||
'now' => 'இப்பொழுது',
|
||||
);
|
||||
|
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => '已刪除類型。',
|
||||
'Type has been created.' => '已建立類型。',
|
||||
'Double click on a value to modify it.' => '雙擊以進行修改。',
|
||||
'Increase text length to modify this value.' => '增加字串長度來修改。',
|
||||
'Increase Text length to modify this value.' => '增加字串長度來修改。',
|
||||
'Use edit link to modify this value.' => '使用編輯連結來修改。',
|
||||
'last' => '最後一頁',
|
||||
'From server' => '從伺服器',
|
||||
|
@@ -246,7 +246,7 @@ $translations = array(
|
||||
'Type has been dropped.' => '已丢弃类型。',
|
||||
'Type has been created.' => '已创建类型。',
|
||||
'Double click on a value to modify it.' => '在值上双击类修改它。',
|
||||
'Increase text length to modify this value.' => '增加文本长度以修改该值。',
|
||||
'Increase Text length to modify this value.' => '增加文本长度以修改该值。',
|
||||
'Use edit link to modify this value.' => '使用编辑链接来修改该值。',
|
||||
'last' => '最后',
|
||||
'From server' => '来自服务器',
|
||||
|
@@ -1,14 +1,17 @@
|
||||
<?php
|
||||
header("Content-Type: text/javascript; charset=utf-8");
|
||||
if ($_GET["token"] != $token) { // CSRF protection
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($_GET["script"] == "db") {
|
||||
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
||||
foreach (table_status() as $row) {
|
||||
$id = addcslashes($row["Name"], "\\'/");
|
||||
echo "setHtml('Comment-$id', '" . nbsp($row["Comment"]) . "');\n";
|
||||
echo "setHtml('Comment-$id', '" . addcslashes(nbsp($row["Comment"]), "'\\") . "');\n";
|
||||
if (!is_view($row)) {
|
||||
foreach (array("Engine", "Collation") as $key) {
|
||||
echo "setHtml('$key-$id', '" . nbsp($row[$key]) . "');\n";
|
||||
echo "setHtml('$key-$id', '" . addcslashes(nbsp($row[$key]), "'\\") . "');\n";
|
||||
}
|
||||
foreach ($sums + array("Auto_increment" => 0, "Rows" => 0) as $key => $val) {
|
||||
if ($row[$key] != "") {
|
||||
|
@@ -126,7 +126,7 @@ if ($_POST && !$error) {
|
||||
$set = array();
|
||||
foreach ($row as $key => $val) {
|
||||
$key = bracket_escape($key, 1); // 1 - back
|
||||
$set[] = idf_escape($key) . " = " . $adminer->processInput($fields[$key], $val);
|
||||
$set[] = idf_escape($key) . " = " . (ereg('char|text', $fields[$key]["type"]) || $val != "" ? $adminer->processInput($fields[$key], $val) : "NULL");
|
||||
}
|
||||
$result = queries("UPDATE" . limit1(table($TABLE) . " SET " . implode(", ", $set), " WHERE " . where_check($unique_idf) . ($where ? " AND " . implode(" AND ", $where) : ""))); // can change row on a different page without unique key
|
||||
if (!$result) {
|
||||
@@ -279,7 +279,7 @@ if (!$columns) {
|
||||
if (isset($names[$key])) {
|
||||
$field = $fields[$key];
|
||||
if ($val != "" && (!isset($email_fields[$key]) || $email_fields[$key] != "")) {
|
||||
$email_fields[$key] = (is_email($val) ? $names[$key] : ""); //! filled e-mails can be contained on other pages
|
||||
$email_fields[$key] = (is_mail($val) ? $names[$key] : ""); //! filled e-mails can be contained on other pages
|
||||
}
|
||||
$link = "";
|
||||
$val = $adminer->editVal($val, $field);
|
||||
@@ -322,7 +322,7 @@ if (!$columns) {
|
||||
}
|
||||
}
|
||||
if (!$link) {
|
||||
if (is_email($val)) {
|
||||
if (is_mail($val)) {
|
||||
$link = "mailto:$val";
|
||||
}
|
||||
if ($protocol = is_url($row[$key])) {
|
||||
@@ -339,8 +339,8 @@ if (!$columns) {
|
||||
$editable = is_utf8($val) && !$long && $rows[$n][$key] == $row[$key] && !$functions[$key];
|
||||
$text = ereg('text|lob', $field["type"]);
|
||||
echo (($_GET["modify"] && $editable) || isset($value)
|
||||
? "<td>" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>")
|
||||
: "<td id='$id' ondblclick=\"" . ($editable ? "selectDblClick(this, event" . ($text ? ", 1" : "") . ")" : "alert('" . h($long ? lang('Increase text length to modify this value.') : lang('Use edit link to modify this value.')) . "')") . ";\">" . $adminer->selectVal($val, $link, $field)
|
||||
? "<td>" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "' onkeydown='return textareaKeydown(this, event);'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>")
|
||||
: "<td id='$id' ondblclick=\"" . ($editable ? "selectDblClick(this, event" . ($text ? ", 1" : "") . ")" : "alert('" . h($long ? lang('Increase Text length to modify this value.') : lang('Use edit link to modify this value.')) . "')") . ";\">" . $adminer->selectVal($val, $link, $field)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -48,6 +48,7 @@ function selectValue(select) {
|
||||
* @return HTMLElement
|
||||
*/
|
||||
function formField(form, name) {
|
||||
// required in old IE, maybe can be rewritten as form.elements[name]
|
||||
for (var i=0; i < form.length; i++) {
|
||||
if (form[i].name == name) {
|
||||
return form[i];
|
||||
@@ -407,27 +408,3 @@ function schemaMouseup(ev) {
|
||||
cookie('adminer_schema=' + encodeURIComponent(s.substr(1)), 30, '; path="' + location.pathname + location.search + '"');
|
||||
}
|
||||
}
|
||||
|
||||
/** Handle Tab and Ctrl+Enter in textarea
|
||||
* @param HTMLTextAreaElement
|
||||
* @param KeyboardEvent
|
||||
* @return boolean
|
||||
*/
|
||||
function textareaKeydown(target, event) {
|
||||
if (event.keyCode == 9 && !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey) {
|
||||
// inspired by http://pallieter.org/Projects/insertTab/
|
||||
if (target.setSelectionRange) {
|
||||
var start = target.selectionStart;
|
||||
target.value = target.value.substr(0, start) + '\t' + target.value.substr(target.selectionEnd);
|
||||
target.setSelectionRange(start + 1, start + 1);
|
||||
return false; //! still loses focus in Opera, can be solved by handling onblur
|
||||
} else if (target.createTextRange) {
|
||||
document.selection.createRange().text = '\t';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (event.ctrlKey && (event.keyCode == 13 || event.keyCode == 10) && !event.altKey && !event.metaKey) { // shiftKey allowed
|
||||
target.form.submit();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@@ -123,7 +123,35 @@ function selectAddRow(field) {
|
||||
|
||||
|
||||
|
||||
|
||||
/** Handle Ctrl+Enter and optionally Tab in textarea
|
||||
* @param HTMLTextAreaElement
|
||||
* @param KeyboardEvent
|
||||
* @param boolean handle also Tab
|
||||
* @param HTMLInputElement submit button
|
||||
* @return boolean
|
||||
*/
|
||||
function textareaKeydown(target, event, tab, button) {
|
||||
if (tab && event.keyCode == 9 && !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey) {
|
||||
// inspired by http://pallieter.org/Projects/insertTab/
|
||||
if (target.setSelectionRange) {
|
||||
var start = target.selectionStart;
|
||||
target.value = target.value.substr(0, start) + '\t' + target.value.substr(target.selectionEnd);
|
||||
target.setSelectionRange(start + 1, start + 1);
|
||||
return false; //! still loses focus in Opera, can be solved by handling onblur
|
||||
} else if (target.createTextRange) {
|
||||
document.selection.createRange().text = '\t';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (event.ctrlKey && (event.keyCode == 13 || event.keyCode == 10) && !event.altKey && !event.metaKey) { // shiftKey allowed
|
||||
if (button) {
|
||||
button.click();
|
||||
} else {
|
||||
target.form.submit();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Display edit field
|
||||
* @param HTMLElement
|
||||
@@ -136,13 +164,16 @@ function selectDblClick(td, event, text) {
|
||||
var input = document.createElement(text ? 'textarea' : 'input');
|
||||
input.name = td.id;
|
||||
input.value = (value == '\u00A0' || td.getElementsByTagName('i').length ? '' : value); // or i - NULL
|
||||
input.style.width = (td.clientWidth - 14) + 'px'; // 14 = 2 * (td.border + td.padding + input.border)
|
||||
input.style.width = Math.max(td.clientWidth - 14, 20) + 'px'; // 14 = 2 * (td.border + td.padding + input.border)
|
||||
if (text) {
|
||||
var rows = 1;
|
||||
value.replace(/\n/g, function () {
|
||||
rows++;
|
||||
});
|
||||
input.rows = rows;
|
||||
input.onkeydown = function (event) {
|
||||
return textareaKeydown(input, event || window.event);
|
||||
};
|
||||
}
|
||||
if (document.selection) {
|
||||
var range = document.selection.createRange();
|
||||
|
@@ -1,3 +1,11 @@
|
||||
Adminer 3.0.1 (released 2010-10-18):
|
||||
Send the form by Ctrl+Enter in all textareas
|
||||
Disable creating SQLite databases with extension other than db, sdb, sqlite
|
||||
Ability to use Adminer in a frame through customization
|
||||
Catalan translation
|
||||
MS SQL 2005 compatibility
|
||||
PostgreSQL: connect if the eponymous database does not exist
|
||||
|
||||
Adminer 3.0.0 (released 2010-10-15):
|
||||
Drivers for MS SQL, SQLite, PostgreSQL, Oracle
|
||||
Allow concurrent logins on the same server
|
||||
|
@@ -244,6 +244,7 @@ foreach (array("adminer", "editor") as $project) {
|
||||
}
|
||||
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
|
||||
$file = preg_replace_callback('~\\b(include|require) "([^"]*\\$LANG.inc.php)";~', 'put_file_lang', $file);
|
||||
$file = str_replace("\r", "", $file);
|
||||
if ($_SESSION["lang"]) {
|
||||
// single language version
|
||||
$file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
|
||||
|
@@ -26,6 +26,10 @@ class Adminer {
|
||||
);
|
||||
}
|
||||
|
||||
function headers() {
|
||||
header("X-Frame-Options: deny");
|
||||
}
|
||||
|
||||
function loginForm() {
|
||||
?>
|
||||
<table cellspacing="0">
|
||||
@@ -265,7 +269,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
||||
echo '<fieldset><legend><a href="#fieldset-email" onclick="return !toggle(\'fieldset-email\');">' . lang('E-mail') . "</a></legend><div id='fieldset-email'" . ($_POST["email_append"] ? "" : " class='hidden'") . ">\n";
|
||||
echo "<p>" . lang('From') . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n";
|
||||
echo lang('Subject') . ": <input name='email_subject' value='" . h($_POST["email_subject"]) . "'>\n";
|
||||
echo "<p><textarea name='email_message' rows='15' cols='75'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea><br>\n";
|
||||
echo "<p><textarea name='email_message' rows='15' cols='75' onkeydown='return textareaKeydown(this, event, false, this.form.email);'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea><br>\n";
|
||||
echo html_select("email_addition", $columns, $_POST["email_addition"]) . "<input type='submit' name='email_append' value='" . lang('Insert') . "'>\n"; //! JavaScript
|
||||
echo "<p>" . lang('Attachments') . ": <input type='file' name='email_files[]' onchange=\"var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el); this.onchange = function () { };\">";
|
||||
echo "<p>" . (count($emailFields) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($emailFields)) . '">' : html_select("email_field", $emailFields));
|
||||
@@ -358,7 +362,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
||||
$replace['{$' . "$val}"] = $this->editVal($row[$val], $fields[$val]);
|
||||
}
|
||||
$email = $row[$_POST["email_field"]];
|
||||
if (is_email($email) && send_email($email, strtr($subject, $replace), strtr($message, $replace), $_POST["email_from"], $_FILES["email_files"])) {
|
||||
if (is_mail($email) && send_mail($email, strtr($subject, $replace), strtr($message, $replace), $_POST["email_from"], $_FILES["email_files"])) {
|
||||
$sent++;
|
||||
}
|
||||
}
|
||||
@@ -411,7 +415,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
||||
$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);
|
||||
if (!ereg('varchar|text', $field["type"]) && $field["full_type"] != "tinyint(1)" && $value == "") {
|
||||
if (!ereg('char|text', $field["type"]) && $field["full_type"] != "tinyint(1)" && $value == "") {
|
||||
$return = "NULL";
|
||||
} elseif (ereg('^(md5|sha1)$', $function)) {
|
||||
$return = "$function($return)";
|
||||
@@ -459,7 +463,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
|
||||
</p>
|
||||
</form>
|
||||
<?php
|
||||
if ($missing != "db") {
|
||||
if ($missing != "db" && $missing != "ns") {
|
||||
$table_status = table_status();
|
||||
if (!$table_status) {
|
||||
echo "<p class='message'>" . lang('No tables.') . "\n";
|
||||
|
@@ -16,7 +16,7 @@ function email_header($header) {
|
||||
* @param array
|
||||
* @return
|
||||
*/
|
||||
function send_email($email, $subject, $message, $from = "", $files = array()) {
|
||||
function send_mail($email, $subject, $message, $from = "", $files = array()) {
|
||||
$eol = (strncasecmp(PHP_OS, "win", 3) ? "\n" : "\r\n"); // PHP_EOL available since PHP 4.3.10 and 5.0.2
|
||||
$message = str_replace("\n", $eol, wordwrap(str_replace("\r", "", "$message\n")));
|
||||
$boundary = uniqid("boundary");
|
||||
|
3
lang.php
3
lang.php
@@ -27,7 +27,8 @@ foreach (array_merge(
|
||||
foreach (glob(dirname(__FILE__) . "/adminer/lang/" . ($_SESSION["lang"] ? $_SESSION["lang"] : "*") . ".inc.php") as $filename) {
|
||||
$messages = $messages_all;
|
||||
$file = file_get_contents($filename);
|
||||
preg_match_all("~^(\\s*)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", $file, $matches, PREG_SET_ORDER);
|
||||
$file = str_replace("\r", "", $file);
|
||||
preg_match_all("~^(\\s*(?:// [^'].*\\s+)?)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", $file, $matches, PREG_SET_ORDER);
|
||||
$s = "";
|
||||
foreach ($matches as $match) {
|
||||
if (isset($messages[$match[3]])) {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Adminer - Database management in single PHP file
|
||||
Adminer Editor - Database editor in single PHP file
|
||||
Adminer Editor - Data manipulation for end-users
|
||||
|
||||
http://www.adminer.org/
|
||||
Supports: MySQL, PostgreSQL, SQLite, MS SQL, Oracle
|
||||
@@ -8,6 +8,7 @@ Apache License, Version 2.0
|
||||
|
||||
adminer/index.php - Run development version of Adminer
|
||||
editor/index.php - Run development version of Adminer Editor
|
||||
editor/example.php - Example customization
|
||||
compile.php [driver] [lang] - Create a single file version
|
||||
lang.php [lang] - Update translations
|
||||
tests/selenium.html - Selenium test suite
|
||||
|
4
todo.txt
4
todo.txt
@@ -1,6 +1,6 @@
|
||||
Transactions in export
|
||||
Create view and routine options
|
||||
Variables editation, especially 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
|
||||
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"
|
||||
@@ -10,6 +10,7 @@ Only first part of big BZ2 export is readable, files are missing in TAR
|
||||
Auto-refresh processlist (thanks to Jan Garaj)
|
||||
Save schema layout to #hash in URL
|
||||
Double click in select - Esc to abort editation
|
||||
XML export
|
||||
? Filter by value in row under <thead> in select
|
||||
? 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
|
||||
@@ -33,6 +34,7 @@ Delimiter in export and SQL command
|
||||
Backward keys in Editor
|
||||
|
||||
PostgreSQL:
|
||||
Display number of schemas in databases overview
|
||||
Users - SELECT * FROM pg_user
|
||||
ORDER BY COUNT(*)
|
||||
Export - http://www.postgresql.org/docs/8.4/static/functions-info.html
|
||||
|
Reference in New Issue
Block a user