Skip to content

Commit

Permalink
Prepare for foreign keys edit
Browse files Browse the repository at this point in the history
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@139 7c3ca157-0c34-0410-bff1-cbf682f78f5c
  • Loading branch information
jakubvrana committed Jul 11, 2007
1 parent 1a1e6ef commit 736c733
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
8 changes: 8 additions & 0 deletions foreign.inc.php
@@ -0,0 +1,8 @@
<?php

page_header(lang('Foreign key') . ": " . htmlspecialchars($_GET["foreign"]));

if (strlen($_GET["name"])) {
$foreign_keys = foreign_keys($_GET["foreign"]);
$foreign_key = $foreign_keys[$_GET["name"]];
}
12 changes: 6 additions & 6 deletions functions.inc.php
Expand Up @@ -76,13 +76,13 @@ function foreign_keys($table) {
if ($result) {
$create_table = $mysql->result($result, 1);
$result->free();
preg_match_all("~FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)~", $create_table, $matches, PREG_SET_ORDER);
preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)~", $create_table, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$db = idf_unescape(strlen($match[3]) ? $match[2] : $match[3]);
$table = idf_unescape(strlen($match[3]) ? $match[3] : $match[2]);
preg_match_all("~`($pattern)`~", $match[1], $source);
preg_match_all("~`($pattern)`~", $match[4], $target);
$return[] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1]));
$db = idf_unescape(strlen($match[4]) ? $match[3] : $match[4]);
$table = idf_unescape(strlen($match[4]) ? $match[4] : $match[3]);
preg_match_all("~`($pattern)`~", $match[2], $source);
preg_match_all("~`($pattern)`~", $match[5], $target);
$return[$match[1]] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1]));
}
}
return $return;
Expand Down
2 changes: 2 additions & 0 deletions index.php
Expand Up @@ -47,6 +47,8 @@
include "./database.inc.php";
} elseif (isset($_GET["call"])) {
include "./call.inc.php";
} elseif (isset($_GET["foreign"])) {
include "./foreign.inc.php";
} else {
$TOKENS = array();
page_header(htmlspecialchars(lang('Database') . ": " . $_GET["db"]));
Expand Down
12 changes: 9 additions & 3 deletions table.inc.php
Expand Up @@ -33,15 +33,21 @@
}
echo '<p><a href="' . htmlspecialchars($SELF) . 'indexes=' . urlencode($_GET["table"]) . '">' . lang('Alter indexes') . "</a></p>\n";

echo "<h3>" . lang('Foreign keys') . "</h3>\n";
$foreign_keys = foreign_keys($_GET["table"]);
if ($foreign_keys) {
echo "<h3>" . lang('Foreign keys') . "</h3>\n";
echo "<table border='1' cellspacing='0' cellpadding='2'>\n";
foreach ($foreign_keys as $foreign_key) {
echo "<tr><td><i>" . implode("</i>, <i>", $foreign_key[2]) . "</i></td><td>" . (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "<strong>" . htmlspecialchars($foreign_key[0]) . "</strong>." : "") . htmlspecialchars($foreign_key[1]) . "(<em>" . implode("</em>, <em>", $foreign_key[3]) . "</em>)</td></tr>\n";
foreach ($foreign_keys as $name => $foreign_key) {
echo "<tr>";
echo "<td><i>" . implode("</i>, <i>", $foreign_key[2]) . "</i></td>";
$link = (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "<strong>" . htmlspecialchars($foreign_key[0]) . "</strong>." : "") . htmlspecialchars($foreign_key[1]);
echo '<td><a href="' . htmlspecialchars(strlen($foreign_key[0]) ? preg_replace('~db=[^&]*~', "db=" . urlencode($foreign_key[0]), $SELF) : $SELF) . "table=" . urlencode($foreign_key[1]) . "\">$link</a>(<em>" . implode("</em>, <em>", $foreign_key[3]) . "</em>)</td>";
echo '<td><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '&amp;name=' . urlencode($name) . '">' . lang('Alter') . "</a></td>";
echo "</tr>\n";
}
echo "</table>\n";
}
echo '<p><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '">' . lang('Add foreign key') . "</a></p>\n";
}

if ($mysql->server_info >= 5) {
Expand Down

0 comments on commit 736c733

Please sign in to comment.