Ejemplo n.º 1
0
/** Drop old object and create a new one
* @param string drop old object query
* @param string create new object query
* @param string drop new object query
* @param string create test object query
* @param string drop test object query
* @param string
* @param string
* @param string
* @param string
* @param string
* @param string
* @return null redirect in success
*/
function drop_create($drop, $create, $drop_created, $test, $drop_test, $location, $message_drop, $message_alter, $message_create, $old_name, $new_name)
{
    if ($_POST["drop"]) {
        query_redirect($drop, $location, $message_drop);
    } elseif ($old_name == "") {
        query_redirect($create, $location, $message_create);
    } elseif ($old_name != $new_name) {
        $created = queries($create);
        queries_redirect($location, $message_alter, $created && queries($drop));
        if ($created) {
            queries($drop_created);
        }
    } else {
        queries_redirect($location, $message_alter, queries($test) && queries($drop_test) && queries($drop) && queries($create));
    }
}
Ejemplo n.º 2
0
<?php

$TABLE = $_GET["foreign"];
if ($_POST && !$error && !$_POST["add"] && !$_POST["change"] && !$_POST["change-js"]) {
    if ($_POST["drop"]) {
        query_redirect("ALTER TABLE " . table($TABLE) . "\nDROP " . ($jush == "sql" ? "FOREIGN KEY " : "CONSTRAINT ") . idf_escape($_GET["name"]), ME . "table=" . urlencode($TABLE), lang('Foreign key has been dropped.'));
    } else {
        $source = array_filter($_POST["source"], 'strlen');
        ksort($source);
        // enforce input order
        $target = array();
        foreach ($source as $key => $val) {
            $target[$key] = $_POST["target"][$key];
        }
        query_redirect("ALTER TABLE " . table($TABLE) . ($_GET["name"] != "" ? "\nDROP " . ($jush == "sql" ? "FOREIGN KEY " : "CONSTRAINT ") . idf_escape($_GET["name"]) . "," : "") . "\nADD FOREIGN KEY (" . implode(", ", array_map('idf_escape', $source)) . ") REFERENCES " . table($_POST["table"]) . " (" . implode(", ", array_map('idf_escape', $target)) . ")" . (ereg("^({$on_actions})\$", $_POST["on_delete"]) ? " ON DELETE {$_POST['on_delete']}" : "") . (ereg("^({$on_actions})\$", $_POST["on_update"]) ? " ON UPDATE {$_POST['on_update']}" : ""), ME . "table=" . urlencode($TABLE), $_GET["name"] != "" ? lang('Foreign key has been altered.') : lang('Foreign key has been created.'));
        $error = lang('Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.') . "<br>{$error}";
        //! no partitioning
    }
}
page_header(lang('Foreign key'), $error, array("table" => $TABLE), $TABLE);
$row = array("table" => $TABLE, "source" => array(""));
if ($_POST) {
    $row = $_POST;
    ksort($row["source"]);
    if ($_POST["add"]) {
        $row["source"][] = "";
    } elseif ($_POST["change"] || $_POST["change-js"]) {
        $row["target"] = array();
    }
} elseif ($_GET["name"] != "") {
    $foreign_keys = foreign_keys($TABLE);
Ejemplo n.º 3
0
<?php

$TYPE = $_GET["type"];
if ($_POST && !$error) {
    $link = substr(ME, 0, -1);
    if ($_POST["drop"]) {
        query_redirect("DROP TYPE " . idf_escape($TYPE), $link, lang('Type has been dropped.'));
    } else {
        query_redirect("CREATE TYPE " . idf_escape($_POST["name"]) . " {$_POST['as']}", $link, lang('Type has been created.'));
    }
}
page_header($TYPE != "" ? lang('Alter type') . ": " . h($TYPE) : lang('Create type'), $error);
$row = $_POST;
if (!$row) {
    $row = array("as" => "AS ");
}
?>

<form action="" method="post">
<p>
<?php 
if ($TYPE != "") {
    echo "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n";
} else {
    echo "<input name='name' value='" . h($row['name']) . "'>\n";
    textarea("as", $row["as"]);
    echo "<p><input type='submit' value='" . lang('Save') . "'>\n";
}
?>
<input type="hidden" name="token" value="<?php 
echo $token;
Ejemplo n.º 4
0
<?php

$TYPE = $_GET["type"];
$row = $_POST;
if ($_POST && !$error) {
    $link = substr(ME, 0, -1);
    if ($_POST["drop"]) {
        query_redirect("DROP TYPE " . idf_escape($TYPE), $link, lang('Type has been dropped.'));
    } else {
        query_redirect("CREATE TYPE " . idf_escape(trim($row["name"])) . " {$row['as']}", $link, lang('Type has been created.'));
    }
}
page_header($TYPE != "" ? lang('Alter type') . ": " . h($TYPE) : lang('Create type'), $error);
if (!$row) {
    $row["as"] = "AS ";
}
?>

<form action="" method="post">
<p>
<?php 
if ($TYPE != "") {
    echo "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n";
} else {
    echo "<input name='name' value='" . h($row['name']) . "' autocapitalize='off'>\n";
    textarea("as", $row["as"]);
    echo "<p><input type='submit' value='" . lang('Save') . "'>\n";
}
?>
<input type="hidden" name="token" value="<?php 
echo $token;
Ejemplo n.º 5
0
<?php

$SEQUENCE = $_GET["sequence"];
$row = $_POST;
if ($_POST && !$error) {
    $link = substr(ME, 0, -1);
    $name = trim($row["name"]);
    if ($_POST["drop"]) {
        query_redirect("DROP SEQUENCE " . idf_escape($SEQUENCE), $link, lang('Sequence has been dropped.'));
    } elseif ($SEQUENCE == "") {
        query_redirect("CREATE SEQUENCE " . idf_escape($name), $link, lang('Sequence has been created.'));
    } elseif ($SEQUENCE != $name) {
        query_redirect("ALTER SEQUENCE " . idf_escape($SEQUENCE) . " RENAME TO " . idf_escape($name), $link, lang('Sequence has been altered.'));
    } else {
        redirect($link);
    }
}
page_header($SEQUENCE != "" ? lang('Alter sequence') . ": " . h($SEQUENCE) : lang('Create sequence'), $error);
if (!$row) {
    $row["name"] = $SEQUENCE;
}
?>

<form action="" method="post">
<p><input name="name" value="<?php 
echo h($row["name"]);
?>
" autocapitalize="off">
<input type="submit" value="<?php 
echo lang('Save');
?>
Ejemplo n.º 6
0
    ksort($row["source"]);
    // enforce input order
    $target = array();
    foreach ($row["source"] as $key => $val) {
        $target[$key] = $row["target"][$key];
    }
    $row["target"] = $target;
    if ($jush == "sqlite") {
        queries_redirect($location, $message, recreate_table($TABLE, $TABLE, array(), array(), array(" {$name}" => $_POST["drop"] ? "" : " " . format_foreign_key($row))));
    } else {
        $alter = "ALTER TABLE " . table($TABLE);
        $drop = "\nDROP " . ($jush == "sql" ? "FOREIGN KEY " : "CONSTRAINT ") . idf_escape($name);
        if ($_POST["drop"]) {
            query_redirect($alter . $drop, $location, $message);
        } else {
            query_redirect($alter . ($name != "" ? "{$drop}," : "") . "\nADD" . format_foreign_key($row), $location, $message);
            $error = lang('Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.') . "<br>{$error}";
            //! no partitioning
        }
    }
}
page_header(lang('Foreign key'), $error, array("table" => $TABLE), h($TABLE));
if ($_POST) {
    ksort($row["source"]);
    if ($_POST["add"]) {
        $row["source"][] = "";
    } elseif ($_POST["change"] || $_POST["change-js"]) {
        $row["target"] = array();
    }
} elseif ($name != "") {
    $foreign_keys = foreign_keys($TABLE);
Ejemplo n.º 7
0
                    if (!create_database($db, $row["collation"])) {
                        $success = false;
                    }
                    $last = $db;
                }
            }
            restart_session();
            set_session("dbs", null);
            queries_redirect(ME . "db=" . urlencode($last), lang('Database has been created.'), $success);
        }
    } else {
        // alter database
        if (!$row["collation"]) {
            redirect(substr(ME, 0, -1));
        }
        query_redirect("ALTER DATABASE " . idf_escape($name) . (preg_match('~^[a-z0-9_]+$~i', $row["collation"]) ? " COLLATE {$row['collation']}" : ""), substr(ME, 0, -1), lang('Database has been altered.'));
    }
}
page_header(DB != "" ? lang('Alter database') : lang('Create database'), $error, array(), h(DB));
$collations = collations();
$name = DB;
if ($_POST) {
    $name = $row["name"];
} elseif (DB != "") {
    $row["collation"] = db_collation(DB, $collations);
} elseif ($jush == "sql") {
    // propose database name with limited privileges
    foreach (get_vals("SHOW GRANTS") as $grant) {
        if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $grant, $match) && $match[1]) {
            $name = stripcslashes(idf_unescape("`{$match['2']}`"));
            break;
Ejemplo n.º 8
0
<?php

if ($_POST && !$error) {
    $link = preg_replace('~ns=[^&]*&~', '', ME) . "ns=";
    if ($_POST["drop"]) {
        query_redirect("DROP SCHEMA " . idf_escape($_GET["ns"]), $link, lang('Schema has been dropped.'));
    } else {
        $link .= urlencode($_POST["name"]);
        if ($_GET["ns"] == "") {
            query_redirect("CREATE SCHEMA " . idf_escape($_POST["name"]), $link, lang('Schema has been created.'));
        } elseif ($_GET["ns"] != $_POST["name"]) {
            query_redirect("ALTER SCHEMA " . idf_escape($_GET["ns"]) . " RENAME TO " . idf_escape($_POST["name"]), $link, lang('Schema has been altered.'));
            //! sp_rename in MS SQL
        } else {
            redirect($link);
        }
    }
}
page_header($_GET["ns"] != "" ? lang('Alter schema') : lang('Create schema'), $error);
$row = $_POST;
if (!$row) {
    $row = array("name" => $_GET["ns"]);
}
?>

<form action="" method="post">
<p><input name="name" value="<?php 
echo h($row["name"]);
?>
">
<input type="submit" value="<?php 
Ejemplo n.º 9
0
                if (count($databases) == 1 || $db != "") {
                    // ignore empty lines but always try to create single database
                    if (!create_database($db, $_POST["collation"])) {
                        $success = false;
                    }
                    $last = $db;
                }
            }
            queries_redirect(ME . "db=" . urlencode($last), lang('Database has been created.'), $success);
        }
    } else {
        // alter database
        if (!$_POST["collation"]) {
            redirect(substr(ME, 0, -1));
        }
        query_redirect("ALTER DATABASE " . idf_escape($name) . (eregi('^[a-z0-9_]+$', $_POST["collation"]) ? " COLLATE {$_POST['collation']}" : ""), substr(ME, 0, -1), lang('Database has been altered.'));
    }
}
page_header(DB != "" ? lang('Alter database') : lang('Create database'), $error, array(), DB);
$collations = collations();
$name = DB;
$collate = null;
if ($_POST) {
    $name = $_POST["name"];
    $collate = $_POST["collation"];
} elseif (DB != "") {
    $collate = db_collation(DB, $collations);
} elseif ($jush == "sql") {
    // propose database name with limited privileges
    foreach (get_vals("SHOW GRANTS") as $grant) {
        if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $grant, $match) && $match[1]) {
Ejemplo n.º 10
0
                }
                if (preg_match('~ WITH GRANT OPTION~', $row[0])) {
                    //! don't check inside strings and identifiers
                    $grants["{$match['2']}{$val['2']}"]["GRANT OPTION"] = true;
                }
            }
        }
        if (preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~", $row[0], $match)) {
            $old_pass = $match[1];
        }
    }
}
if ($_POST && !$error) {
    $old_user = isset($_GET["host"]) ? q($USER) . "@" . q($_GET["host"]) : "''";
    if ($_POST["drop"]) {
        query_redirect("DROP USER {$old_user}", ME . "privileges=", lang('User has been dropped.'));
    } else {
        $new_user = q($_POST["user"]) . "@" . q($_POST["host"]);
        // if $_GET["host"] is not set then $new_user is always different
        $pass = $_POST["pass"];
        if ($pass != '' && !$_POST["hashed"]) {
            // compute hash in a separate query so that plain text password is not saved to history
            $pass = $connection->result("SELECT PASSWORD(" . q($pass) . ")");
            $error = !$pass;
        }
        $created = false;
        if (!$error) {
            if ($old_user != $new_user) {
                $created = queries(($connection->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " {$new_user} IDENTIFIED BY PASSWORD " . q($pass));
                $error = !$created;
            } elseif ($pass != $old_pass) {
Ejemplo n.º 11
0
<?php

$EVENT = $_GET["event"];
$intervals = array("YEAR", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND");
$statuses = array("ENABLED" => "ENABLE", "DISABLED" => "DISABLE", "SLAVESIDE_DISABLED" => "DISABLE ON SLAVE");
$row = $_POST;
if ($_POST && !$error) {
    if ($_POST["drop"]) {
        query_redirect("DROP EVENT " . idf_escape($EVENT), substr(ME, 0, -1), lang('Event has been dropped.'));
    } elseif (in_array($row["INTERVAL_FIELD"], $intervals) && isset($statuses[$row["STATUS"]])) {
        $schedule = "\nON SCHEDULE " . ($row["INTERVAL_VALUE"] ? "EVERY " . q($row["INTERVAL_VALUE"]) . " {$row['INTERVAL_FIELD']}" . ($row["STARTS"] ? " STARTS " . q($row["STARTS"]) : "") . ($row["ENDS"] ? " ENDS " . q($row["ENDS"]) : "") : "AT " . q($row["STARTS"])) . " ON COMPLETION" . ($row["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE";
        queries_redirect(substr(ME, 0, -1), $EVENT != "" ? lang('Event has been altered.') : lang('Event has been created.'), queries(($EVENT != "" ? "ALTER EVENT " . idf_escape($EVENT) . $schedule . ($EVENT != $row["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($row["EVENT_NAME"]) : "") : "CREATE EVENT " . idf_escape($row["EVENT_NAME"]) . $schedule) . "\n" . $statuses[$row["STATUS"]] . " COMMENT " . q($row["EVENT_COMMENT"]) . rtrim(" DO\n{$row['EVENT_DEFINITION']}", ";") . ";"));
    }
}
page_header($EVENT != "" ? lang('Alter event') . ": " . h($EVENT) : lang('Create event'), $error);
if (!$row && $EVENT != "") {
    $rows = get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = " . q(DB) . " AND EVENT_NAME = " . q($EVENT));
    $row = reset($rows);
}
?>

<form action="" method="post">
<table cellspacing="0">
<tr><th><?php 
echo lang('Name');
?>
<td><input name="EVENT_NAME" value="<?php 
echo h($row["EVENT_NAME"]);
?>
" maxlength="64" autocapitalize="off">
<tr><th title="datetime"><?php 
Ejemplo n.º 12
0
<?php

$TABLE = $_GET["trigger"];
$name = $_GET["name"];
$trigger_options = trigger_options();
$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_redirect($drop, $location, lang('Trigger has been dropped.'));
        } else {
            if ($name != "") {
                queries($drop);
            }
            queries_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">
Ejemplo n.º 13
0
/** Drop old object and create a new one
* @param string drop query
* @param string create query
* @param string
* @param string
* @param string
* @param string
* @param string
* @return bool dropped
*/
function drop_create($drop, $create, $location, $message_drop, $message_alter, $message_create, $name)
{
    if ($_POST["drop"]) {
        return query_redirect($drop, $location, $message_drop, true, !$_POST["dropped"]);
    }
    $dropped = $name != "" && ($_POST["dropped"] || queries($drop));
    $created = queries($create);
    if (!queries_redirect($location, $name != "" ? $message_alter : $message_create, $created) && $dropped) {
        redirect(null, $message_drop);
    }
    return $dropped;
}
Ejemplo n.º 14
0
foreach ($referencable_primary as $table_name => $field) {
    $foreign_keys[str_replace("`", "``", $table_name) . "`" . str_replace("`", "``", $field["field"])] = $table_name;
    // not idf_escape() - used in JS
}
$orig_fields = array();
$orig_status = array();
if ($TABLE != "") {
    $orig_fields = fields($TABLE);
    $orig_status = table_status($TABLE);
}
if ($_POST && !$_POST["fields"]) {
    $_POST["fields"] = array();
}
if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"] && !$_POST["down"]) {
    if ($_POST["drop"]) {
        query_redirect("DROP TABLE " . table($TABLE), substr(ME, 0, -1), lang('Table has been dropped.'));
    } else {
        $fields = array();
        $all_fields = array();
        $use_all_fields = false;
        $foreign = array();
        ksort($_POST["fields"]);
        $orig_field = reset($orig_fields);
        $after = " FIRST";
        foreach ($_POST["fields"] as $key => $field) {
            $foreign_key = $foreign_keys[$field["type"]];
            $type_field = $foreign_key !== null ? $referencable_primary[$foreign_key] : $field;
            //! can collide with user defined type
            if ($field["field"] != "") {
                if (!$field["has_default"]) {
                    $field["default"] = null;
Ejemplo n.º 15
0
/** Redirect by remembered queries
* @param string
* @param string
* @param bool
* @return bool
*/
function queries_redirect($location, $message, $redirect)
{
    list($queries, $time) = queries(null);
    return query_redirect($queries, $location, $message, $redirect, false, !$redirect, $time);
}
Ejemplo n.º 16
0
if ($_POST && !$error) {
    $name = trim($row["name"]);
    $as = " AS\n{$row['select']}";
    $location = ME . "table=" . urlencode($name);
    $message = lang('View has been altered.');
    if ($_GET["materialized"]) {
        $type = "MATERIALIZED VIEW";
    } else {
        $type = "VIEW";
        if ($jush == "pgsql") {
            $status = table_status($name);
            $type = $status ? strtoupper($status["Engine"]) : $type;
        }
    }
    if (!$_POST["drop"] && $TABLE == $name && $jush != "sqlite" && $type != "MATERIALIZED VIEW") {
        query_redirect(($jush == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($name) . $as, $location, $message);
    } else {
        $temp_name = $name . "_adminer_" . uniqid();
        drop_create("DROP {$type} " . table($TABLE), "CREATE {$type} " . table($name) . $as, "DROP {$type} " . table($name), "CREATE {$type} " . table($temp_name) . $as, "DROP {$type} " . table($temp_name), $_POST["drop"] ? substr(ME, 0, -1) : $location, lang('View has been dropped.'), $message, lang('View has been created.'), $TABLE, $name);
    }
}
if (!$_POST && $TABLE != "") {
    $row = view($TABLE);
    $row["name"] = $TABLE;
    if (!$error) {
        $error = error();
    }
}
page_header($TABLE != "" ? lang('Alter view') : lang('Create view'), $error, array("table" => $TABLE), h($TABLE));
?>
Ejemplo n.º 17
0
    }
    if (isset($_POST["delete"])) {
        query_redirect("DELETE" . limit1("FROM " . table($TABLE), " WHERE {$where}"), $location, array(lang('Item has been deleted.'), 'success'));
    } else {
        $set = array();
        foreach ($fields as $name => $field) {
            $val = process_input($field);
            if ($val !== false && $val !== null) {
                $set[idf_escape($name)] = $update ? "\n" . idf_escape($name) . " = {$val}" : $val;
            }
        }
        if ($update) {
            if (!$set) {
                redirect($location);
            }
            query_redirect("UPDATE" . limit1(table($TABLE) . " SET" . implode(",", $set), "\nWHERE {$where}"), $location, array(lang('Item has been updated.'), 'success'));
        } else {
            $result = insert_into($TABLE, $set);
            $last_id = $result ? last_id() : 0;
            queries_redirect($location, array(lang('Item%s has been inserted.', $last_id ? " {$last_id}" : ""), 'success'), $result);
            //! link
        }
    }
}
$table_name = $adminer->tableName(table_status($TABLE));
page_header($update ? lang('Edit') : lang('Insert'), $error, array("select" => array($TABLE, $table_name)), $table_name);
$adminer->selectLinks($table_status, '');
// @todo are params OK?
$row = null;
if ($_POST["save"]) {
    $row = (array) $_POST["fields"];
Ejemplo n.º 18
0
/** Redirect by remembered queries
* @param string
* @param string
* @param bool
* @return bool
*/
function queries_redirect($location, $message, $redirect)
{
    return query_redirect(queries(), $location, $message, $redirect, false, !$redirect);
}