]> git.agnieray.net Git - galette.git/commitdiff
Handle imported dynamic choice fields from value (existing or not)
authorJohan Cwiklinski <johan@x-tnd.be>
Sat, 1 Jul 2023 13:01:43 +0000 (15:01 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Sat, 1 Jul 2023 13:01:43 +0000 (15:01 +0200)
closes #1650

galette/lib/Galette/Entity/DynamicFieldsHandle.php

index 79495fc1e9971aa418c9ded7e18a851849805b14..c2cc6e115350ed11bc5db3773fdd02d11d52a927 100644 (file)
@@ -131,7 +131,22 @@ class DynamicFieldsHandle
                         $field = $this->dynamic_fields[$f->{DynamicField::PK}];
                         if ($field->hasFixedValues()) {
                             $choices = $field->getValues();
-                            $f->text_val = $choices[$f->field_val];
+                            if (!isset($choices[$f->field_val])) {
+                                if ($idx = array_search($f->field_val, $choices)) {
+                                    //text has been stored (from CSV import?), but we want the index
+                                    $f->text_val = $f->field_val;
+                                    $f->field_val = $idx;
+                                } else {
+                                    //something went wrong here :(
+                                    Analog::log(
+                                        'Dynamic choice value "' . $f->field_val . '" does not exists!',
+                                        Analog::WARNING
+                                    );
+                                    $f->text_val = $f->field_val;
+                                }
+                            } else {
+                                $f->text_val = $choices[$f->field_val];
+                            }
                         }
                         $this->current_values[$f->{DynamicField::PK}][] = array_filter(
                             (array)$f,