mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-17 15:59:06 +01:00
LSformElement::jsonCompositeAttribute: fix handling empty value & $onlyIfPresent parameter
This commit is contained in:
parent
a0ceb1dbdc
commit
fd17f87a57
1 changed files with 27 additions and 6 deletions
|
@ -242,18 +242,24 @@ class LSformElement_jsonCompositeAttribute extends LSformElement {
|
|||
|
||||
// Extract value form POST data
|
||||
$parseValues = array();
|
||||
$present = false;
|
||||
// API mode
|
||||
if ($this -> form -> api_mode) {
|
||||
$present = isset($_POST[$this -> name]);
|
||||
$json_values = $this -> getData($_POST, $this -> name);
|
||||
if (!is_array($json_values) || empty($json_values)) {
|
||||
self :: log_trace($this." -> getPostData(): not in POST data");
|
||||
return true;
|
||||
}
|
||||
self :: log_trace(
|
||||
$this." -> getPostData(onlyIfPresent=".($onlyIfPresent?1:0)."): ".
|
||||
"raw JSON values = ".varDump($json_values)
|
||||
);
|
||||
|
||||
$json_value_count = 0;
|
||||
foreach($json_values as $json_value) {
|
||||
foreach((is_array($json_values)?$json_values:array()) as $json_value) {
|
||||
$json_value_count += 1;
|
||||
$input_value = json_decode($json_value, true);
|
||||
self :: log_trace(
|
||||
$this." -> getPostData(onlyIfPresent=".($onlyIfPresent?1:0)."): ".
|
||||
"raw JSON value #$json_value_count = ".varDump($input_value)
|
||||
);
|
||||
if (!is_array($input_value)) {
|
||||
$this -> form -> setElementError(
|
||||
$this -> attr_html,
|
||||
|
@ -290,13 +296,19 @@ class LSformElement_jsonCompositeAttribute extends LSformElement {
|
|||
}
|
||||
|
||||
// Ignore empty value from form
|
||||
if (empty($unemptyComponents))
|
||||
if (empty($unemptyComponents)) {
|
||||
$this -> form -> setElementError(
|
||||
$this -> attr_html,
|
||||
getFData(_('JSON value #%{idx} is invalid (or empty).'), $json_value_count)
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
$parseValues[] = $parseValue;
|
||||
}
|
||||
}
|
||||
elseif (is_array($_POST[$this -> name.'__values_uuid'])) {
|
||||
$present = true;
|
||||
// HTML form mode
|
||||
foreach ($_POST[$this -> name.'__values_uuid'] as $uuid) {
|
||||
$parseValue = array();
|
||||
|
@ -330,6 +342,7 @@ class LSformElement_jsonCompositeAttribute extends LSformElement {
|
|||
}
|
||||
}
|
||||
|
||||
$return[$this -> name] = array();
|
||||
// Check extracted values
|
||||
foreach ($parseValues as $parseValue) {
|
||||
// Check component value
|
||||
|
@ -351,6 +364,14 @@ class LSformElement_jsonCompositeAttribute extends LSformElement {
|
|||
$return[$this -> name][] = json_encode($parseValue);
|
||||
}
|
||||
|
||||
if (!$present && $onlyIfPresent) {
|
||||
self :: log_trace(
|
||||
$this." -> getPostData(onlyIfPresent=".($onlyIfPresent?1:0)."): ".
|
||||
"not present in POST data, ignore it."
|
||||
);
|
||||
unset($return[$this -> name]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue