diff --git a/adminer/db.inc.php b/adminer/db.inc.php index e72519338..89b69b8aa 100644 --- a/adminer/db.inc.php +++ b/adminer/db.inc.php @@ -165,7 +165,7 @@ 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 5d3902d53..d14f5d370 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -304,6 +304,10 @@ function table_status($name = "") { 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 aca228d6e..1ca1cca3a 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -359,7 +359,6 @@ function table_status($name = "") { $row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]); } if (!isset($row["Rows"])) { - $row["Engine"] = "VIEW"; $row["Comment"] = ""; } if ($name != "") { @@ -370,6 +369,14 @@ function table_status($name = "") { 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 6fbf49aec..3635ef987 100644 --- a/adminer/drivers/oracle.inc.php +++ b/adminer/drivers/oracle.inc.php @@ -202,6 +202,10 @@ function table_status($name = "") { 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 3ff313f10..4255144b1 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -213,6 +213,10 @@ function table_status($name = "") { 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 fa66ff676..ddc989b6c 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -262,6 +262,10 @@ function table_status($name = "") { 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 17d147734..46bd53576 100644 --- a/adminer/dump.inc.php +++ b/adminer/dump.inc.php @@ -72,7 +72,7 @@ $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 @@ $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 f2466c08c..d52d4b829 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -86,7 +86,7 @@ function fieldName($field, $order = 0) { 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 0c4a0c580..30a2f2342 100644 --- a/adminer/table.inc.php +++ b/adminer/table.inc.php @@ -6,7 +6,7 @@ } $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 @@ } echo "\n"; - if ($table_status["Engine"] != "VIEW") { + if (is_view($table_status)) { echo "

" . lang('Indexes') . "

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