NoSQL: Allow editing complex values
This commit is contained in:
parent
8a1b8910c1
commit
6317c7737d
|
@ -283,5 +283,5 @@ if (isset($_GET["elastic"])) {
|
||||||
$operators = array("=", "query");
|
$operators = array("=", "query");
|
||||||
$functions = array();
|
$functions = array();
|
||||||
$grouping = array();
|
$grouping = array();
|
||||||
$edit_functions = array();
|
$edit_functions = array(array("json"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,5 +290,5 @@ if (isset($_GET["mongo"])) {
|
||||||
$operators = array("=");
|
$operators = array("=");
|
||||||
$functions = array();
|
$functions = array();
|
||||||
$grouping = array();
|
$grouping = array();
|
||||||
$edit_functions = array();
|
$edit_functions = array(array("json"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,13 +173,17 @@ if (isset($_GET["simpledb"])) {
|
||||||
$key = idf_unescape($key);
|
$key = idf_unescape($key);
|
||||||
if ($val == "NULL") {
|
if ($val == "NULL") {
|
||||||
$delete["Attribute." . count($delete) . ".Name"] = $key;
|
$delete["Attribute." . count($delete) . ".Name"] = $key;
|
||||||
} elseif ($key != "itemName()") {
|
} elseif ($key != "itemName()") { //! allow changing itemName()
|
||||||
|
foreach ((array) $val as $k => $v) {
|
||||||
$insert["Attribute.$i.Name"] = $key;
|
$insert["Attribute.$i.Name"] = $key;
|
||||||
$insert["Attribute.$i.Value"] = idf_unescape($val);
|
$insert["Attribute.$i.Value"] = (is_array($val) ? $v : idf_unescape($v));
|
||||||
|
if (!$k) {
|
||||||
$insert["Attribute.$i.Replace"] = "true";
|
$insert["Attribute.$i.Replace"] = "true";
|
||||||
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$ids = $this->_extractIds($table, $queryWhere, $limit);
|
$ids = $this->_extractIds($table, $queryWhere, $limit);
|
||||||
$params = array('DomainName' => $table);
|
$params = array('DomainName' => $table);
|
||||||
return (!$insert || $this->_chunkRequest($ids, 'BatchPutAttributes', $params, $insert))
|
return (!$insert || $this->_chunkRequest($ids, 'BatchPutAttributes', $params, $insert))
|
||||||
|
@ -473,5 +477,5 @@ if (isset($_GET["simpledb"])) {
|
||||||
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "IS NOT NULL");
|
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "IS NOT NULL");
|
||||||
$functions = array();
|
$functions = array();
|
||||||
$grouping = array("count");
|
$grouping = array("count");
|
||||||
$edit_functions = array();
|
$edit_functions = array(array("json"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -781,6 +781,14 @@ function input($field, $value, $function) {
|
||||||
global $connection, $types, $adminer, $jush;
|
global $connection, $types, $adminer, $jush;
|
||||||
$name = h(bracket_escape($field["field"]));
|
$name = h(bracket_escape($field["field"]));
|
||||||
echo "<td class='function'>";
|
echo "<td class='function'>";
|
||||||
|
if (is_array($value) && !$function) {
|
||||||
|
$args = array($value);
|
||||||
|
if (version_compare(PHP_VERSION, 5.4) >= 0) {
|
||||||
|
$args[] = JSON_PRETTY_PRINT;
|
||||||
|
}
|
||||||
|
$value = call_user_func_array('json_encode', $args); //! requires PHP 5.2
|
||||||
|
$function = "json";
|
||||||
|
}
|
||||||
$reset = ($jush == "mssql" && $field["auto_increment"]);
|
$reset = ($jush == "mssql" && $field["auto_increment"]);
|
||||||
if ($reset && !$_POST["save"]) {
|
if ($reset && !$_POST["save"]) {
|
||||||
$function = null;
|
$function = null;
|
||||||
|
@ -823,6 +831,8 @@ function input($field, $value, $function) {
|
||||||
$attrs .= " cols='30' rows='$rows'" . ($rows == 1 ? " style='height: 1.2em;'" : ""); // 1.2em - line-height
|
$attrs .= " cols='30' rows='$rows'" . ($rows == 1 ? " style='height: 1.2em;'" : ""); // 1.2em - line-height
|
||||||
}
|
}
|
||||||
echo "<textarea$attrs>" . h($value) . '</textarea>';
|
echo "<textarea$attrs>" . h($value) . '</textarea>';
|
||||||
|
} elseif ($function == "json") {
|
||||||
|
echo "<textarea$attrs cols='50' rows='12' class='jush-js'>" . h($value) . '</textarea>';
|
||||||
} else {
|
} else {
|
||||||
// int(3) is only a display hint
|
// int(3) is only a display hint
|
||||||
$maxlength = (!preg_match('~int~', $field["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $field["length"], $match) ? ((preg_match("~binary~", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
|
$maxlength = (!preg_match('~int~', $field["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $field["length"], $match) ? ((preg_match("~binary~", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
|
||||||
|
@ -837,7 +847,7 @@ function input($field, $value, $function) {
|
||||||
|
|
||||||
/** Process edit input field
|
/** Process edit input field
|
||||||
* @param one field from fields()
|
* @param one field from fields()
|
||||||
* @return string
|
* @return string or false to leave the original value
|
||||||
*/
|
*/
|
||||||
function process_input($field) {
|
function process_input($field) {
|
||||||
global $adminer;
|
global $adminer;
|
||||||
|
@ -865,6 +875,14 @@ function process_input($field) {
|
||||||
if ($field["type"] == "set") {
|
if ($field["type"] == "set") {
|
||||||
return array_sum((array) $value);
|
return array_sum((array) $value);
|
||||||
}
|
}
|
||||||
|
if ($function == "json") {
|
||||||
|
$function = "";
|
||||||
|
$value = json_decode($value, true);
|
||||||
|
if (!is_array($value)) {
|
||||||
|
return false; //! report errors
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
if (preg_match('~blob|bytea|raw|file~', $field["type"]) && ini_bool("file_uploads")) {
|
if (preg_match('~blob|bytea|raw|file~', $field["type"]) && ini_bool("file_uploads")) {
|
||||||
$file = get_file("fields-$idf");
|
$file = get_file("fields-$idf");
|
||||||
if (!is_string($file)) {
|
if (!is_string($file)) {
|
||||||
|
|
Loading…
Reference in a new issue