Skip to content

Commit

Permalink
Merge pull request #156 from esmero/ISSUE-155
Browse files Browse the repository at this point in the history
ISSUE-155: Fixes Objects (single value entry for an webform element) being misidentified
  • Loading branch information
DiegoPino authored May 24, 2023
2 parents 477cf35 + 6fc76ac commit f78b6ca
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/Controller/StrawberryRunnerModalController.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,15 @@ public function openModalForm(WebformInterface $webform = NULL, Request $request
];
}
else {
if (!function_exists('array_is_list')) {
function array_is_list(array $arr)
{
if ($arr === []) {
return true;
}
return array_keys($arr) === range(0, count($arr) - 1);
}
}
$data['data'] = $data_defaults + json_decode($stored_value,true);
// In case the saved data is "single valued" for a key
// But the corresponding webform element is not
Expand All @@ -173,6 +182,9 @@ public function openModalForm(WebformInterface $webform = NULL, Request $request
if (isset($elements_in_datum['#webform_multiple']) &&
$elements_in_datum['#webform_multiple']!== FALSE) {
$data['data'][$key] = (array) $data['data'][$key];
if (!array_is_list($data['data'][$key])) {
$data['data'][$key] = [ $data['data'][$key] ];
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,16 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
];
}
else {
if (!function_exists('array_is_list')) {
function array_is_list(array $arr)
{
if ($arr === []) {
return true;
}
return array_keys($arr) === range(0, count($arr) - 1);
}
}

$data['data'] = $data_defaults + json_decode($stored_value, TRUE);

// In case the saved data is "single valued" for a key
Expand All @@ -374,6 +384,9 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
$elements_in_datum['#webform_multiple'] !== FALSE) {
//@TODO should we log this operation for admins?
$data['data'][$key] = (array) $data['data'][$key];
if (!array_is_list($data['data'][$key])) {
$data['data'][$key] = [ $data['data'][$key] ];
}
}
}
}
Expand Down

0 comments on commit f78b6ca

Please sign in to comment.