diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index 508c7dae..bab09e50 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -121,7 +121,7 @@ FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = " . q($this->database()) . " AND REFERENCED_TABLE_SCHEMA = " . q($this->database()) . " AND REFERENCED_TABLE_NAME = " . q($table) . " -ORDER BY ORDINAL_POSITION", null, "") as $row //! requires MySQL 5 +ORDER BY ORDINAL_POSITION", null, "") as $row ) { $return[$row["TABLE_NAME"]]["keys"][$row["CONSTRAINT_NAME"]][$row["COLUMN_NAME"]] = $row["REFERENCED_COLUMN_NAME"]; } diff --git a/plugins/backward-keys.php b/plugins/backward-keys.php new file mode 100644 index 00000000..a0069ec3 --- /dev/null +++ b/plugins/backward-keys.php @@ -0,0 +1,55 @@ + $val) { + $name = Adminer\adminer()->tableName(Adminer\table_status($key, true)); + if ($name != "") { + $search = preg_quote($tableName); + $separator = '(:|\s*-)?\s+'; + $return[$key]["name"] = (preg_match("(^$search$separator(.+)|^(.+?)$separator$search\$)iu", $name, $match) ? $match[2] . $match[3] : $name); + } else { + unset($return[$key]); + } + } + return $return; + } + + function backwardKeysPrint($backwardKeys, $row) { + foreach ($backwardKeys as $table => $backwardKey) { + foreach ($backwardKey["keys"] as $cols) { + $link = Adminer\ME . 'select=' . urlencode($table); + $i = 0; + foreach ($cols as $column => $val) { + $link .= Adminer\where_link($i++, $column, $row[$val]); + } + echo "" . Adminer\h($backwardKey["name"]) . ""; + $link = Adminer\ME . 'edit=' . urlencode($table); + foreach ($cols as $column => $val) { + $link .= "&set" . urlencode("[" . Adminer\bracket_escape($column) . "]") . "=" . urlencode($row[$val]); + } + echo "+ "; + } + } + } +}