Skip to content

Commit 1594e6f

Browse files
committed
fix(question): make import resilient against missing parameters
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
1 parent 9ea1460 commit 1594e6f

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

inc/abstractfield.class.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,11 @@ public function getEmptyParameters() : array {
185185
return [];
186186
}
187187

188+
/**
189+
* Undocumented function
190+
*
191+
* @return PluginFormcreatorAbstractQuestionParameter[]
192+
*/
188193
public final function getParameters() : array {
189194
$parameters = $this->getEmptyParameters();
190195
foreach ($parameters as $fieldname => $parameter) {

inc/question.class.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,17 @@ public static function import(PluginFormcreatorLinker $linker, array $input = []
946946
if (isset($input['_parameters'])) {
947947
$parameters = $field->getParameters();
948948
foreach ($parameters as $fieldName => $parameter) {
949-
$parameter::import($linker, $input['_parameters'][$input['fieldtype']][$fieldName], $itemId);
949+
if (is_array($input['_parameters'][$input['fieldtype']][$fieldName])) {
950+
/** @var PluginFormcreatorExportableInterface $parameter */
951+
$parameter::import($linker, $input['_parameters'][$input['fieldtype']][$fieldName], $itemId);
952+
} else {
953+
// Import data incomplete, parameter not defined
954+
// Adding an empty parameter (assuming the question is actually added or updated in DB)
955+
$parameterInput = $parameter->fields;
956+
$parameterInput['plugin_formcreator_questions_id'] = $itemId;
957+
unset($parameterInput['id']);
958+
$parameter->add($parameterInput);
959+
}
950960
}
951961
}
952962

0 commit comments

Comments
 (0)