Browse files

Support for virtual foreign keys

  • Loading branch information...
1 parent 43f936a commit 753909eceaf62c6d990187495c846c003fbb2363 @vrana committed Oct 29, 2010
Showing with 29 additions and 17 deletions.
  1. +8 −0 adminer/include/adminer.inc.php
  2. +2 −1 adminer/include/functions.inc.php
  3. +14 −16 adminer/schema.inc.php
  4. +1 −0 changes.txt
  5. +4 −0 editor/include/adminer.inc.php
View
8 adminer/include/adminer.inc.php
@@ -108,6 +108,14 @@ function selectLinks($tableStatus, $set = "") {
echo "\n";
}
+ /** Get foreign keys for table
+ * @param string
+ * @return array same format as foreign_keys()
+ */
+ function foreignKeys($table) {
+ return foreign_keys($table);
+ }
+
/** Find backward keys for table
* @param string
* @param string
View
3 adminer/include/functions.inc.php
@@ -550,8 +550,9 @@ function hidden_fields_get() {
* @return array array($col => array())
*/
function column_foreign_keys($table) {
+ global $adminer;
$return = array();
- foreach (foreign_keys($table) as $foreign_key) {
+ foreach ($adminer->foreignKeys($table) as $foreign_key) {
foreach ($foreign_key["source"] as $val) {
$return[$val][] = $foreign_key;
}
View
30 adminer/schema.inc.php
@@ -27,23 +27,21 @@
$schema[$row["Name"]]["fields"][$name] = $field;
}
$schema[$row["Name"]]["pos"] = ($table_pos[$row["Name"]] ? $table_pos[$row["Name"]] : array($top, 0));
- if (fk_support($row)) {
- foreach (foreign_keys($row["Name"]) as $val) {
- if (!$val["db"]) {
- $left = $base_left;
- if ($table_pos[$row["Name"]][1] || $table_pos[$val["table"]][1]) {
- $left = min(floatval($table_pos[$row["Name"]][1]), floatval($table_pos[$val["table"]][1])) - 1;
- } else {
- $base_left -= .1;
- }
- while ($lefts[(string) $left]) {
- // find free $left
- $left -= .0001;
- }
- $schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
- $referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
- $lefts[(string) $left] = true;
+ foreach ($adminer->foreignKeys($row["Name"]) as $val) {
+ if (!$val["db"]) {
+ $left = $base_left;
+ if ($table_pos[$row["Name"]][1] || $table_pos[$val["table"]][1]) {
+ $left = min(floatval($table_pos[$row["Name"]][1]), floatval($table_pos[$val["table"]][1])) - 1;
+ } else {
+ $base_left -= .1;
}
+ while ($lefts[(string) $left]) {
+ // find free $left
+ $left -= .0001;
+ }
+ $schema[$row["Name"]]["references"][$val["table"]][(string) $left] = array($val["source"], $val["target"]);
+ $referenced[$val["table"]][$row["Name"]][(string) $left] = $val["target"];
+ $lefts[(string) $left] = true;
}
}
$top = max($top, $schema[$row["Name"]]["pos"][0] + 2.5 + $pos);
View
1 changes.txt
@@ -4,6 +4,7 @@ Highlight and edit SQL command in processlist
Disable XSS "protection" of IE8
Timestamp in export
Link to bookmark SQL command
+Support for virtual foreign keys
Immunity against zend.ze1_compatibility_mode
Fix last page with empty result set
View
4 editor/include/adminer.inc.php
@@ -65,6 +65,10 @@ function selectLinks($tableStatus, $set = "") {
echo "<a href='" . h(remove_from_uri("page")) . "&amp;page=last' title='" . lang('Page') . ": " . lang('last') . "'>&gt;&gt;</a>\n";
}
+ function foreignKeys($table) {
+ return foreign_keys($table);
+ }
+
function backwardKeys($table, $tableName) {
$return = array();
foreach (get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME

0 comments on commit 753909e

Please sign in to comment.