$row = (array) trigger($name) + array("Trigger" => $TABLE . "_bi"); if ($_POST) { if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) && in_array($_POST["Event"], $trigger_options["Event"]) && in_array($_POST["Type"], $trigger_options["Type"])) { // don't use drop_create() because there may not be more triggers for the same action $on = " ON " . table($TABLE); $drop = "DROP TRIGGER " . idf_escape($name) . ($jush == "pgsql" ? $on : ""); $location = ME . "table=" . urlencode($TABLE); if ($_POST["drop"]) { query_adminer_redirect($drop, $location, lang('Trigger has been dropped.')); } else { if ($name != "") { queries($drop); } queries_adminer_redirect($location, $name != "" ? lang('Trigger has been altered.') : lang('Trigger has been created.'), queries(create_trigger($on, $_POST))); if ($name != "") { queries(create_trigger($on, $row + array("Type" => reset($trigger_options["Type"])))); } } } $row = $_POST; } page_header($name != "" ? lang('Alter trigger') . ": " . h($name) : lang('Create trigger'), $error, array("table" => $TABLE)); ?> <form action="" method="post" id="form"> <table cellspacing="0"> <tr><th><?php echo lang('Time'); ?> <td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "triggerChange(/^" . preg_quote($TABLE, "/") . "_[ba][iud]\$/, '" . is_adminer_escape($TABLE) . "', this.form);");
if (isset($_POST['acc_trigger_open'])) { $s_triggers = toggle_all_triggers($s_triggers, 'open'); } // 'Close All' button if (isset($_POST['acc_trigger_close'])) { $s_triggers = toggle_all_triggers($s_triggers, 'close'); } // the Create button on the Triggers panel was pushed if (isset($_POST['acc_trigger_create'])) { $trigger_add_flag = TRUE; $s_triggerdefs = array('table' => NULL, 'type' => NULL, 'status' => NULL, 'source' => "BEGIN\n\nEND !!"); } // create the new trigger ... if (isset($_POST['acc_trigger_create_doit'])) { save_triggerdefs(); if (create_trigger($s_triggerdefs) == TRUE) { $s_triggers[$s_triggerdefs['name']] = $s_triggerdefs; $s_triggers[$s_triggerdefs['name']]['display'] = 'open'; $s_triggerdefs = array(); $s_triggers_valid = FALSE; } else { $trigger_add_flag = TRUE; } } // the Modify button on the Triggers panel was pushed if (isset($_POST['acc_trigger_mod']) && $_POST['acc_trigger_mod_name'] != '') { $mname = $_POST['acc_trigger_mod_name']; $s_triggerdefs = $s_triggers[$mname]; $s_triggerdefs['name'] = $mname; if (empty($s_triggers[$s_triggerdefs['name']]['source'])) { $s_triggers[$s_triggerdefs['name']]['source'] = get_trigger_source($s_triggerdefs['name']);
function display_meta_sign() { echo '<h1>RULES LIST</h1>'; if (isset($_GET['remove_trigger'])) { if (!check_csrf(TRUE)) { error('[display_meta_sign] REMOVE TRIGGER CSRF ATTEMPT', 'SECURITY'); } remove_trigger($_GET['remove_trigger']); } if (isset($_POST['CREATE']) && isset($_POST['field']) && isset($_POST['description']) && isset($_POST['label']) && isset($_POST['criticity']) && isset($_POST['type']) && ($_POST['type'] == 'std' && isset($_POST['field']) && isset($_POST['match']) || $_POST['type'] == 'meta' && isset($_POST['meta_field']) && isset($_POST['meta_match']))) { $table = ""; $description = $_POST['description']; $label = $_POST['label']; $criticity = $_POST['criticity']; $field = ''; $type = $_POST['type']; $match = ''; if ($type == "std" && isset($_POST['field'])) { $field = $_POST['field']; $match = $_POST['match']; } if ($type == "meta" && isset($_POST['meta_field'])) { $match = $_POST['meta_match']; $field = $_POST['meta_field']; } create_trigger($description, $label, $criticity, $field, $match, $type); } $triggerz = get_triggerz(); echo '<table>'; while ($res = $triggerz->fetchArray()) { $disp = '<a href="' . $_SERVER['PHP_SELF'] . '?meta_sign&view_trigger=' . secure_display($res['name']) . '">VIEW SQL TRIGGER</a>'; if (isset($_GET['view_trigger']) && $_GET['view_trigger'] == $res['name']) { $disp = secure_display($res['sql']); } echo '<tr><th class="std">' . secure_display($res['name']) . '</th><td>' . $disp . '</td><td><a href="' . $_SERVER['PHP_SELF'] . '?meta_sign&crt=' . gen_csrf(TRUE) . '&remove_trigger=' . secure_display($res['name']) . '" onclick="return confirm(\'Are you sure?\');">REMOVE</a></td></tr>'; } echo '</table>'; $meta_fields_list = ''; $meta_fields = get_metadata_names(); while ($field = $meta_fields->fetchArray()) { $meta_fields_list .= '<option value="' . $field['name'] . '">' . secure_display($field['name']) . '</option>'; } echo '<h1>CREATE RULE</h1> <form action="' . $_SERVER['PHP_SELF'] . '?meta_sign" method="POST"> ' . gen_csrf() . ' <table> <tr><th class="std">LABEL</th><td class="std"><input type="text" name="label" value=""></td></tr> <tr><th class="std">DESCRIPTION</th><td class="std"><input type="text" name="description" value=""></td></tr> <tr><th class="std">CRITICITY</th><td class="std"><select name="criticity"><option value="1">High</option><option value="2">Medium</option><option value="3">Low</option></select></td></tr> <tr><th class="std"> <select name="field"> <option value="md5">MD5</option> <option value="sign">SIGNATURE</option> </select> matches</th><td class="std"><input type="text" name="match" /> (input data is in LIKE SQL statements, use "%" as wildcards)</td><td><input type="radio" name="type" value="std" checked /></td></tr> <tr><th class="std"> <select name="meta_field"> ' . $meta_fields_list . ' </select> matches</th><td class="std"><input type="text" name="meta_match" /> (input data is in LIKE SQL statements, use "%" as wildcards)</td><td><input type="radio" name="type" value="meta" /></td></tr> <tr><th colspan="2"><input type="submit" name="CREATE" value="CREATE"/></th></tr> </table> </form>'; }