From 35e6c11a44adf53e5d779baae115221924aab751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Cap=C3=B3?= Date: Sun, 5 Mar 2017 02:17:30 +0100 Subject: [PATCH] created serialized-column - add edit-foreign enu-option json-column --- plugins/AdminerEditForeign.php | 43 ++++++++++++++++++++++++++ plugins/AdminerEnumOption.php | 37 ++++++++++++++++++++++ plugins/AdminerJsonColumn.php | 48 +++++++++++++++++++++++++++++ plugins/AdminerSerializedColumn.php | 23 ++++++++++++++ 4 files changed, 151 insertions(+) create mode 100644 plugins/AdminerEditForeign.php create mode 100644 plugins/AdminerEnumOption.php create mode 100644 plugins/AdminerJsonColumn.php create mode 100644 plugins/AdminerSerializedColumn.php 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 @@ +