diff --git a/adminer/db.inc.php b/adminer/db.inc.php index e7251933..89b69b8a 100644 --- a/adminer/db.inc.php +++ b/adminer/db.inc.php @@ -165,7 +165,7 @@ if ($_GET["ns"] !== "") { foreach ($table_status as $row) { $id = addcslashes($row["Name"], "\\'/"); echo "setHtml('Comment-$id', '" . nbsp($row["Comment"]) . "');\n"; - if (!eregi("view", $row["Engine"])) { + if (!is_view($row)) { foreach (array("Engine", "Collation") as $key) { echo "setHtml('$key-$id', '" . nbsp($row[$key]) . "');\n"; } diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 5d3902d5..d14f5d37 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -304,6 +304,10 @@ if (isset($_GET["mssql"])) { return $return; } + function is_view($table_status) { + return $table_status["Engine"] == "VIEW"; + } + function fk_support($table_status) { return true; } diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index aca228d6..1ca1cca3 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -359,7 +359,6 @@ if (!defined("DRIVER")) { $row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]); } if (!isset($row["Rows"])) { - $row["Engine"] = "VIEW"; $row["Comment"] = ""; } if ($name != "") { @@ -370,6 +369,14 @@ if (!defined("DRIVER")) { return $return; } + /** Find out whether the identifier is view + * @param array + * @return bool + */ + function is_view($table_status) { + return !isset($table_status["Rows"]); + } + /** Check if table supports foreign keys * @param array result of table_status * @return bool diff --git a/adminer/drivers/oracle.inc.php b/adminer/drivers/oracle.inc.php index 6fbf49ae..3635ef98 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -202,6 +202,10 @@ UNION SELECT view_name, 'view' FROM user_views" . ($name != "" ? " WHERE view_na return $return; } + function is_view($table_status) { + return $table_status["Engine"] == "view"; + } + function fk_support($table_status) { return true; } diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 3ff313f1..4255144b 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -213,6 +213,10 @@ AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema( return ($name != "" ? $return[$name] : $return); } + function is_view($table_status) { + return $table_status["Engine"] == "view"; + } + function fk_support($table_status) { return true; } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index fa66ff67..ddc989b6 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -262,6 +262,10 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { return ($name != "" ? $return[$name] : $return); } + function is_view($table_status) { + return $table_status["Engine"] == "view"; + } + function fk_support($table_status) { global $connection; return !$connection->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')"); diff --git a/adminer/dump.inc.php b/adminer/dump.inc.php index 17d14773..46bd5357 100644 --- a/adminer/dump.inc.php +++ b/adminer/dump.inc.php @@ -72,7 +72,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; $table = (DB == "" || in_array($row["Name"], (array) $_POST["tables"])); $data = (DB == "" || in_array($row["Name"], (array) $_POST["data"])); if ($table || $data) { - if (isset($row["Engine"])) { + if (!is_view($row)) { if ($ext == "tar") { ob_start(); } @@ -197,7 +197,7 @@ if (DB != "") { $prefix = ereg_replace("_.*", "", $name); $checked = ($TABLE == "" || $TABLE == (substr($TABLE, -1) == "%" ? "$prefix%" : $name)); //! % may be part of table name $print = "" . checkbox("tables[]", $name, $checked, $name, "formUncheck('check-tables');"); - if (eregi("view", $row["Engine"])) { + if (is_view($row)) { $views .= "$print\n"; } else { echo "$print\n"; diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index f2466c08..d52d4b82 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -86,7 +86,7 @@ document.getElementById('username').focus(); function selectLinks($tableStatus, $set = "") { echo '

'; $links = array("select" => lang('Select data'), "table" => lang('Show structure')); - if (eregi("view", $tableStatus["Engine"])) { + if (is_view($tableStatus)) { $links["view"] = lang('Alter view'); } else { $links["create"] = lang('Alter table'); diff --git a/adminer/table.inc.php b/adminer/table.inc.php index 0c4a0c58..30a2f234 100644 --- a/adminer/table.inc.php +++ b/adminer/table.inc.php @@ -6,7 +6,7 @@ if (!$fields) { } $table_status = ($fields ? table_status($TABLE) : array()); -page_header(($fields && $table_status["Engine"] == "VIEW" ? lang('View') : lang('Table')) . ": " . h($TABLE), $error); +page_header(($fields && is_view($table_status) ? lang('View') : lang('Table')) . ": " . h($TABLE), $error); $adminer->selectLinks($table_status); if ($fields) { @@ -20,7 +20,7 @@ if ($fields) { } echo "\n"; - if ($table_status["Engine"] != "VIEW") { + if (is_view($table_status)) { echo "

" . lang('Indexes') . "

\n"; $indexes = indexes($TABLE); if ($indexes) {