]> git.joonet.de Git - adminer.git/commitdiff
Operate triggers
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Mon, 23 Jul 2007 15:23:42 +0000 (15:23 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Mon, 23 Jul 2007 15:23:42 +0000 (15:23 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@233 7c3ca157-0c34-0410-bff1-cbf682f78f5c

index.php
lang.inc.php
table.inc.php
trigger.inc.php [new file with mode: 0644]

index 136fb758ef951202e74f66811103ffa7d2d566ff..1e61b5953a97827c13dc43954620ea6f73262caf 100644 (file)
--- a/index.php
+++ b/index.php
@@ -73,6 +73,8 @@ if (isset($_GET["dump"])) {
                        include "./createv.inc.php";
                } elseif (isset($_GET["procedure"])) {
                        include "./procedure.inc.php";
+               } elseif (isset($_GET["trigger"])) {
+                       include "./trigger.inc.php";
                } elseif (isset($_GET["processlist"])) {
                        include "./processlist.inc.php";
                } else {
index 00a66fad47ac32f1327b02f59aed06f72865650f..f81e761a0b8de2fb9e73c091328c022da878621e 100644 (file)
@@ -143,6 +143,15 @@ static $translations = array(
                'Alter procedure' => 'Změnit proceduru',
                'Unable to operate routine' => 'Nepořadilo se zpracovat proceduru',
                'Return type' => 'Návratový typ',
+               'Add trigger' => 'Přidat spoušť',
+               'Trigger has been dropped.' => 'Spoušť byla odstraněna.',
+               'Trigger has been altered.' => 'Spoušť byla změněna.',
+               'Trigger has been created.' => 'Spoušť byla vytvořena.',
+               'Alter trigger' => 'Změnit spoušť',
+               'Create trigger' => 'Vytvořit spoušť',
+               'Unable to operate trigger' => 'Nepořadilo se zpracovat spoušť',
+               'Time' => 'Čas',
+               'Event' => 'Událost',
        ),
 );
 
index 7b576414f87a8cdf3717091f9a214588153bd601..e11fe9bb893ab630c0a4dbb0e26cc6986f144d88 100644 (file)
@@ -59,14 +59,15 @@ if (!$result) {
 }
 
 if ($mysql->server_info >= 5) {
+       echo "<h3>" . lang('Triggers') . "</h3>\n";
        $result = $mysql->query("SHOW TRIGGERS LIKE '" . $mysql->escape_string(addcslashes($_GET["table"], "%_")) . "'");
        if ($result->num_rows) {
-               echo "<h3>" . lang('Triggers') . "</h3>\n";
                echo "<table border='0' cellspacing='0' cellpadding='2'>\n";
                while ($row = $result->fetch_assoc()) {
-                       echo "<tr valign='top'><th>$row[Timing]</th><th>$row[Event]</th><td><pre class='jush-sql'>" . htmlspecialchars($row["Statement"]) . "</pre></td></tr>\n";
+                       echo "<tr valign='top'><th>$row[Timing]</th><th>$row[Event]</th><td>" . htmlspecialchars($row["Trigger"]) . "</td><td><a href=\"" . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '&amp;name=' . urlencode($row["Trigger"]) . '">' . lang('Alter') . "</a></td></tr>\n";
                }
                echo "</table>\n";
        }
        $result->free();
+       echo '<p><a href="' . htmlspecialchars($SELF) . 'trigger=' . urlencode($_GET["table"]) . '">' . lang('Add trigger') . "</a></p>\n";
 }
diff --git a/trigger.inc.php b/trigger.inc.php
new file mode 100644 (file)
index 0000000..acd2151
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+$trigger_time = array("BEFORE", "AFTER");
+$trigger_event = array("INSERT", "UPDATE", "DELETE");
+
+if ($_POST && !$error) {
+       if (strlen($_GET["name"]) && $mysql->query("DROP TRIGGER " . idf_escape($_GET["name"])) && $_POST["drop"]) {
+               redirect($SELF . "table=" . urlencode($_GET["trigger"]), lang('Trigger has been dropped.'));
+       }
+       if (!$_POST["drop"]) {
+               if (in_array($_POST["Timing"], $trigger_time) && in_array($_POST["Event"], $trigger_event) && $mysql->query(
+                       "CREATE TRIGGER " . idf_escape($_POST["Trigger"]) . " $_POST[Timing] $_POST[Event] ON " . idf_escape($_GET["trigger"]) . " FOR EACH ROW $_POST[Statement]"
+               )) {
+                       redirect($SELF . "table=" . urlencode($_GET["trigger"]), (strlen($_GET["name"]) ? lang('Trigger has been altered.') : lang('Trigger has been created.')));
+               }
+       }
+       $error = $mysql->error;
+}
+
+page_header(strlen($_GET["name"]) ? lang('Alter trigger') . ": " . htmlspecialchars($_GET["name"]) : lang('Create trigger'));
+
+if ($_POST) {
+       $row = $_POST;
+       echo "<p class='error'>" . lang('Unable to operate trigger') . ": " . htmlspecialchars($error) . "</p>\n";
+} elseif (strlen($_GET["name"])) {
+       $result = $mysql->query("SHOW TRIGGERS LIKE '" . $mysql->escape_string(addcslashes($_GET["trigger"], "%_")) . "'");
+       while ($row = $result->fetch_assoc()) {
+               if ($row["Trigger"] === $_GET["name"]) {
+                       break;
+               }
+       }
+       $result->free();
+} else {
+       $row = array();
+}
+?>
+
+<form action="" method="post" id="form">
+<table border="0" cellspacing="0" cellpadding="2">
+<tr><th><?php echo lang('Name'); ?></th><td><input name="Trigger" value="<?php echo htmlspecialchars($row["Trigger"]); ?>" maxlength="64" /></td></tr>
+<tr><th><?php echo lang('Time'); ?></th><td><select name="Timing"><?php echo optionlist($trigger_time, $row["Timing"]); ?></select></td></tr>
+<tr><th><?php echo lang('Event'); ?></th><td><select name="Event"><?php echo optionlist($trigger_event, $row["Event"]); ?></select></td></tr>
+</table>
+<p><textarea name="Statement" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["Statement"]); ?></textarea></p>
+<p>
+<input type="hidden" name="token" value="<?php echo $token; ?>" />
+<input type="submit" value="<?php echo lang('Save'); ?>" />
+<?php if (strlen($_GET["name"])) { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>" /><?php } ?>
+</p>
+</form>