diff --git a/plugins/AdminerEditForeign.php b/plugins/AdminerEditForeign.php new file mode 100644 index 0000000..0b5227c --- /dev/null +++ b/plugins/AdminerEditForeign.php @@ -0,0 +1,43 @@ +_limit = $limit; + } + + function editInput($table, $field, $attrs, $value) { + static $foreignTables = array(); + static $values = array(); + $foreignKeys = &$foreignTables[$table]; + if ($foreignKeys === null) { + $foreignKeys = column_foreign_keys($table); + } + foreach ((array) $foreignKeys[$field["field"]] as $foreignKey) { + if (count($foreignKey["source"]) == 1) { + $target = $foreignKey["table"]; + $id = $foreignKey["target"][0]; + $options = &$values[$target][$id]; + if (!$options) { + $column = idf_escape($id); + if (preg_match('~binary~', $field["type"])) { + $column = "HEX($column)"; + } + $options = array("" => "") + get_vals("SELECT $column FROM " . table($target) . " ORDER BY 1" . ($this->_limit ? " LIMIT " . ($this->_limit + 1) : "")); + if ($this->_limit && count($options) - 1 > $this->_limit) { + return; + } + } + return "" . optionlist($options, $value) . ""; + } + } + } + +} diff --git a/plugins/AdminerEnumOption.php b/plugins/AdminerEnumOption.php new file mode 100644 index 0000000..3aad975 --- /dev/null +++ b/plugins/AdminerEnumOption.php @@ -0,0 +1,37 @@ +