Thread: [Adminer-svn] SF.net SVN: adminer:[975] trunk/adminer
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2009-08-18 09:16:10
|
Revision: 975 http://adminer.svn.sourceforge.net/adminer/?rev=975&view=rev Author: jakubvrana Date: 2009-08-18 09:16:04 +0000 (Tue, 18 Aug 2009) Log Message: ----------- Rename distinct to count distinct Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-08-18 09:15:36 UTC (rev 974) +++ trunk/adminer/include/adminer.inc.php 2009-08-18 09:16:04 UTC (rev 975) @@ -1,7 +1,7 @@ <?php class Adminer { var $functions = array("char_length", "from_unixtime", "hex", "lower", "round", "sec_to_time", "time_to_sec", "unix_timestamp", "upper"); - var $grouping = array("avg", "count", "distinct", "group_concat", "max", "min", "sum"); // distinct is short for COUNT(DISTINCT) + var $grouping = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); var $operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL"); /** Name in title and navigation Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-18 09:15:36 UTC (rev 974) +++ trunk/adminer/select.inc.php 2009-08-18 09:16:04 UTC (rev 975) @@ -18,7 +18,7 @@ function apply_sql_function($function, $column) { return ($function - ? ($function == "distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)" + ? ($function == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)" : $column ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-18 09:20:02
|
Revision: 976 http://adminer.svn.sourceforge.net/adminer/?rev=976&view=rev Author: jakubvrana Date: 2009-08-18 09:19:54 +0000 (Tue, 18 Aug 2009) Log Message: ----------- Move apply_sql_function Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-18 09:16:04 UTC (rev 975) +++ trunk/adminer/include/functions.inc.php 2009-08-18 09:19:54 UTC (rev 976) @@ -359,6 +359,10 @@ echo implode(",", $row) . "\n"; } +function apply_sql_function($function, $column) { + return ($function ? ($function == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)" : $column); +} + function is_email($email) { $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // characters of local-name $domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-18 09:16:04 UTC (rev 975) +++ trunk/adminer/select.inc.php 2009-08-18 09:19:54 UTC (rev 976) @@ -16,13 +16,6 @@ $rights += $field["privileges"]; } -function apply_sql_function($function, $column) { - return ($function - ? ($function == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)" - : $column - ); -} - list($select, $group) = $adminer->selectColumnsProcess($columns, $indexes); $where = $adminer->selectSearchProcess($fields, $indexes); $order = $adminer->selectOrderProcess($fields, $indexes); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-19 14:12:05
|
Revision: 980 http://adminer.svn.sourceforge.net/adminer/?rev=980&view=rev Author: jakubvrana Date: 2009-08-19 14:11:58 +0000 (Wed, 19 Aug 2009) Log Message: ----------- Separate <h1> and version Modified Paths: -------------- trunk/adminer/default.css trunk/adminer/include/design.inc.php Modified: trunk/adminer/default.css =================================================================== --- trunk/adminer/default.css 2009-08-19 12:07:37 UTC (rev 979) +++ trunk/adminer/default.css 2009-08-19 14:11:58 UTC (rev 980) @@ -2,8 +2,8 @@ a { color: blue; } a:visited { color: navy; } a:hover { color: red; } -h1 { font-size: 100%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; } -h1 .h1 { font-size: 150%; color: #777; text-decoration: none; font-style: italic; } +h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; } +h1 a, h1 a:visited { color: #777; text-decoration: none; font-style: italic; } h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; } h3 { font-weight: normal; font-size: 130%; margin: .8em 0; } table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; } @@ -14,6 +14,7 @@ p { margin: 0 20px 1em 0; } img { vertical-align: middle; border: 0; } code { background: #eee; } +.version { float: right; color: #777; margin: 1.5em 1em; text-align: right; } .js .hidden { display: none; } .nowrap { white-space: nowrap; } .wrap { white-space: normal; } Modified: trunk/adminer/include/design.inc.php =================================================================== --- trunk/adminer/include/design.inc.php 2009-08-19 12:07:37 UTC (rev 979) +++ trunk/adminer/include/design.inc.php 2009-08-19 14:11:58 UTC (rev 980) @@ -62,9 +62,8 @@ <?php switch_lang(); ?> <div id="menu"> -<h1><a href="http://www.adminer.org/" class="h1"><?php echo $adminer->name(); ?></a> <?php echo $VERSION; ?> -<a href="http://www.adminer.org/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a> -</h1> +<div class="version"><?php echo $VERSION; ?> <a href="http://www.adminer.org/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a></div> +<h1><a href="http://www.adminer.org/"><?php echo $adminer->name(); ?></a></h1> <?php $adminer->navigation($missing); ?> </div> <?php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-21 16:58:27
|
Revision: 994 http://adminer.svn.sourceforge.net/adminer/?rev=994&view=rev Author: jakubvrana Date: 2009-08-21 16:58:20 +0000 (Fri, 21 Aug 2009) Log Message: ----------- Use shorthand property Modified Paths: -------------- trunk/adminer/default.css trunk/adminer/include/version.inc.php Modified: trunk/adminer/default.css =================================================================== --- trunk/adminer/default.css 2009-08-21 16:54:10 UTC (rev 993) +++ trunk/adminer/default.css 2009-08-21 16:58:20 UTC (rev 994) @@ -1,4 +1,4 @@ -body { color: #000; background: #fff; line-height: 1.25em; font-family: Verdana, Arial, Helvetica, sans-serif; margin: 0; font-size: 90%; } +body { color: #000; background: #fff; font: 90%/1.25 Verdana, Arial, Helvetica, sans-serif; margin: 0; } a { color: blue; } a:visited { color: navy; } a:hover { color: red; } Modified: trunk/adminer/include/version.inc.php =================================================================== --- trunk/adminer/include/version.inc.php 2009-08-21 16:54:10 UTC (rev 993) +++ trunk/adminer/include/version.inc.php 2009-08-21 16:58:20 UTC (rev 994) @@ -1,2 +1,2 @@ <?php -$VERSION = "2.0.1-dev"; +$VERSION = "2.1.0-dev"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-22 13:08:39
|
Revision: 997 http://adminer.svn.sourceforge.net/adminer/?rev=997&view=rev Author: jakubvrana Date: 2009-08-22 13:08:26 +0000 (Sat, 22 Aug 2009) Log Message: ----------- Print version after title Modified Paths: -------------- trunk/adminer/default.css trunk/adminer/include/design.inc.php Modified: trunk/adminer/default.css =================================================================== --- trunk/adminer/default.css 2009-08-21 17:08:10 UTC (rev 996) +++ trunk/adminer/default.css 2009-08-22 13:08:26 UTC (rev 997) @@ -3,7 +3,6 @@ a:visited { color: navy; } a:hover { color: red; } h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; } -h1 a, h1 a:visited { color: #777; text-decoration: none; font-style: italic; } h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; } h3 { font-weight: normal; font-size: 130%; margin: .8em 0; } table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; } @@ -17,7 +16,7 @@ code { background: #eee; } tr:hover td { background: #ddf; } thead tr:hover td { background: #F5F5F5; } -.version { float: right; color: #777; margin: 1.5em 1em; text-align: right; } +.version { color: #777; font-size: 67%; } .js .hidden { display: none; } .nowrap { white-space: nowrap; } .wrap { white-space: normal; } @@ -37,7 +36,8 @@ #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; } #lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; } #breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; } -#version { color: red; } +#h1 { color: #777; text-decoration: none; font-style: italic; } +#version { font-size: 67%; color: red; } #schema { margin-left: 60px; position: relative; } #schema .table { border: 1px solid Silver; padding: 0 2px; cursor: move; position: absolute; } #schema .references { position: absolute; } Modified: trunk/adminer/include/design.inc.php =================================================================== --- trunk/adminer/include/design.inc.php 2009-08-21 17:08:10 UTC (rev 996) +++ trunk/adminer/include/design.inc.php 2009-08-22 13:08:26 UTC (rev 997) @@ -62,8 +62,11 @@ <?php switch_lang(); ?> <div id="menu"> -<div class="version"><?php echo $VERSION; ?> <a href="http://www.adminer.org/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a></div> -<h1><a href="http://www.adminer.org/"><?php echo $adminer->name(); ?></a></h1> +<h1> +<a href="http://www.adminer.org/" id="h1"><?php echo $adminer->name(); ?></a> +<span class="version"><?php echo $VERSION; ?></span> +<a href="http://www.adminer.org/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a> +</h1> <?php $adminer->navigation($missing); ?> </div> <?php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-31 10:12:04
|
Revision: 1052 http://adminer.svn.sourceforge.net/adminer/?rev=1052&view=rev Author: jakubvrana Date: 2009-08-31 10:11:52 +0000 (Mon, 31 Aug 2009) Log Message: ----------- Comments Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/adminer/include/mysql.inc.php trunk/adminer/sql.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-31 07:58:03 UTC (rev 1051) +++ trunk/adminer/include/functions.inc.php 2009-08-31 10:11:52 UTC (rev 1052) @@ -1,32 +1,62 @@ <?php +/** Get database connection +* @return Min_DB +*/ function get_dbh() { // can be used in customization, $dbh is minified global $dbh; return $dbh; } +/** Escape database identifier +* @param string +* @return string +*/ function idf_escape($idf) { return "`" . str_replace("`", "``", $idf) . "`"; } +/** Unescape database identifier +* @param string text inside `` +* @return string +*/ function idf_unescape($idf) { return str_replace("``", "`", $idf); } +/** Escape or unescape string to use inside form [] +* @param string +* @param bool +* @return string +*/ function bracket_escape($idf, $back = false) { // escape brackets inside name="x[]" static $trans = array(':' => ':1', ']' => ':2', '[' => ':3'); return strtr($idf, ($back ? array_flip($trans) : $trans)); } +/** Escape for HTML +* @param string +* @return string +*/ function h($string) { return htmlspecialchars($string, ENT_QUOTES); } +/** Escape for TD +* @param string +* @return string +*/ function nbsp($string) { return (strlen(trim($string)) ? h($string) : " "); } +/** Generate list of HTML options +* @param array array of strings or arrays (creates optgroup) +* @param mixed +* @param bool always use array keys for value="", otherwise only string keys are used +* @return string +*/ function optionlist($options, $selected = null, $use_keys = false) { $return = ""; foreach ($options as $k => $v) { @@ -43,6 +73,11 @@ return $return; } +/** Get list of values from database +* @param string +* @param mixed +* @return array +*/ function get_vals($query, $column = 0) { global $dbh; $return = array(); @@ -55,6 +90,11 @@ return $return; } +/** Find unique identifier of a row +* @param array +* @param array result of indexes() +* @return string query string +*/ function unique_idf($row, $indexes) { foreach ($indexes as $index) { if ($index["type"] == "PRIMARY" || $index["type"] == "UNIQUE") { @@ -77,6 +117,10 @@ return $return; } +/** Create SQL condition from parsed query string +* @param array parsed query string +* @return string +*/ function where($where) { global $dbh; $return = array(); @@ -91,15 +135,30 @@ return implode(" AND ", $return); } +/** Create SQL condition from query string +* @param string +* @return string +*/ function where_check($val) { parse_str($val, $check); return where($check); } +/** Create query string where condition from value +* @param int condition order +* @param string column identifier +* @param string +* @return string +*/ function where_link($i, $column, $value) { return "&where%5B$i%5D%5Bcol%5D=" . urlencode($column) . "&where%5B$i%5D%5Bop%5D=%3D&where%5B$i%5D%5Bval%5D=" . urlencode($value); } +/** Send Location header and exit +* @param string +* @param string +* @return null +*/ function redirect($location, $message = null) { if (isset($message)) { $_SESSION["messages"][] = $message; @@ -108,6 +167,15 @@ exit; } +/** Execute query and redirect if successful +* @param string +* @param string +* @param string +* @param bool +* @param bool +* @param bool +* @return bool +*/ function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false) { global $dbh, $error, $adminer; $sql = ""; @@ -127,6 +195,10 @@ return true; } +/** Execute and remember query +* @param string null to return remembered queries +* @return Min_Result +*/ function queries($query = null) { global $dbh; static $queries = array(); @@ -138,15 +210,28 @@ return $dbh->query($query); } +/** Remove parameter from query string +* @param string +* @return string +*/ function remove_from_uri($param = "") { $param = "($param|" . session_name() . ")"; return preg_replace("~\\?$param=[^&]*&~", '?', preg_replace("~\\?$param=[^&]*\$|&$param=[^&]*~", '', $_SERVER["REQUEST_URI"])); } +/** Generate page number for pagination +* @param int +* @return string +*/ function pagination($page) { return " " . ($page == $_GET["page"] ? $page + 1 : '<a href="' . h(remove_from_uri("page") . ($page ? "&page=$page" : "")) . '">' . ($page + 1) . "</a>"); } +/** Get file contents from $_FILES or $_POST["files"] +* @param string +* @param bool +* @return string +*/ function get_file($key, $decompress = false) { // returns int for error, string otherwise $file = $_POST["files"][$key]; @@ -168,19 +253,32 @@ )); //! may not be reachable because of open_basedir } +/** Determine upload error +* @param int +* @return string +*/ function upload_error($error) { $max_size = ($error == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : null); // post_max_size is checked in index.php return ($error ? lang('Unable to upload a file.') . ($max_size ? " " . lang('Maximum allowed file size is %sB.', $max_size) : "") : lang('File does not exist.')); } -function odd($s = ' class="odd"') { +/** Generate class for odd rows +* @param string return this for odd rows, empty to reset counter +* @return string +*/ +function odd($return = ' class="odd"') { static $i = 0; - if (!$s) { // reset counter + if (!$return) { // reset counter $i = -1; } - return ($i++ % 2 ? $s : ''); + return ($i++ % 2 ? $return : ''); } +/** Print select result +* @param Min_Result +* @param Min_DB connection to examine indexes +* @return null +*/ function select($result, $dbh2 = null) { if (!$result->num_rows) { echo "<p class='message'>" . lang('No rows.') . "\n"; @@ -253,11 +351,21 @@ } } +/** Check whether the string is in UTF-8 +* @param string +* @return bool +*/ function is_utf8($val) { // don't print control chars except \t\r\n return (preg_match('~~u', $val) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $val)); } +/** Shorten UTF-8 string +* @param string +* @param int +* @param string +* @return string escaped string with appended ... +*/ function shorten_utf8($string, $length = 80, $suffix = "") { if (!preg_match("~^((?:.|\n){0,$length})(.|\n)?~u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions preg_match("(^([\t\r\n -~]{0,$length})(.?))s", $string, $match); @@ -265,11 +373,20 @@ return h($match[1]) . $suffix . ($match[2] ? "<em>...</em>" : ""); } +/** Generate friendly URL +* @param string +* @return string +*/ function friendly_url($val) { // used for blobs and export return preg_replace('~[^a-z0-9_]~i', '-', $val); } +/** Print hidden fields +* @param array +* @param array +* @return null +*/ function hidden_fields($process, $ignore = array()) { while (list($key, $val) = each($process)) { if (is_array($val)) { @@ -282,6 +399,10 @@ } } +/** Find out foreign keys for each column +* @param string +* @return array array($col => array()) +*/ function column_foreign_keys($table) { $return = array(); foreach (foreign_keys($table) as $foreign_key) { @@ -292,6 +413,12 @@ return $return; } +/** Print edit input field +* @param array one field from fields() +* @param mixed +* @param string +* @return null +*/ function input($field, $value, $function) { global $types, $adminer; $name = h(bracket_escape($field["field"])); @@ -335,6 +462,10 @@ } } +/** Process edit input field +* @param one field from fields() +* @return string +*/ function process_input($field) { global $dbh, $adminer; $idf = bracket_escape($field["field"]); @@ -359,6 +490,10 @@ } } +/** Print data with optional compression +* @param string null to force output +* @return null +*/ function dump($string = null) { // null $string forces sending of buffer static $buffer = ""; // used to improve compression and to allow GZ archives unpackable in Total Commander if ($_POST["compress"]) { @@ -376,6 +511,10 @@ } } +/** Print CSV row +* @param array +* @return null +*/ function dump_csv($row) { foreach ($row as $key => $val) { if (preg_match("~[\"\n,]~", $val) || (isset($val) && !strlen($val))) { @@ -385,10 +524,19 @@ dump(implode(",", $row) . "\n"); } +/** Apply SQL function +* @param string +* @param string escaped column identifier +* @return string +*/ function apply_sql_function($function, $column) { return ($function ? ($function == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)" : $column); } +/** Check whether the string is e-mail address +* @param string +* @return bool +*/ function is_email($email) { $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // characters of local-name $domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component Modified: trunk/adminer/include/mysql.inc.php =================================================================== --- trunk/adminer/include/mysql.inc.php 2009-08-31 07:58:03 UTC (rev 1051) +++ trunk/adminer/include/mysql.inc.php 2009-08-31 10:11:52 UTC (rev 1052) @@ -140,6 +140,9 @@ exit; } +/** Connect to the database +* @return mixed Min_DB or string for error +*/ function connect() { global $adminer; $dbh = new Min_DB; @@ -152,6 +155,10 @@ return $dbh->error; } +/** Get cached list of databases +* @param bool +* @return array +*/ function get_databases($flush = true) { // SHOW DATABASES can take a very long time so it is cached $return = &$_SESSION["databases"][$_GET["server"]]; @@ -165,6 +172,10 @@ return $return; } +/** Get table status +* @param string +* @return array +*/ function table_status($name = "") { global $dbh; $return = array(); @@ -179,6 +190,9 @@ return (strlen($name) ? $return[$name] : $return); } +/** Get status of referencable tables +* @return array +*/ function table_status_referencable() { $return = array(); foreach (table_status() as $name => $row) { @@ -189,6 +203,10 @@ return $return; } +/** Get information about fields +* @param string +* @return array array($name => array("field" => , "full_type" => , "type" => , "length" => , "unsigned" => , "default" => , "null" => , "auto_increment" => , "on_update" => , "collation" => , "privileges" => , "comment" => , "primary" => )) +*/ function fields($table) { global $dbh; $return = array(); @@ -216,6 +234,11 @@ return $return; } +/** Get table indexes +* @param string +* @param string Min_DB to use +* @return array array($key_name => array("type" => , "columns" => array(), "lengths" => array())) +*/ function indexes($table, $dbh2 = null) { global $dbh; if (!is_object($dbh2)) { // use the main connection if the separate connection is unavailable @@ -233,6 +256,10 @@ return $return; } +/** Get foreign keys in table +* @param string +* @return array array($name => array("db" => , "table" => , "source" => array(), "target" => array(), "on_delete" => , "on_update" => )) +*/ function foreign_keys($table) { global $dbh, $on_actions; static $pattern = '(?:[^`]|``)+'; @@ -257,11 +284,18 @@ return $return; } +/** Get view SELECT +* @param string +* @return array array("select" => ) +*/ function view($name) { global $dbh; return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1))); } +/** Get sorted grouped list of collations +* @return array +*/ function collations() { global $dbh; $return = array(); @@ -276,11 +310,19 @@ return $return; } +/** Escape string to use inside '' +* @param string +* @return string +*/ function escape_string($val) { global $dbh; return substr($dbh->quote($val), 1, -1); } +/** Find out if database is information_schema +* @param string +* @return bool +*/ function information_schema($db) { global $dbh; return ($dbh->server_info >= 5 && $db == "information_schema"); Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-31 07:58:03 UTC (rev 1051) +++ trunk/adminer/sql.inc.php 2009-08-31 10:11:52 UTC (rev 1052) @@ -85,7 +85,7 @@ $offset = strlen($query); } } else { // find matching quote - while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { + while (preg_match("~$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 || $s == $found) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-19 19:48:48
|
Revision: 1116 http://adminer.svn.sourceforge.net/adminer/?rev=1116&view=rev Author: jakubvrana Date: 2009-09-19 19:48:40 +0000 (Sat, 19 Sep 2009) Log Message: ----------- Maximum width of type with foreign keys Modified Paths: -------------- trunk/adminer/default.css trunk/adminer/include/editing.inc.php Modified: trunk/adminer/default.css =================================================================== --- trunk/adminer/default.css 2009-09-19 19:37:39 UTC (rev 1115) +++ trunk/adminer/default.css 2009-09-19 19:48:40 UTC (rev 1116) @@ -30,6 +30,7 @@ .odd td { background: #F5F5F5; } .time { color: Silver; font-size: 70%; float: right; margin-top: -3em; } .function { text-align: right; } +.type { width: 15ex; width: auto\9; } #menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; } #menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; } #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; } Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-09-19 19:37:39 UTC (rev 1115) +++ trunk/adminer/include/editing.inc.php 2009-09-19 19:48:40 UTC (rev 1116) @@ -97,7 +97,7 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) { global $structured_types, $unsigned, $inout; ?> -<td><select name="<?php echo $key; ?>[type]" onchange="editing_type_change(this);"><?php echo optionlist($structured_types + ($foreign_keys ? array(lang('Foreign keys') => $foreign_keys) : array()), $field["type"]); // foreign keys can be wide but style="width: 15ex;" narrows expanded optionlist in IE too ?></select> +<td><select name="<?php echo $key; ?>[type]" class="type" onchange="editing_type_change(this);"><?php echo optionlist($structured_types + ($foreign_keys ? array(lang('Foreign keys') => $foreign_keys) : array()), $field["type"]); // foreign keys can be wide but style="width: 15ex;" narrows expanded optionlist in IE too ?></select> <td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3"> <td><?php echo "<select name='$key" . "[collation]'" . (ereg('(char|text|enum|set)$', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-13 19:33:57
|
Revision: 1188 http://adminer.svn.sourceforge.net/adminer/?rev=1188&view=rev Author: jakubvrana Date: 2009-10-13 19:33:50 +0000 (Tue, 13 Oct 2009) Log Message: ----------- Inform about dropped routine, trigger and view Modified Paths: -------------- trunk/adminer/include/editing.inc.php trunk/adminer/procedure.inc.php trunk/adminer/trigger.inc.php trunk/adminer/view.inc.php Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-10-13 19:32:49 UTC (rev 1187) +++ trunk/adminer/include/editing.inc.php 2009-10-13 19:33:50 UTC (rev 1188) @@ -275,3 +275,15 @@ } return queries("$grant " . preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$columns, ", $privileges) . $columns) . $on); } + +function drop_create($drop, $create, $location, $message_drop, $message_alter, $message_create, $name) { + if ($_POST["drop"]) { + return query_redirect($drop, $location, $message_drop, true, !$_POST["dropped"]); + } + $dropped = strlen($name) && ($_POST["dropped"] || queries($drop)); + $created = queries($create); + if (!query_redirect(queries(), $location, (strlen($name) ? $message_alter : $message_create), $created, false, !$created) && $dropped) { + $_SESSION["messages"][] = $message_drop; + } + return $dropped; +} Modified: trunk/adminer/procedure.inc.php =================================================================== --- trunk/adminer/procedure.inc.php 2009-10-13 19:32:49 UTC (rev 1187) +++ trunk/adminer/procedure.inc.php 2009-10-13 19:33:50 UTC (rev 1188) @@ -4,24 +4,23 @@ $dropped = false; if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) { - if (strlen($PROCEDURE)) { - $dropped = query_redirect("DROP $routine " . idf_escape($PROCEDURE), substr(ME, 0, -1), lang('Routine has been dropped.'), $_POST["drop"], !$_POST["dropped"]); - } - if (!$_POST["drop"]) { - $set = array(); - $fields = (array) $_POST["fields"]; - ksort($fields); // enforce fields order - foreach ($fields as $field) { - if (strlen($field["field"])) { - $set[] = (in_array($field["inout"], $inout) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET"); - } + $set = array(); + $fields = (array) $_POST["fields"]; + ksort($fields); // enforce fields order + foreach ($fields as $field) { + if (strlen($field["field"])) { + $set[] = (in_array($field["inout"], $inout) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET"); } - query_redirect("CREATE $routine " . idf_escape($_POST["name"]) - . " (" . implode(", ", $set) . ")" - . (isset($_GET["function"]) ? " RETURNS" . process_type($_POST["returns"], "CHARACTER SET") : "") - . "\n$_POST[definition]" - , substr(ME, 0, -1), (strlen($PROCEDURE) ? lang('Routine has been altered.') : lang('Routine has been created.'))); } + $dropped = drop_create( + "DROP $routine " . idf_escape($PROCEDURE), + "CREATE $routine " . idf_escape($_POST["name"]) . " (" . implode(", ", $set) . ")" . (isset($_GET["function"]) ? " RETURNS" . process_type($_POST["returns"], "CHARACTER SET") : "") . "\n$_POST[definition]", + substr(ME, 0, -1), + lang('Routine has been dropped.'), + lang('Routine has been altered.'), + lang('Routine has been created.'), + $PROCEDURE + ); } page_header((strlen($PROCEDURE) ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . h($PROCEDURE) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error); @@ -42,7 +41,7 @@ <form action="" method="post" id="form"> <table cellspacing="0"> <?php edit_fields($row["fields"], $collations, $routine); ?> -<?php if (isset($_GET["function"])) { ?><tr><td><?php echo lang('Return type') . edit_type("returns", $row["returns"], $collations); ?><?php } ?> +<?php if (isset($_GET["function"])) { ?><tr><td><?php echo lang('Return type'); edit_type("returns", $row["returns"], $collations); ?><?php } ?> </table> <p><textarea name="definition" rows="10" cols="80" style="width: 98%;"><?php echo h($row["definition"]); ?></textarea> <p> Modified: trunk/adminer/trigger.inc.php =================================================================== --- trunk/adminer/trigger.inc.php 2009-10-13 19:32:49 UTC (rev 1187) +++ trunk/adminer/trigger.inc.php 2009-10-13 19:33:50 UTC (rev 1188) @@ -4,15 +4,16 @@ $trigger_event = array("INSERT", "UPDATE", "DELETE"); $dropped = false; -if ($_POST && !$error) { - if (strlen($_GET["name"])) { - $dropped = query_redirect("DROP TRIGGER " . idf_escape($_GET["name"]), ME . "table=" . urlencode($TABLE), lang('Trigger has been dropped.'), $_POST["drop"], !$_POST["dropped"]); - } - if (!$_POST["drop"]) { - if (in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event)) { - query_redirect("CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($TABLE) . " FOR EACH ROW\n$_POST[Statement]", ME . "table=" . urlencode($TABLE), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.'))); - } - } +if ($_POST && !$error && in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event)) { + $dropped = drop_create( + "DROP TRIGGER " . idf_escape($_GET["name"]), + "CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($TABLE) . " FOR EACH ROW\n$_POST[Statement]", + ME . "table=" . urlencode($TABLE), + lang('Trigger has been dropped.'), + lang('Trigger has been altered.'), + lang('Trigger has been created.'), + $_GET["name"] + ); } page_header((strlen($_GET["name"]) ? lang('Alter trigger') . ": " . h($_GET["name"]) : lang('Create trigger')), $error, array("table" => $TABLE)); Modified: trunk/adminer/view.inc.php =================================================================== --- trunk/adminer/view.inc.php 2009-10-13 19:32:49 UTC (rev 1187) +++ trunk/adminer/view.inc.php 2009-10-13 19:33:50 UTC (rev 1188) @@ -2,10 +2,15 @@ $TABLE = $_GET["view"]; $dropped = false; if ($_POST && !$error) { - if (strlen($TABLE)) { - $dropped = query_redirect("DROP VIEW " . idf_escape($TABLE), substr(ME, 0, -1), lang('View has been dropped.'), false, !$_POST["dropped"]); - } - query_redirect("CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", ME . "table=" . urlencode($_POST["name"]), (strlen($TABLE) ? lang('View has been altered.') : lang('View has been created.'))); + $dropped = drop_create( + "DROP VIEW " . idf_escape($TABLE), + "CREATE VIEW " . idf_escape($_POST["name"]) . " AS\n$_POST[select]", + substr(ME, 0, -1), + lang('View has been dropped.'), + lang('View has been altered.'), + lang('View has been created.'), + $TABLE + ); } page_header((strlen($TABLE) ? lang('Alter view') : lang('Create view')), $error, array("table" => $TABLE), $TABLE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-13 19:43:42
|
Revision: 1189 http://adminer.svn.sourceforge.net/adminer/?rev=1189&view=rev Author: jakubvrana Date: 2009-10-13 19:43:33 +0000 (Tue, 13 Oct 2009) Log Message: ----------- Move whitespace to CSS Modified Paths: -------------- trunk/adminer/include/editing.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php trunk/adminer/static/default.css Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-10-13 19:33:50 UTC (rev 1188) +++ trunk/adminer/include/editing.inc.php 2009-10-13 19:43:33 UTC (rev 1189) @@ -56,7 +56,7 @@ } elseif (!strlen($val)) { $val = " "; // some content to print a border } else { - $val = whitespace(h($val)); + $val = h($val); if ($types[$key] == 254) { $val = "<code>$val</code>"; } @@ -188,7 +188,7 @@ echo " <input type='image' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>"; echo " <input type='image' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'>"; echo " <input type='image' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'>"; - echo "\n\n"; + echo "\n"; } return $column_comments; } Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-10-13 19:33:50 UTC (rev 1188) +++ trunk/adminer/include/functions.inc.php 2009-10-13 19:43:33 UTC (rev 1189) @@ -43,14 +43,6 @@ return htmlspecialchars($string, ENT_QUOTES); } -/** Convert text whitespace to HTML -* @param string -* @return string -*/ -function whitespace($string) { - return nl2br(preg_replace('~(^| ) ~m', '\\1 ', str_replace("\t", " ", $string))); -} - /** Escape for TD * @param string * @return string Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-10-13 19:33:50 UTC (rev 1188) +++ trunk/adminer/select.inc.php 2009-10-13 19:43:33 UTC (rev 1189) @@ -212,9 +212,9 @@ if (!strlen($val)) { $val = " "; } elseif (strlen($text_length) && ereg('text|blob', $field["type"]) && is_utf8($val)) { - $val = whitespace(shorten_utf8($val, max(0, intval($text_length)))); // usage of LEFT() would reduce traffic but complicate query + $val = shorten_utf8($val, max(0, intval($text_length))); // usage of LEFT() would reduce traffic but complicate query } else { - $val = whitespace(h($val)); + $val = h($val); } if (!$link) { // link related items Modified: trunk/adminer/static/default.css =================================================================== --- trunk/adminer/static/default.css 2009-10-13 19:33:50 UTC (rev 1188) +++ trunk/adminer/static/default.css 2009-10-13 19:43:33 UTC (rev 1189) @@ -18,7 +18,7 @@ tr:hover td, tr:hover th { background: #ddf; } .version { color: #777; font-size: 67%; } .js .hidden { display: none; } -.nowrap { white-space: nowrap; } +.nowrap { white-space: pre; } .wrap { white-space: normal; } .error { color: red; background: #fee; } .message { color: green; background: #efe; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-28 13:43:02
|
Revision: 1219 http://adminer.svn.sourceforge.net/adminer/?rev=1219&view=rev Author: jakubvrana Date: 2009-10-28 13:42:51 +0000 (Wed, 28 Oct 2009) Log Message: ----------- Spaces Modified Paths: -------------- trunk/adminer/database.inc.php trunk/adminer/include/adminer.inc.php trunk/adminer/include/lang.inc.php Modified: trunk/adminer/database.inc.php =================================================================== --- trunk/adminer/database.inc.php 2009-10-28 12:21:21 UTC (rev 1218) +++ trunk/adminer/database.inc.php 2009-10-28 13:42:51 UTC (rev 1219) @@ -65,7 +65,7 @@ ) . "\n"; ?> <?php echo html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate); ?> <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 if (!$_POST["add_x"]) { echo "<input type='image' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n"; Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-10-28 12:21:21 UTC (rev 1218) +++ trunk/adminer/include/adminer.inc.php 2009-10-28 13:42:51 UTC (rev 1219) @@ -486,7 +486,7 @@ <?php if (isset($_GET["sql"])) { ?><input type="hidden" name="sql" value=""><?php } ?> <?php if (isset($_GET["schema"])) { ?><input type="hidden" name="schema" value=""><?php } ?> <?php if (isset($_GET["dump"])) { ?><input type="hidden" name="dump" value=""><?php } ?> -<input type="submit" value="<?php echo lang('Use'); ?>"<?php echo ($databases ? " class='hidden'" : ""); ?>> + <input type="submit" value="<?php echo lang('Use'); ?>"<?php echo ($databases ? " class='hidden'" : ""); ?>> </p> </form> <?php Modified: trunk/adminer/include/lang.inc.php =================================================================== --- trunk/adminer/include/lang.inc.php 2009-10-28 12:21:21 UTC (rev 1218) +++ trunk/adminer/include/lang.inc.php 2009-10-28 13:42:51 UTC (rev 1219) @@ -33,7 +33,7 @@ echo "<form action=''>\n<div id='lang'>"; hidden_fields($_GET, array('lang')); echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();"); - echo "<noscript><div style='display: inline;'><input type='submit' value='" . lang('Use') . "'></div></noscript>\n"; + echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n"; echo "</div>\n</form>\n"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-10-30 16:48:26
|
Revision: 1222 http://adminer.svn.sourceforge.net/adminer/?rev=1222&view=rev Author: jakubvrana Date: 2009-10-30 16:48:18 +0000 (Fri, 30 Oct 2009) Log Message: ----------- Remove number of tables (slow) Modified Paths: -------------- trunk/adminer/database.inc.php trunk/adminer/include/connect.inc.php Modified: trunk/adminer/database.inc.php =================================================================== --- trunk/adminer/database.inc.php 2009-10-30 16:25:36 UTC (rev 1221) +++ trunk/adminer/database.inc.php 2009-10-30 16:48:18 UTC (rev 1222) @@ -23,6 +23,7 @@ } if (!$row) { queries("DROP DATABASE " . idf_escape(DB)); + //! saved to history of removed database } queries_redirect(preg_replace('~db=[^&]*&~', '', ME) . "db=" . urlencode($_POST["name"]), lang('Database has been renamed.'), !$row); } Modified: trunk/adminer/include/connect.inc.php =================================================================== --- trunk/adminer/include/connect.inc.php 2009-10-30 16:25:36 UTC (rev 1221) +++ trunk/adminer/include/connect.inc.php 2009-10-30 16:48:18 UTC (rev 1222) @@ -31,14 +31,12 @@ $collations = collations(); echo "<form action='' method='post'>\n"; echo "<table cellspacing='0' onclick='table_click(event);'>\n"; - echo "<thead><tr><td><input type='hidden' name='token' value='$token'> <th>" . lang('Database') . "<td>" . lang('Collation') . "<td>" . lang('Tables') . "</thead>\n"; + echo "<thead><tr><td><input type='hidden' name='token' value='$token'> <th>" . lang('Database') . "<td>" . lang('Collation') . "</thead>\n"; foreach ($databases as $db) { $root = h(ME) . "db=" . urlencode($db); echo "<tr" . odd() . "><td>" . checkbox("db[]", $db, false); echo "<th><a href='$root'>" . h($db) . "</a>"; echo "<td><a href='$root&database='>" . nbsp(db_collation($db, $collations)) . "</a>"; - $result = $connection->query("SHOW TABLES FROM " . idf_escape($db)); - echo "<td align='right'><a href='$root&schema='>$result->num_rows</a>"; echo "\n"; } echo "</table>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-17 15:31:31
|
Revision: 1276 http://adminer.svn.sourceforge.net/adminer/?rev=1276&view=rev Author: jakubvrana Date: 2009-12-17 15:31:24 +0000 (Thu, 17 Dec 2009) Log Message: ----------- Simplify SQL syntax errors everywhere Modified Paths: -------------- trunk/adminer/call.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/include/mysql.inc.php trunk/adminer/select.inc.php trunk/adminer/sql.inc.php trunk/adminer/table.inc.php Modified: trunk/adminer/call.inc.php =================================================================== --- trunk/adminer/call.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/call.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -30,7 +30,7 @@ } $result = $connection->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")"); if (!$result) { - echo "<p class='error'>" . h($connection->error) . "\n"; + echo "<p class='error'>" . error() . "\n"; } else { do { $result = $connection->store_result(); Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/include/functions.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -246,7 +246,7 @@ $sql = $adminer->messageQuery($query); } if ($failed) { - $error = h($connection->error) . $sql; + $error = error() . $sql; return false; } if ($redirect) { Modified: trunk/adminer/include/mysql.inc.php =================================================================== --- trunk/adminer/include/mysql.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/include/mysql.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -372,6 +372,14 @@ return ($connection->server_info >= 5 && $db == "information_schema"); } +/** Get escaped error message +* @return string +*/ +function error() { + global $connection; + return h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $connection->error)); +} + /** Return expression for binary comparison * @param string * @return string Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/select.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -144,7 +144,7 @@ $adminer->selectLinks($table_status, $set); if (!$columns) { - echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . h($connection->error)) . ".\n"; + echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . error()) . ".\n"; } else { echo "<form action='' id='form'>\n"; echo "<div style='display: none;'>"; @@ -165,7 +165,7 @@ $result = $connection->query($query); if (!$result) { - echo "<p class='error'>" . h($connection->error) . "\n"; + echo "<p class='error'>" . error() . "\n"; } else { $email_fields = array(); echo "<form action='' method='post' enctype='multipart/form-data'>\n"; Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/sql.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -63,7 +63,7 @@ $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 //! don't allow changing of character_set_results, convert encoding of displayed query if (!$connection->multi_query($q)) { - echo "<p class='error'>" . lang('Error in query') . ": " . h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $connection->error)) . "\n"; + echo "<p class='error'>" . lang('Error in query') . ": " . error() . "\n"; if ($_POST["error_stops"]) { break; } Modified: trunk/adminer/table.inc.php =================================================================== --- trunk/adminer/table.inc.php 2009-12-17 14:53:26 UTC (rev 1275) +++ trunk/adminer/table.inc.php 2009-12-17 15:31:24 UTC (rev 1276) @@ -2,7 +2,7 @@ $TABLE = $_GET["table"]; $fields = fields($TABLE); if (!$fields) { - $error = h($connection->error); + $error = error(); } $table_status = ($fields ? table_status($TABLE) : array()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-09 16:48:46
|
Revision: 1306 http://adminer.svn.sourceforge.net/adminer/?rev=1306&view=rev Author: jakubvrana Date: 2010-02-09 16:48:40 +0000 (Tue, 09 Feb 2010) Log Message: ----------- Allow editing of auto_increment value Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/db.inc.php Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2010-02-09 16:28:34 UTC (rev 1305) +++ trunk/adminer/create.inc.php 2010-02-09 16:48:40 UTC (rev 1306) @@ -70,7 +70,7 @@ $status = "COMMENT=" . $connection->quote($_POST["Comment"]) . ($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? " ENGINE=" . $connection->quote($_POST["Engine"]) : "") . ($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? " COLLATE " . $connection->quote($_POST["Collation"]) : "") - . ($_POST["auto_increment"] != "" ? " AUTO_INCREMENT=" . preg_replace('~[^0-9]+~', '', $_POST["auto_increment"]) : "") + . ($_POST["Auto_increment"] != "" ? " AUTO_INCREMENT=" . preg_replace('~[^0-9]+~', '', $_POST["Auto_increment"]) : "") ; if (in_array($_POST["partition_by"], $partition_by)) { $partitions = array(); @@ -113,6 +113,9 @@ $row = $orig_status; $row["name"] = $TABLE; $row["fields"] = array(); + if (!$_GET["auto_increment"]) { // don't prefill by original Auto_increment for the sake of performance and not reusing deleted ids + $row["Auto_increment"] = ""; + } foreach ($orig_fields as $field) { $field["has_default"] = isset($field["default"]); if ($field["on_update"]) { @@ -162,7 +165,7 @@ <?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin, $foreign_keys); ?> </table> <p> -<?php echo lang('Auto Increment'); ?>: <input name="auto_increment" size="6" value="<?php echo h($row["auto_increment"]); // don't prefill by original Auto_increment for the sake of performance and not reusing deleted ids ?>"> +<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>"> <?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo h($row["Comment"]); ?>" maxlength="60"> <script type="text/javascript"> document.write('<label><input type="checkbox" onclick="columnShow(this.checked, 5);"><?php echo lang('Default values'); ?><\/label>'); Modified: trunk/adminer/db.inc.php =================================================================== --- trunk/adminer/db.inc.php 2010-02-09 16:28:34 UTC (rev 1305) +++ trunk/adminer/db.inc.php 2010-02-09 16:48:40 UTC (rev 1306) @@ -56,7 +56,7 @@ echo '<th><a href="' . h(ME) . 'table=' . urlencode($name) . '">' . h($name) . '</a>'; if (isset($row["Rows"])) { echo "<td>$row[Engine]<td>$row[Collation]"; - foreach (array("Data_length" => "create", "Index_length" => "indexes", "Data_free" => "edit", "Auto_increment" => "create", "Rows" => "select") as $key => $link) { + foreach (array("Data_length" => "create", "Index_length" => "indexes", "Data_free" => "edit", "Auto_increment" => "auto_increment=1&create", "Rows" => "select") as $key => $link) { $val = number_format($row[$key], 0, '.', lang(',')); echo '<td align="right">' . ($row[$key] != "" ? '<a href="' . h(ME . "$link=") . urlencode($name) . '">' . str_replace(" ", " ", ($key == "Rows" && $row["Engine"] == "InnoDB" && $val ? lang('~ %s', $val) : $val)) . '</a>' : ' '); $sums[$link] += ($row["Engine"] != "InnoDB" || $link != "edit" ? $row[$key] : 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-02-17 16:47:57
|
Revision: 1316 http://adminer.svn.sourceforge.net/adminer/?rev=1316&view=rev Author: jakubvrana Date: 2010-02-17 16:47:50 +0000 (Wed, 17 Feb 2010) Log Message: ----------- Update translations Modified Paths: -------------- trunk/adminer/include/editing.inc.php trunk/adminer/include/export.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/include/lang.inc.php trunk/adminer/lang/de.inc.php trunk/adminer/lang/es.inc.php trunk/adminer/lang/et.inc.php trunk/adminer/lang/nl.inc.php trunk/adminer/lang/ru.inc.php trunk/adminer/lang/sk.inc.php trunk/adminer/lang/zh-tw.inc.php Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/include/editing.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -112,7 +112,7 @@ <td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"> <td><?php echo "<select name='$key" . "[collation]'" . (ereg('(char|text|enum|set)$', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>'; - echo ($unsigned ? " <select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('(int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); + echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('(int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); } /** Filter length value including enums Modified: trunk/adminer/include/export.inc.php =================================================================== --- trunk/adminer/include/export.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/include/export.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -167,7 +167,7 @@ } function dump_headers($identifier, $multi_table = false) { - $filename = ($identifier != "" ? friendly_url($identifier) : "dump"); + $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: " . Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/include/functions.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -490,7 +490,7 @@ foreach (table_status() as $table => $table_status) { $name = $adminer->tableName($table_status); if (isset($table_status["Engine"]) && $name != "" && (!$_POST["tables"] || in_array($table, $_POST["tables"]))) { - $result = $connection->query($q = "SELECT 1 FROM " . idf_escape($table) . " WHERE " . implode(" AND ", $adminer->selectSearchProcess(fields($table), array())) . " LIMIT 1"); + $result = $connection->query("SELECT 1 FROM " . idf_escape($table) . " WHERE " . implode(" AND ", $adminer->selectSearchProcess(fields($table), array())) . " LIMIT 1"); if ($result->num_rows) { if (!$found) { echo "<ul>\n"; Modified: trunk/adminer/include/lang.inc.php =================================================================== --- trunk/adminer/include/lang.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/include/lang.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -4,7 +4,7 @@ $langs = array( 'en' => 'English', // Jakub Vrána - http://php.vrana.cz 'cs' => 'Čeština', // Jakub Vrána - http://php.vrana.cz - 'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com + 'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com, Juraj Krivda - http://www.jstudio.cz 'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be 'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com 'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com Modified: trunk/adminer/lang/de.inc.php =================================================================== --- trunk/adminer/lang/de.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/de.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ '%d e-mail(s) have been sent.' => array('%d e-mail abgeschickt.', '%d e-mails abgeschickt.'), 'Webserver file %s' => 'Webserver Datei %s', 'File does not exist.' => 'Datei existiert nicht.', + '%d in total' => '%d insgesamt', + 'Permanent login' => 'Passwort speichern', ); Modified: trunk/adminer/lang/es.inc.php =================================================================== --- trunk/adminer/lang/es.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/es.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ '%d e-mail(s) have been sent.' => array('%d email enviado.', '%d emails enviados.'), 'Webserver file %s' => 'Archivo de servidor web %s', 'File does not exist.' => 'Archivo no existe.', + '%d in total' => '%d en total', + 'Permanent login' => 'Guardar contraseña', ); Modified: trunk/adminer/lang/et.inc.php =================================================================== --- trunk/adminer/lang/et.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/et.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ '%d e-mail(s) have been sent.' => array('Saadetud kirju: %d.', 'Saadetud kirju: %d.'), 'Webserver file %s' => 'Fail serveris: %s', 'File does not exist.' => 'Faili ei leitud.', + '%d in total' => 'Kokku: %d', + 'Permanent login' => 'Jäta mind meelde', ); Modified: trunk/adminer/lang/nl.inc.php =================================================================== --- trunk/adminer/lang/nl.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/nl.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ '%d e-mail(s) have been sent.' => array('%d e-mail verzonden.', '%d e-mails verzonden.'), 'Webserver file %s' => 'Webserver bestand %s', 'File does not exist.' => 'Bestand niet gevonden.', + '%d in total' => '%d in totaal', + 'Permanent login' => 'Blijf aangemeld', ); Modified: trunk/adminer/lang/ru.inc.php =================================================================== --- trunk/adminer/lang/ru.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/ru.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ '%d e-mail(s) have been sent.' => array('Было отправлено %d письмо.', 'Было отправлено %d письма.', 'Было отправлено %d писем.'), 'Webserver file %s' => 'Файл %s на вебсервере', 'File does not exist.' => 'Такого файла не существует.', + '%d in total' => 'Всего %d', + 'Permanent login' => 'Оставаться в системе', ); Modified: trunk/adminer/lang/sk.inc.php =================================================================== --- trunk/adminer/lang/sk.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/sk.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ 'Editor' => 'Editor', 'Webserver file %s' => 'Súbor %s na webovom serveri', 'File does not exist.' => 'Súbor neexistuje.', + 'Permanent login' => 'Trvalé prihlásenie', + '%d in total' => '%d celkom', ); Modified: trunk/adminer/lang/zh-tw.inc.php =================================================================== --- trunk/adminer/lang/zh-tw.inc.php 2010-02-17 16:24:44 UTC (rev 1315) +++ trunk/adminer/lang/zh-tw.inc.php 2010-02-17 16:47:50 UTC (rev 1316) @@ -226,4 +226,6 @@ 'Webserver file %s' => '網頁伺服器檔案 %s', 'File does not exist.' => '檔案不存在', 'Item has been deleted.' => '該項目已被刪除', + '%d in total' => '總共 %d 個', + 'Permanent login' => '永久登入', ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-03-01 22:59:15
|
Revision: 1336 http://adminer.svn.sourceforge.net/adminer/?rev=1336&view=rev Author: jakubvrana Date: 2010-03-01 22:59:08 +0000 (Mon, 01 Mar 2010) Log Message: ----------- Revert drop removal (r887, r1195) Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/database.inc.php trunk/adminer/lang/cs.inc.php trunk/adminer/lang/de.inc.php trunk/adminer/lang/es.inc.php trunk/adminer/lang/et.inc.php trunk/adminer/lang/fr.inc.php trunk/adminer/lang/it.inc.php trunk/adminer/lang/nl.inc.php trunk/adminer/lang/ru.inc.php trunk/adminer/lang/sk.inc.php trunk/adminer/lang/zh.inc.php Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/create.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -16,84 +16,88 @@ } if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) { - $auto_increment_index = " PRIMARY KEY"; - // don't overwrite primary key by auto_increment - if ($TABLE != "" && $_POST["auto_increment_col"]) { - foreach (indexes($TABLE) as $index) { - if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $index["columns"], true)) { - $auto_increment_index = ""; - break; + if ($_POST["drop"]) { + query_redirect("DROP TABLE " . idf_escape($_GET["create"]), substr(ME, 0, -1), lang('Table has been dropped.')); + } else { + $auto_increment_index = " PRIMARY KEY"; + // don't overwrite primary key by auto_increment + if ($TABLE != "" && $_POST["auto_increment_col"]) { + foreach (indexes($TABLE) as $index) { + if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $index["columns"], true)) { + $auto_increment_index = ""; + break; + } + if ($index["type"] == "PRIMARY") { + $auto_increment_index = " UNIQUE"; + } } - if ($index["type"] == "PRIMARY") { - $auto_increment_index = " UNIQUE"; + } + $fields = ""; + ksort($_POST["fields"]); + $orig_field = reset($orig_fields); + $after = "FIRST"; + foreach ($_POST["fields"] as $key => $field) { + $type_field = (isset($types[$field["type"]]) ? $field : $referencable_primary[$foreign_keys[$field["type"]]]); + if ($field["field"] != "") { + if ($type_field) { + $default = eregi_replace(" *on update CURRENT_TIMESTAMP", "", $field["default"]); + if ($default != $field["default"]) { // preg_replace $count is available since PHP 5.1.0 + $field["on_update"] = "CURRENT_TIMESTAMP"; + $field["default"] = $default; + } + if (!$field["has_default"]) { + $field["default"] = null; + } + $process_field = process_field($field, $type_field); + $auto_increment = ($key == $_POST["auto_increment_col"]); + if ($process_field != process_field($orig_field, $orig_field) || $orig_field["auto_increment"] != $auto_increment) { + $fields .= "\n" . ($TABLE != "" ? ($field["orig"] != "" ? "CHANGE " . idf_escape($field["orig"]) : "ADD") : " ") + . " $process_field" + . ($auto_increment ? " AUTO_INCREMENT$auto_increment_index" : "") + . ($TABLE != "" ? " $after" : "") . "," + ; + } + if (!isset($types[$field["type"]])) { + $fields .= ($TABLE != "" ? "\nADD" : "") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . idf_escape($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . "),"; + } + } + $after = "AFTER " . idf_escape($field["field"]); + //! drop and create foreign keys with renamed columns + } elseif ($field["orig"] != "") { + $fields .= "\nDROP " . idf_escape($field["orig"]) . ","; } + if ($field["orig"] != "") { + $orig_field = next($orig_fields); + } } - } - $fields = ""; - ksort($_POST["fields"]); - $orig_field = reset($orig_fields); - $after = "FIRST"; - foreach ($_POST["fields"] as $key => $field) { - $type_field = (isset($types[$field["type"]]) ? $field : $referencable_primary[$foreign_keys[$field["type"]]]); - if ($field["field"] != "") { - if ($type_field) { - $default = eregi_replace(" *on update CURRENT_TIMESTAMP", "", $field["default"]); - if ($default != $field["default"]) { // preg_replace $count is available since PHP 5.1.0 - $field["on_update"] = "CURRENT_TIMESTAMP"; - $field["default"] = $default; + $status = "COMMENT=" . $connection->quote($_POST["Comment"]) + . ($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? " ENGINE=" . $connection->quote($_POST["Engine"]) : "") + . ($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? " COLLATE " . $connection->quote($_POST["Collation"]) : "") + . ($_POST["Auto_increment"] != "" ? " AUTO_INCREMENT=" . preg_replace('~[^0-9]+~', '', $_POST["Auto_increment"]) : "") + ; + if (in_array($_POST["partition_by"], $partition_by)) { + $partitions = array(); + if ($_POST["partition_by"] == 'RANGE' || $_POST["partition_by"] == 'LIST') { + foreach (array_filter($_POST["partition_names"]) as $key => $val) { + $value = $_POST["partition_values"][$key]; + $partitions[] = "\nPARTITION " . idf_escape($val) . " VALUES " . ($_POST["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($value != "" ? " ($value)" : " MAXVALUE"); //! SQL injection } - if (!$field["has_default"]) { - $field["default"] = null; - } - $process_field = process_field($field, $type_field); - $auto_increment = ($key == $_POST["auto_increment_col"]); - if ($process_field != process_field($orig_field, $orig_field) || $orig_field["auto_increment"] != $auto_increment) { - $fields .= "\n" . ($TABLE != "" ? ($field["orig"] != "" ? "CHANGE " . idf_escape($field["orig"]) : "ADD") : " ") - . " $process_field" - . ($auto_increment ? " AUTO_INCREMENT$auto_increment_index" : "") - . ($TABLE != "" ? " $after" : "") . "," - ; - } - if (!isset($types[$field["type"]])) { - $fields .= ($TABLE != "" ? "\nADD" : "") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . idf_escape($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . "),"; - } } - $after = "AFTER " . idf_escape($field["field"]); - //! drop and create foreign keys with renamed columns - } elseif ($field["orig"] != "") { - $fields .= "\nDROP " . idf_escape($field["orig"]) . ","; + $status .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions // $_POST["partition"] can be expression, not only column + ? " (" . implode(",", $partitions) . "\n)" + : ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : "") + ); + } elseif ($connection->server_info >= 5.1 && $TABLE != "") { + $status .= "\nREMOVE PARTITIONING"; } - if ($field["orig"] != "") { - $orig_field = next($orig_fields); + $location = ME . "table=" . urlencode($_POST["name"]); + if ($TABLE != "") { + query_redirect("ALTER TABLE " . idf_escape($TABLE) . "$fields\nRENAME TO " . idf_escape($_POST["name"]) . ",\n$status", $location, lang('Table has been altered.')); + } else { + cookie("adminer_engine", $_POST["Engine"]); + query_redirect("CREATE TABLE " . idf_escape($_POST["name"]) . " (" . substr($fields, 0, -1) . "\n) $status", $location, lang('Table has been created.')); } } - $status = "COMMENT=" . $connection->quote($_POST["Comment"]) - . ($_POST["Engine"] && $_POST["Engine"] != $orig_status["Engine"] ? " ENGINE=" . $connection->quote($_POST["Engine"]) : "") - . ($_POST["Collation"] && $_POST["Collation"] != $orig_status["Collation"] ? " COLLATE " . $connection->quote($_POST["Collation"]) : "") - . ($_POST["Auto_increment"] != "" ? " AUTO_INCREMENT=" . preg_replace('~[^0-9]+~', '', $_POST["Auto_increment"]) : "") - ; - if (in_array($_POST["partition_by"], $partition_by)) { - $partitions = array(); - if ($_POST["partition_by"] == 'RANGE' || $_POST["partition_by"] == 'LIST') { - foreach (array_filter($_POST["partition_names"]) as $key => $val) { - $value = $_POST["partition_values"][$key]; - $partitions[] = "\nPARTITION " . idf_escape($val) . " VALUES " . ($_POST["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($value != "" ? " ($value)" : " MAXVALUE"); //! SQL injection - } - } - $status .= "\nPARTITION BY $_POST[partition_by]($_POST[partition])" . ($partitions // $_POST["partition"] can be expression, not only column - ? " (" . implode(",", $partitions) . "\n)" - : ($_POST["partitions"] ? " PARTITIONS " . intval($_POST["partitions"]) : "") - ); - } elseif ($connection->server_info >= 5.1 && $TABLE != "") { - $status .= "\nREMOVE PARTITIONING"; - } - $location = ME . "table=" . urlencode($_POST["name"]); - if ($TABLE != "") { - query_redirect("ALTER TABLE " . idf_escape($TABLE) . "$fields\nRENAME TO " . idf_escape($_POST["name"]) . ",\n$status", $location, lang('Table has been altered.')); - } else { - cookie("adminer_engine", $_POST["Engine"]); - query_redirect("CREATE TABLE " . idf_escape($_POST["name"]) . " (" . substr($fields, 0, -1) . "\n) $status", $location, lang('Table has been created.')); - } } page_header(($TABLE != "" ? lang('Alter table') : lang('Create table')), $error, array("table" => $TABLE), $TABLE); @@ -174,6 +178,7 @@ <p> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="<?php echo lang('Save'); ?>"> +<?php if (strlen($_GET["create"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo $confirm; ?>><?php } ?> <?php if ($connection->server_info >= 5.1) { $partition_table = ereg('RANGE|LIST', $row["partition_by"]); Modified: trunk/adminer/database.inc.php =================================================================== --- trunk/adminer/database.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/database.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -1,8 +1,11 @@ <?php if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x - if (DB !== $_POST["name"]) { + restart_session(); + if ($_POST["drop"]) { + unset($_SESSION["databases"][$_GET["server"]]); + query_redirect("DROP DATABASE " . idf_escape(DB), remove_from_uri("db|database"), lang('Database has been dropped.')); + } elseif (DB !== $_POST["name"]) { // create or rename database - restart_session(); unset($_SESSION["databases"][$_GET["server"]]); // clear cache $dbs = explode("\n", str_replace("\r", "", $_POST["name"])); $failed = false; @@ -70,7 +73,9 @@ <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="<?php echo lang('Save'); ?>"> <?php -if (!$_POST["add_x"] && $_GET["db"] == "") { +if (strlen(DB)) { + echo "<input type='submit' name='drop' value='" . lang('Drop') . "'$confirm>\n"; +} elseif (!$_POST["add_x"] && $_GET["db"] == "") { echo "<input type='image' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n"; } ?> Modified: trunk/adminer/lang/cs.inc.php =================================================================== --- trunk/adminer/lang/cs.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/cs.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Vybrat databázi', 'Invalid database.' => 'Nesprávná databáze.', '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', Modified: trunk/adminer/lang/de.inc.php =================================================================== --- trunk/adminer/lang/de.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/de.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Datenbank auswählen', 'Invalid database.' => 'Datenbank ungültig.', 'Create new database' => 'Neue Datenbank', + 'Table has been dropped.' => 'Tabelle entfernt.', 'Table has been altered.' => 'Tabelle geändert.', 'Table has been created.' => 'Tabelle erstellt.', 'Alter table' => 'Tabelle ändern', Modified: trunk/adminer/lang/es.inc.php =================================================================== --- trunk/adminer/lang/es.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/es.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Seleccionar Base de datos', 'Invalid database.' => 'Base de datos inválida.', 'Create new database' => 'Nueva Base de datos', + 'Table has been dropped.' => 'Tabla eliminada.', 'Table has been altered.' => 'Tabla modificada.', 'Table has been created.' => 'Tabla creada.', 'Alter table' => 'Modificar Estructura', Modified: trunk/adminer/lang/et.inc.php =================================================================== --- trunk/adminer/lang/et.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/et.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Vali andmebaas', 'Invalid database.' => 'Tundmatu andmebaas.', 'Create new database' => 'Loo uus andmebaas', + 'Table has been dropped.' => 'Tabel on edukalt kustutatud.', 'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.', 'Table has been created.' => 'Tabel on edukalt loodud.', 'Alter table' => 'Muuda tabeli struktuuri', Modified: trunk/adminer/lang/fr.inc.php =================================================================== --- trunk/adminer/lang/fr.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/fr.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -2,14 +2,15 @@ $translations = array( 'Login' => 'Authentification', 'Logout successful.' => 'Aurevoir!', - 'Invalid credentials.' => 'Authentification échouée', + 'Invalid credentials.' => 'Authentification échouée.', 'Server' => 'Serveur', 'Username' => 'Utilisateur', 'Password' => 'Mot de passe', 'Select database' => 'Selectionner la base de donnée', - 'Invalid database.' => 'Base de donnée invalide', + 'Invalid database.' => 'Base de donnée invalide.', 'Create new database' => 'Créer une base de donnée', - 'Table has been altered.' => 'Table modifiée', + 'Table has been dropped.' => 'Table effacée.', + 'Table has been altered.' => 'Table modifiée.', 'Table has been created.' => 'Table créée.', 'Alter table' => 'Modifier la table', 'Create table' => 'Créer une table', @@ -57,7 +58,7 @@ 'Sort' => 'Ordonner', 'descending' => 'décroissant', 'Limit' => 'Limit', - 'No rows.' => 'Aucun résultat', + 'No rows.' => 'Aucun résultat.', 'Action' => 'Action', 'edit' => 'modifier', 'Page' => 'Page', @@ -170,9 +171,9 @@ 'At given time' => 'À un moment précis', 'Save and continue edit' => 'Sauvegarder et continuer l\'édition', 'original' => 'original', - 'Tables have been truncated.' => 'Les tables ont été tronquées', - 'Tables have been moved.' => 'Les tables ont été déplacées', - 'Tables have been dropped.' => 'Les tables ont été effacées', + 'Tables have been truncated.' => 'Les tables ont été tronquées.', + 'Tables have been moved.' => 'Les tables ont été déplacées.', + 'Tables have been dropped.' => 'Les tables ont été effacées.', 'Tables and views' => 'Tables et vues', 'Engine' => 'Moteur', 'Collation' => 'Collation', @@ -191,12 +192,12 @@ '%d item(s) have been affected.' => array('%d élément ont été modifié.', '%d éléments ont été modifié.'), 'whole result' => 'résultat entier', 'Clone' => 'Cloner', - 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Le nombre de champs maximum est dépassé. Veuillez augmenter %s et %s', + 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'Le nombre de champs maximum est dépassé. Veuillez augmenter %s et %s.', 'Partition by' => 'Partitionné par', 'Partitions' => 'Partitions', 'Partition name' => 'Nom de la partition', 'Values' => 'Valeurs', - '%d row(s) have been imported.' => array('%d ligne a été importé','%d lignes ont été importé'), + '%d row(s) have been imported.' => array('%d ligne a été importé.','%d lignes ont été importé.'), 'Show structure' => 'Structure de la table', '(anywhere)' => '(n\'importe où)', 'CSV Import' => 'Importation CVS', Modified: trunk/adminer/lang/it.inc.php =================================================================== --- trunk/adminer/lang/it.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/it.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Seleziona database', 'Invalid database.' => 'Database non valido.', 'Create new database' => 'Crea nuovo database', + 'Table has been dropped.' => 'Tabella eliminata.', 'Table has been altered.' => 'Tabella modificata.', 'Table has been created.' => 'Tabella creata.', 'Alter table' => 'Modifica tabella', Modified: trunk/adminer/lang/nl.inc.php =================================================================== --- trunk/adminer/lang/nl.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/nl.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Database selecteren', 'Invalid database.' => 'Ongeldige database.', 'Create new database' => 'Nieuwe database', + 'Table has been dropped.' => 'Tabel verwijderd.', 'Table has been altered.' => 'Tabel aangepast.', 'Table has been created.' => 'Tabel aangemaakt.', 'Alter table' => 'Tabel aanpassen', Modified: trunk/adminer/lang/ru.inc.php =================================================================== --- trunk/adminer/lang/ru.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/ru.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Выбрать базу данных', 'Invalid database.' => 'Плохая база данных.', 'Create new database' => 'Создать новую базу данных', + 'Table has been dropped.' => 'Таблица была удалена.', 'Table has been altered.' => 'Таблица была изменена.', 'Table has been created.' => 'Таблица была создана.', 'Alter table' => 'Изменить таблицу', Modified: trunk/adminer/lang/sk.inc.php =================================================================== --- trunk/adminer/lang/sk.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/sk.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => 'Vybrať databázu', 'Invalid database.' => 'Nesprávna databáza.', 'Create new database' => 'Vytvoriť novú databázu', + 'Table has been dropped.' => 'Tabuľka bola odstránená.', 'Table has been altered.' => 'Tabuľka bola zmenená.', 'Table has been created.' => 'Tabuľka bola vytvorená.', 'Alter table' => 'Zmeniť tabuľku', Modified: trunk/adminer/lang/zh.inc.php =================================================================== --- trunk/adminer/lang/zh.inc.php 2010-02-26 15:58:29 UTC (rev 1335) +++ trunk/adminer/lang/zh.inc.php 2010-03-01 22:59:08 UTC (rev 1336) @@ -9,6 +9,7 @@ 'Select database' => '选择数据库', 'Invalid database.' => '无效数据库。', 'Create new database' => '创建新数据库', + 'Table has been dropped.' => '已丢弃表。', 'Table has been altered.' => '已更改表。', 'Table has been created.' => '已创建表。', 'Alter table' => '更改表', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-02 13:44:29
|
Revision: 1361 http://adminer.svn.sourceforge.net/adminer/?rev=1361&view=rev Author: jakubvrana Date: 2010-04-02 13:44:23 +0000 (Fri, 02 Apr 2010) Log Message: ----------- Disable default value when changing from timestamp (bug #2935496) Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/static/editing.js Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2010-04-02 13:25:49 UTC (rev 1360) +++ trunk/adminer/create.inc.php 2010-04-02 13:44:23 UTC (rev 1361) @@ -40,14 +40,14 @@ $type_field = (isset($types[$field["type"]]) ? $field : $referencable_primary[$foreign_keys[$field["type"]]]); if ($field["field"] != "") { if ($type_field) { + if (!$field["has_default"]) { + $field["default"] = null; + } $default = eregi_replace(" *on update CURRENT_TIMESTAMP", "", $field["default"]); if ($default != $field["default"]) { // preg_replace $count is available since PHP 5.1.0 $field["on_update"] = "CURRENT_TIMESTAMP"; $field["default"] = $default; } - if (!$field["has_default"]) { - $field["default"] = null; - } $process_field = process_field($field, $type_field); $auto_increment = ($key == $_POST["auto_increment_col"]); if ($process_field != process_field($orig_field, $orig_field) || $orig_field["auto_increment"] != $auto_increment) { Modified: trunk/adminer/static/editing.js =================================================================== --- trunk/adminer/static/editing.js 2010-04-02 13:25:49 UTC (rev 1360) +++ trunk/adminer/static/editing.js 2010-04-02 13:44:23 UTC (rev 1361) @@ -200,6 +200,9 @@ )) { el.value = ''; } + if (lastType == 'timestamp' && el.name == name + '[has_default]' && /timestamp/i.test(formField(type.form, name + '[default]').value)) { + el.checked = false; + } if (el.name == name + '[collation]') { el.className = (/(char|text|enum|set)$/.test(text) ? '' : 'hidden'); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-02 15:27:43
|
Revision: 1363 http://adminer.svn.sourceforge.net/adminer/?rev=1363&view=rev Author: jakubvrana Date: 2010-04-02 15:27:37 +0000 (Fri, 02 Apr 2010) Log Message: ----------- Move time information Modified Paths: -------------- trunk/adminer/sql.inc.php trunk/adminer/static/default.css Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2010-04-02 15:09:15 UTC (rev 1362) +++ trunk/adminer/sql.inc.php 2010-04-02 15:27:37 UTC (rev 1363) @@ -71,16 +71,16 @@ break; } } else { - $end = explode(" ", microtime()); - echo "<p class='time'>" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "</p>\n"; do { $result = $connection->store_result(); + $end = explode(" ", microtime()); + $time = " <span class='time'>(" . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . ")</span>"; if (is_object($result)) { select($result, $connection2); + echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) : "") . $time; if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q)) { $id = "explain-$queries"; - echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) . ", " : ""); - echo "<a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; + echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>\n"; echo "<div id='$id' class='hidden'>\n"; select($connection2->query("EXPLAIN $q")); echo "</div>\n"; @@ -91,9 +91,10 @@ $_SESSION["databases"][$_GET["server"]] = 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) . "\n"; + echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n"; } unset($result); // free resultset + $start = $end; } while ($connection->next_result()); } $query = substr($query, $offset); Modified: trunk/adminer/static/default.css =================================================================== --- trunk/adminer/static/default.css 2010-04-02 15:09:15 UTC (rev 1362) +++ trunk/adminer/static/default.css 2010-04-02 15:27:37 UTC (rev 1363) @@ -29,7 +29,7 @@ .enum { color: #007F7F; } .binary { color: red; } .odd td { background: #F5F5F5; } -.time { color: silver; font-size: 70%; float: right; margin-top: -3em; } +.time { color: silver; font-size: 70%; } .function { text-align: right; } .number { text-align: right; } .datetime { text-align: right; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-15 12:42:37
|
Revision: 1441 http://adminer.svn.sourceforge.net/adminer/?rev=1441&view=rev Author: jakubvrana Date: 2010-04-15 12:42:31 +0000 (Thu, 15 Apr 2010) Log Message: ----------- Respect where in COUNT(*) link Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-15 11:04:58 UTC (rev 1440) +++ trunk/adminer/include/functions.inc.php 2010-04-15 12:42:31 UTC (rev 1441) @@ -159,33 +159,18 @@ return $return; } -/** Get query string for unique identifier of a row -* @param array -* @param array result of indexes() -* @return string -*/ -function unique_idf($row, $indexes) { - $return = ""; - foreach (unique_array($row, $indexes) as $key => $val) { - $return .= "&" . (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); - } - return $return; -} - /** Create SQL condition from parsed query string * @param array parsed query string * @return string */ function where($where) { $return = array(); - foreach ((array) $where["where"] as $key => $val) { - $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . (ereg('\\.', $val) ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val)); // LIKE because of floats, but slow with ints //! enum and set, columns looking like functions + foreach (array("where", "null") as $type) { + foreach ((array) $where[$type] as $key => $val) { + $key = bracket_escape($key, "back"); + $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . ($type == "null" ? " IS NULL" : (ereg('\\.', $val) ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val))); // LIKE because of floats, but slow with ints //! enum and set, columns looking like functions + } } - foreach ((array) $where["null"] as $key) { - $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " IS NULL"; - } return implode(" AND ", $return); } Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2010-04-15 11:04:58 UTC (rev 1440) +++ trunk/adminer/select.inc.php 2010-04-15 12:42:31 UTC (rev 1441) @@ -205,7 +205,11 @@ } echo ($backward_keys ? "<th>" . lang('Relations') : "") . "</thead>\n"; foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { - $unique_idf = unique_idf($row, $indexes); + $unique_array = unique_array($row, $indexes); + $unique_idf = ""; + foreach ($unique_array as $key => $val) { + $unique_idf .= "&" . (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); + } echo "<tr" . odd() . "><td>" . checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . $unique_idf) . "'>" . lang('edit') . "</a>"); foreach ($row as $key => $val) { if (isset($names[$key])) { @@ -243,7 +247,13 @@ if ($key == "COUNT(*)") { //! columns looking like functions $link = h(ME . "select=" . urlencode($TABLE)); $i = 0; - foreach (unique_array($row, $indexes) as $k => $v) { + foreach ((array) $_GET["where"] as $v) { + if (!array_key_exists($v["col"], $unique_array)) { + $link .= h("&where[$i][col]=" . urlencode($v["col"]) . "&where[$i][op]=" . urlencode($v["op"]) . "&where[$i][val]=" . urlencode($v["val"])); + $i++; + } + } + foreach ($unique_array as $k => $v) { $link .= h("&where[$i][col]=" . urlencode($k) . "&where[$i][op]=" . (isset($v) ? "%3D&where[$i][val]=" . urlencode($v) : "IS+NULL")); $i++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-15 14:59:47
|
Revision: 1443 http://adminer.svn.sourceforge.net/adminer/?rev=1443&view=rev Author: jakubvrana Date: 2010-04-15 14:59:40 +0000 (Thu, 15 Apr 2010) Log Message: ----------- Fix Save and continue edit Modified Paths: -------------- trunk/adminer/edit.inc.php trunk/adminer/include/functions.inc.php Modified: trunk/adminer/edit.inc.php =================================================================== --- trunk/adminer/edit.inc.php 2010-04-15 14:43:44 UTC (rev 1442) +++ trunk/adminer/edit.inc.php 2010-04-15 14:59:40 UTC (rev 1443) @@ -11,7 +11,7 @@ if ($_POST && !$error && !isset($_GET["select"])) { $location = $_POST["referer"]; if ($_POST["insert"]) { // continue edit or insert - $location = ($update ? ME . "&edit=" . urlencode($TABLE) . unique_idf($_POST["fields"] + $_GET["where"], indexes($TABLE)) : $_SERVER["REQUEST_URI"]); //! doesn't work with functions + $location = ($update ? null : $_SERVER["REQUEST_URI"]); } elseif (!ereg('^.+&select=.+$', $location)) { $location = ME . "select=" . urlencode($TABLE); $i = 0; // append &set converted to &where Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-15 14:43:44 UTC (rev 1442) +++ trunk/adminer/include/functions.inc.php 2010-04-15 14:59:40 UTC (rev 1443) @@ -217,8 +217,8 @@ } /** Send Location header and exit +* @param string null to only set a message * @param string -* @param string * @return null */ function redirect($location, $message = null) { @@ -226,8 +226,10 @@ restart_session(); $_SESSION["messages"][] = $message; } - header("Location: " . ($location != "" ? $location : ".")); - exit; + if (isset($location)) { + header("Location: " . ($location != "" ? $location : ".")); + exit; + } } /** Execute query and redirect if successful This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-21 15:09:59
|
Revision: 1467 http://adminer.svn.sourceforge.net/adminer/?rev=1467&view=rev Author: jakubvrana Date: 2010-04-21 15:09:52 +0000 (Wed, 21 Apr 2010) Log Message: ----------- SQLite variables Modified Paths: -------------- trunk/adminer/drivers/mysql.inc.php trunk/adminer/drivers/sqlite.inc.php trunk/adminer/include/editing.inc.php trunk/adminer/variables.inc.php Modified: trunk/adminer/drivers/mysql.inc.php =================================================================== --- trunk/adminer/drivers/mysql.inc.php 2010-04-21 12:01:32 UTC (rev 1466) +++ trunk/adminer/drivers/mysql.inc.php 2010-04-21 15:09:52 UTC (rev 1467) @@ -666,6 +666,14 @@ return $connection->result("SHOW CREATE TABLE " . idf_escape($table), 1); } + function show_variables() { + return get_key_vals("SHOW VARIABLES"); + } + + function show_status() { + return get_key_vals("SHOW STATUS"); + } + /** Check whether a feature is supported * @param string * @return bool Modified: trunk/adminer/drivers/sqlite.inc.php =================================================================== --- trunk/adminer/drivers/sqlite.inc.php 2010-04-21 12:01:32 UTC (rev 1466) +++ trunk/adminer/drivers/sqlite.inc.php 2010-04-21 15:09:52 UTC (rev 1467) @@ -44,7 +44,7 @@ function result($query, $field = 0) { $result = $this->query($query); - if (!$result) { + if (!is_object($result)) { return false; } $row = $result->_result->fetch(); @@ -89,37 +89,38 @@ } else { - class Min_SQLite extends SQLite3 { - var $extension = "SQLite3", $server_info, $affected_rows, $error; + class Min_SQLite { + var $extension = "SQLite3", $server_info, $affected_rows, $error, $_connection; function __construct() { - $version = $this->version(); + $this->_connection = new SQLite3(":memory:"); // required to display variables + $version = $this->_connection->version(); $this->server_info = $version["versionString"]; } function open($filename) { - parent::__construct($filename); + $this->_connection->open($filename); } function query($query) { - $result = @parent::query($query); + $result = @$this->_connection->query($query); if (!$result) { - $this->error = $this->lastErrorMsg(); + $this->error = $this->_connection->lastErrorMsg(); return false; } elseif ($result->numColumns()) { return new Min_Result($result); } - $this->affected_rows = $this->changes(); + $this->affected_rows = $this->_connection->changes(); return true; } function quote($string) { - return "'" . $this->escapeString($string) . "'"; + return "'" . $this->_connection->escapeString($string) . "'"; } function result($query, $field = 0) { $result = $this->query($query); - if (!$result) { + if (!is_object($result)) { return false; } $row = $result->_result->fetchArray(); @@ -254,6 +255,7 @@ $return = array(); $result = $connection->query("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view')" . ($name != "" ? " AND name = " . $connection->quote($name) : "")); while ($row = $result->fetch_assoc()) { + $row["Auto_increment"] = ""; $return[$row["Name"]] = $row; } $result = $connection->query("SELECT * FROM sqlite_sequence"); @@ -456,8 +458,21 @@ return $connection->result("SELECT sql FROM sqlite_master WHERE name = " . $connection->quote($table)); } + function show_variables() { + global $connection; + $return = array(); + foreach (array("auto_vacuum", "cache_size", "count_changes", "default_cache_size", "empty_result_callbacks", "encoding", "foreign_keys", "full_column_names", "fullfsync", "journal_mode", "journal_size_limit", "legacy_file_format", "locking_mode", "page_size", "max_page_count", "read_uncommitted", "recursive_triggers", "reverse_unordered_selects", "secure_delete", "short_column_names", "synchronous", "temp_store", "temp_store_directory", "schema_version", "compile_options", "integrity_check", "quick_check") as $key) { + $return[$key] = $connection->result("PRAGMA $key"); + } + return $return; + } + + function show_status() { + // not supported + } + function support($feature) { - return ereg('^(view|trigger)$', $feature); + return ereg('^(view|trigger|variables)$', $feature); } $driver = "sqlite"; Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2010-04-21 12:01:32 UTC (rev 1466) +++ trunk/adminer/include/editing.inc.php 2010-04-21 15:09:52 UTC (rev 1467) @@ -55,7 +55,7 @@ } else { if ($blobs[$key] && !is_utf8($val)) { $val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download - } elseif ($val == "") { + } elseif (!strlen($val)) { // strlen - SQLite can return int $val = " "; // some content to print a border } else { $val = h($val); Modified: trunk/adminer/variables.inc.php =================================================================== --- trunk/adminer/variables.inc.php 2010-04-21 12:01:32 UTC (rev 1466) +++ trunk/adminer/variables.inc.php 2010-04-21 15:09:52 UTC (rev 1467) @@ -2,11 +2,10 @@ $status = isset($_GET["status"]); page_header($status ? lang('Status') : lang('Variables')); -$result = $connection->query($status ? "SHOW STATUS" : "SHOW VARIABLES"); echo "<table cellspacing='0'>\n"; -while ($row = $result->fetch_assoc()) { +foreach (($status ? show_status() : show_variables()) as $key => $val) { echo "<tr>"; - echo "<th><code class='jush-" . ($status ? "sqlstatus" : "sqlset") . "'>" . h($row["Variable_name"]) . "</code>"; - echo "<td>" . nbsp($row["Value"]); + echo "<th><code class='jush-" . $driver . ($status ? "status" : "set") . "'>" . h($key) . "</code>"; + echo "<td>" . nbsp($val); } echo "</table>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-21 22:22:29
|
Revision: 1470 http://adminer.svn.sourceforge.net/adminer/?rev=1470&view=rev Author: jakubvrana Date: 2010-04-21 22:22:23 +0000 (Wed, 21 Apr 2010) Log Message: ----------- Improve drivers Modified Paths: -------------- trunk/adminer/drivers/pgsql.inc.php trunk/adminer/drivers/sqlite.inc.php trunk/adminer/include/editing.inc.php trunk/adminer/include/functions.inc.php Modified: trunk/adminer/drivers/pgsql.inc.php =================================================================== --- trunk/adminer/drivers/pgsql.inc.php 2010-04-21 22:21:47 UTC (rev 1469) +++ trunk/adminer/drivers/pgsql.inc.php 2010-04-21 22:22:23 UTC (rev 1470) @@ -105,11 +105,13 @@ function fetch_field() { $column = $this->_offset++; $row = new stdClass; - $row->orgtable = pg_field_table($this->_result, $column); + if (function_exists('pg_field_table')) { + $row->orgtable = pg_field_table($this->_result, $column); + } $row->name = pg_field_name($this->_result, $column); $row->orgname = $row->name; $row->type = pg_field_type($this->_result, $column); - $row->charsetnr = ($row->type == "bytea" ? 63 : 0); + $row->charsetnr = ($row->type == "bytea" ? 63 : 0); // 63 - binary return $row; } @@ -178,7 +180,7 @@ function tables_list() { global $connection; - return get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name"); + return get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema() ORDER BY table_name"); } function count_tables($databases) { @@ -188,7 +190,12 @@ function table_status($name = "") { global $connection; $return = array(); - $result = $connection->query("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN '' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_catalog.obj_description(oid, 'pg_class') AS \"Comment\" FROM pg_catalog.pg_class WHERE relkind IN ('r','v') AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" . ($name != "" ? " AND relname = " . $connection->quote($name) : "")); //! Index_length, Auto_increment + $result = $connection->query("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN '' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_catalog.obj_description(oid, 'pg_class') AS \"Comment\" +FROM pg_catalog.pg_class +WHERE relkind IN ('r','v') +AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())" + . ($name != "" ? " AND relname = " . $connection->quote($name) : "") + ); //! Index_length, Auto_increment while ($row = $result->fetch_assoc()) { $return[$row["Name"]] = $row; } Modified: trunk/adminer/drivers/sqlite.inc.php =================================================================== --- trunk/adminer/drivers/sqlite.inc.php 2010-04-21 22:21:47 UTC (rev 1469) +++ trunk/adminer/drivers/sqlite.inc.php 2010-04-21 22:22:23 UTC (rev 1470) @@ -19,6 +19,7 @@ function __construct() { $this->server_info = sqlite_libversion(); + $this->_connection = new SQLiteDatabase(":memory:"); } function open($filename) { @@ -79,9 +80,16 @@ } function fetch_field() { + $name = $this->_result->fieldName($this->_offset++); + $pattern = '(\\[.*]|"(?:[^"]|"")*"|(.+))'; + if (preg_match("~^($pattern\\.)?$pattern\$~", $name, $match)) { + $table = ($match[3] != "" ? $match[3] : idf_unescape($match[2])); + $name = ($match[5] != "" ? $match[5] : idf_unescape($match[4])); + } return (object) array( - "name" => $this->_result->fieldName($this->_offset++), - //! type, orgtable, charsetnr + "name" => $name, + "orgname" => $name, + "orgtable" => $table, ); } @@ -99,7 +107,7 @@ } function open($filename) { - $this->_connection->open($filename); + $this->_connection = new SQLite3($filename); } function query($query) { @@ -146,10 +154,11 @@ function fetch_field() { $column = $this->_offset++; + $type = $this->_result->columnType($column); return (object) array( "name" => $this->_result->columnName($column), - "type" => $this->_result->columnType($column), - //! orgtable, charsetnr + "type" => $type, + "charsetnr" => ($type == SQLITE3_BLOB ? 63 : 0), // 63 - binary ); } @@ -163,13 +172,8 @@ class Min_DB extends Min_SQLite { function select_db($filename) { - static $connected = false; - if ($connected) { - return true; - } set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4 $this->open($filename); - $connected = true; restore_exception_handler(); return true; } Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2010-04-21 22:21:47 UTC (rev 1469) +++ trunk/adminer/include/editing.inc.php 2010-04-21 22:22:23 UTC (rev 1470) @@ -40,7 +40,7 @@ $links[$j] = $orgtable; } } - if ($field->charsetnr == 63) { + if ($field->charsetnr == 63) { // 63 - binary $blobs[$j] = true; } $types[$j] = $field->type; @@ -59,7 +59,7 @@ $val = " "; // some content to print a border } else { $val = h($val); - if ($types[$key] == 254) { + if ($types[$key] == 254) { // 254 - char $val = "<code>$val</code>"; } } Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-21 22:21:47 UTC (rev 1469) +++ trunk/adminer/include/functions.inc.php 2010-04-21 22:22:23 UTC (rev 1470) @@ -13,7 +13,8 @@ * @return string */ function idf_unescape($idf) { - return str_replace($idf[0] . $idf[0], $idf[0], substr($idf, 1, -1)); + $last = substr($idf, -1); + return str_replace($last . $last, $last, substr($idf, 1, -1)); } /** Escape string to use inside '' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-22 12:38:03
|
Revision: 1476 http://adminer.svn.sourceforge.net/adminer/?rev=1476&view=rev Author: jakubvrana Date: 2010-04-22 12:37:56 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Don't redirect from last page Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-22 12:19:22 UTC (rev 1475) +++ trunk/adminer/include/functions.inc.php 2010-04-22 12:37:56 UTC (rev 1476) @@ -348,8 +348,8 @@ * @param int * @return string */ -function pagination($page) { - return " " . ($page == $_GET["page"] ? $page + 1 : '<a href="' . h(remove_from_uri("page") . ($page ? "&page=$page" : "")) . '">' . ($page + 1) . "</a>"); +function pagination($page, $current) { + return " " . ($page == $current ? $page + 1 : '<a href="' . h(remove_from_uri("page") . ($page ? "&page=$page" : "")) . '">' . ($page + 1) . "</a>"); } /** Get file contents from $_FILES Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2010-04-22 12:19:22 UTC (rev 1475) +++ trunk/adminer/select.inc.php 2010-04-22 12:37:56 UTC (rev 1476) @@ -26,12 +26,6 @@ $from = ($select ? implode(", ", $select) : "*") . "\nFROM " . idf_escape($TABLE) . ($where ? "\nWHERE " . implode(" AND ", $where) : ""); $group_by = ($group && count($group) < count($select) ? "\nGROUP BY " . implode(", ", $group) : "") . ($order ? "\nORDER BY " . implode(", ", $order) : ""); -if ($_GET["page"] == "last") { - session_write_close(); - $found_rows = $connection->result("SELECT COUNT(*) FROM " . idf_escape($TABLE) . ($where ? " WHERE " . implode(" AND ", $where) : "")); - redirect(remove_from_uri("page") . ($found_rows > $limit ? "&page=" . floor(($found_rows - 1) / $limit) : "")); -} - if ($_POST && !$error) { $where_check = "(" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . ")"; $primary = ($indexes["PRIMARY"] ? ($select ? array_flip($indexes["PRIMARY"]["columns"]) : array()) : null); // empty array means that all primary fields are selected @@ -181,7 +175,14 @@ $adminer->selectActionPrint($text_length); echo "</form>\n"; - $query = "SELECT" . limit((intval($limit) && $group && count($group) < count($select) && $driver == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . $from . $group_by, ($limit != "" ? intval($limit) : null), ($_GET["page"] ? $limit * $_GET["page"] : 0)); + $page = $_GET["page"]; + if ($page == "last") { + session_write_close(); + $found_rows = $connection->result("SELECT COUNT(*) FROM " . idf_escape($TABLE) . ($where ? " WHERE " . implode(" AND ", $where) : "")); + $page = floor(($found_rows - 1) / $limit); + } + + $query = "SELECT" . limit((intval($limit) && $group && count($group) < count($select) && $driver == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . $from . $group_by, ($limit != "" ? intval($limit) : null), ($page ? $limit * $page : 0)); echo $adminer->selectQuery($query); $result = $connection->query($query); @@ -293,11 +294,11 @@ parse_str($_COOKIE["adminer_export"], $adminer_export); - if ($rows || $_GET["page"]) { + if ($rows || $page) { $exact_count = true; - if (intval($limit) && count($group) >= count($select) && ($found_rows >= $limit || $_GET["page"])) { + if (intval($limit) && count($group) >= count($select) && ($found_rows >= $limit || $page)) { $found_rows = $table_status["Rows"]; - if (!isset($found_rows) || $where || $_GET["page"] * $limit * 2 > $found_rows || ($table_status["Engine"] == "InnoDB" && $found_rows < 1e5)) { + if (!isset($found_rows) || $where || 2 * $page * $limit > $found_rows || ($table_status["Engine"] == "InnoDB" && $found_rows < 1e4)) { // slow with big tables ob_flush(); flush(); @@ -308,13 +309,13 @@ } echo "<p class='pages'>"; if (intval($limit) && $found_rows > $limit) { - // display first, previous 5, next 5 and last page + // display first, previous 4, next 4 and last page $max_page = floor(($found_rows - 1) / $limit); - echo lang('Page') . ":" . pagination(0) . ($_GET["page"] > 5 ? " ..." : ""); - for ($i = max(1, $_GET["page"] - 2); $i < min($max_page, $_GET["page"] + 5); $i++) { - echo pagination($i); + echo lang('Page') . ":" . pagination(0, $page) . ($page > 5 ? " ..." : ""); + for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) { + echo pagination($i, $page); } - echo ($_GET["page"] + 5 < $max_page ? " ..." : "") . ($exact_count ? pagination($max_page) : ' <a href="' . h(remove_from_uri() . "&page=last") . '">' . lang('last') . "</a>"); + echo ($page + 5 < $max_page ? " ..." : "") . ($exact_count ? pagination($max_page, $page) : ' <a href="' . h(remove_from_uri() . "&page=last") . '">' . lang('last') . "</a>"); } echo " (" . ($exact_count ? "" : "~ ") . lang('%d row(s)', $found_rows) . ") " . checkbox("all", 1, 0, lang('whole result')) . "\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-22 13:21:11
|
Revision: 1475 http://adminer.svn.sourceforge.net/adminer/?rev=1475&view=rev Author: jakubvrana Date: 2010-04-22 12:19:22 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Init with null Modified Paths: -------------- trunk/adminer/edit.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/edit.inc.php =================================================================== --- trunk/adminer/edit.inc.php 2010-04-22 09:22:19 UTC (rev 1474) +++ trunk/adminer/edit.inc.php 2010-04-22 12:19:22 UTC (rev 1475) @@ -44,7 +44,7 @@ $table_name ); -unset($row); +$row = null; if ($_POST["save"]) { $row = (array) $_POST["fields"]; } elseif ($where) { @@ -59,7 +59,7 @@ $result = $connection->query("SELECT" . limit(implode(", ", $select) . " FROM " . idf_escape($TABLE) . " WHERE $where", (isset($_GET["select"]) ? 2 : 1))); $row = $result->fetch_assoc(); if (isset($_GET["select"]) && $result->fetch_assoc()) { - $row = false; + $row = null; } } } @@ -68,7 +68,6 @@ <form action="" method="post" enctype="multipart/form-data"> <?php if ($fields) { - unset($create); echo "<table cellspacing='0'>\n"; foreach ($fields as $name => $field) { echo "<tr><th>" . $adminer->fieldName($field); Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2010-04-22 09:22:19 UTC (rev 1474) +++ trunk/adminer/select.inc.php 2010-04-22 12:19:22 UTC (rev 1475) @@ -7,7 +7,7 @@ $rights = array(); // privilege => 0 $columns = array(); // selectable columns -unset($text_length); +$text_length = null; foreach ($fields as $key => $field) { $name = $adminer->fieldName($field); if (isset($field["privileges"]["select"]) && $name != "") { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-22 23:04:00
|
Revision: 1481 http://adminer.svn.sourceforge.net/adminer/?rev=1481&view=rev Author: jakubvrana Date: 2010-04-22 23:03:54 +0000 (Thu, 22 Apr 2010) Log Message: ----------- Improve CSV; export Modified Paths: -------------- trunk/adminer/dump.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/dump.inc.php =================================================================== --- trunk/adminer/dump.inc.php 2010-04-22 23:02:28 UTC (rev 1480) +++ trunk/adminer/dump.inc.php 2010-04-22 23:03:54 UTC (rev 1481) @@ -156,7 +156,7 @@ $db_style = array('', 'USE', 'DROP+CREATE', 'CREATE'); $table_style = array('', 'DROP+CREATE', 'CREATE'); $data_style = array('', 'TRUNCATE+INSERT', 'INSERT', 'INSERT+UPDATE'); -if (support("routine")) { +if ($driver == "sql") { $db_style[] = 'CREATE+ALTER'; $table_style[] = 'CREATE+ALTER'; } Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-22 23:02:28 UTC (rev 1480) +++ trunk/adminer/include/functions.inc.php 2010-04-22 23:03:54 UTC (rev 1481) @@ -598,7 +598,7 @@ $row[$key] = '"' . str_replace('"', '""', $val) . '"'; } } - echo implode(($_POST["format"] == "csv;" ? ";" : ","), $row) . "\n"; + echo implode(($_POST["format"] == "csv" ? "," : ";"), $row) . "\n"; } /** Apply SQL function Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2010-04-22 23:02:28 UTC (rev 1480) +++ trunk/adminer/select.inc.php 2010-04-22 23:03:54 UTC (rev 1481) @@ -112,7 +112,7 @@ preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $file, $matches); $affected = count($matches[0]); queries("START TRANSACTION"); - $separator = ($_POST["separator"] == ";" ? ";" : ","); + $separator = ($_POST["separator"] == "csv" ? "," : ";"); foreach ($matches[0] as $key => $val) { preg_match_all("~((\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2); if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n @@ -132,7 +132,7 @@ } } if ($result) { - queries("COMMIT"); + queries("COMMIT"); } queries_redirect(remove_from_uri("page"), lang('%d row(s) have been imported.', $affected), $result); queries("ROLLBACK"); @@ -327,7 +327,7 @@ } print_fieldset("import", lang('CSV Import'), !$result->num_rows); echo "<input type='hidden' name='token' value='$token'><input type='file' name='csv_file'> "; - echo html_select("separator", array(",", ";"), ($adminer_export["format"] == "csv;" ? ";" : ","), 1); // 1 - select + echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;"), $adminer_export["format"], 1); // 1 - select echo " <input type='submit' name='import' value='" . lang('Import') . "'>\n"; echo "</div></fieldset>\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2010-04-23 09:03:33
|
Revision: 1484 http://adminer.svn.sourceforge.net/adminer/?rev=1484&view=rev Author: jakubvrana Date: 2010-04-23 09:03:27 +0000 (Fri, 23 Apr 2010) Log Message: ----------- Driver specific INSERT INTO Modified Paths: -------------- trunk/adminer/drivers/mysql.inc.php trunk/adminer/drivers/pgsql.inc.php trunk/adminer/drivers/sqlite.inc.php trunk/adminer/edit.inc.php trunk/adminer/include/functions.inc.php Modified: trunk/adminer/drivers/mysql.inc.php =================================================================== --- trunk/adminer/drivers/mysql.inc.php 2010-04-23 00:26:34 UTC (rev 1483) +++ trunk/adminer/drivers/mysql.inc.php 2010-04-23 09:03:27 UTC (rev 1484) @@ -680,6 +680,15 @@ ); } + /** Insert data into table + * @param string + * @param array + * @return bool + */ + function insert_into($table, $set) { + return queries("INSERT INTO " . idf_escape($table) . " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")"); + } + /** Explain select * @param Min_DB * @param string Modified: trunk/adminer/drivers/pgsql.inc.php =================================================================== --- trunk/adminer/drivers/pgsql.inc.php 2010-04-23 00:26:34 UTC (rev 1483) +++ trunk/adminer/drivers/pgsql.inc.php 2010-04-23 09:03:27 UTC (rev 1484) @@ -440,6 +440,10 @@ ); } + function insert_into($table, $set) { + return queries("INSERT INTO " . idf_escape($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES")); + } + function explain($connection, $query) { return $connection->query("EXPLAIN $query"); } Modified: trunk/adminer/drivers/sqlite.inc.php =================================================================== --- trunk/adminer/drivers/sqlite.inc.php 2010-04-23 00:26:34 UTC (rev 1483) +++ trunk/adminer/drivers/sqlite.inc.php 2010-04-23 09:03:27 UTC (rev 1484) @@ -474,6 +474,10 @@ ); } + function insert_into($table, $set) { + return queries("INSERT INTO " . idf_escape($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES")); + } + function explain($connection, $query) { return $connection->query("EXPLAIN $query"); } Modified: trunk/adminer/edit.inc.php =================================================================== --- trunk/adminer/edit.inc.php 2010-04-23 00:26:34 UTC (rev 1483) +++ trunk/adminer/edit.inc.php 2010-04-23 09:03:27 UTC (rev 1484) @@ -31,7 +31,7 @@ } query_redirect("UPDATE" . limit1(idf_escape($TABLE) . " SET" . implode(",", $set) . "\nWHERE $where"), $location, lang('Item has been updated.')); } else { - query_redirect("INSERT INTO " . idf_escape($TABLE) . " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")", $location, lang('Item has been inserted.')); + queries_redirect($location, lang('Item has been inserted.'), insert_into($TABLE, $set)); } } } Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-23 00:26:34 UTC (rev 1483) +++ trunk/adminer/include/functions.inc.php 2010-04-23 09:03:27 UTC (rev 1484) @@ -193,12 +193,12 @@ */ function where($where) { $return = array(); - foreach (array("where", "null") as $type) { - foreach ((array) $where[$type] as $key => $val) { - $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . ($type == "null" ? " IS NULL" : (ereg('\\.', $val) ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val))); // LIKE because of floats, but slow with ints //! enum and set, columns looking like functions - } + foreach ((array) $where["where"] as $key => $val) { + $return[] = idf_escape($key) . (ereg('\\.', $val) ? " LIKE " . exact_value(addcslashes($val, "%_")) : " = " . exact_value($val)); // LIKE because of floats, but slow with ints //! enum and set } + foreach ((array) $where["null"] as $key) { + $return[] = idf_escape($key) . " IS NULL"; + } return implode(" AND ", $return); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |