enhanced questionnaire handling with stable key validation, improved note management, and added option key support
This commit is contained in:
@ -89,11 +89,11 @@ try {
|
||||
if (isset($q['precision'])) $config['precision'] = $q['precision'];
|
||||
if (isset($q['minSelection'])) $config['minSelection'] = $q['minSelection'];
|
||||
if (isset($q['maxLength'])) $config['maxLength'] = (int)$q['maxLength'];
|
||||
if (!empty($q['multiline'])) $config['multiline'] = true;
|
||||
if (isset($q['nextQuestionId'])) $config['nextQuestionId'] = $q['nextQuestionId'];
|
||||
if (isset($q['otherNextQuestionId'])) $config['otherNextQuestionId'] = $q['otherNextQuestionId'];
|
||||
if (isset($q['otherOptionKey'])) $config['otherOptionKey'] = $q['otherOptionKey'];
|
||||
if (isset($q['config']) && is_array($q['config'])) {
|
||||
foreach (['otherNextQuestionId', 'otherOptionKey', 'hint', 'maxLength', 'multiline', 'textKey', 'precision', 'scaleType'] as $ck) {
|
||||
foreach (['nextQuestionId', 'otherNextQuestionId', 'otherOptionKey', 'hint', 'maxLength', 'textKey', 'precision', 'scaleType', 'noteBefore', 'noteAfter', 'step', 'unitLabel'] as $ck) {
|
||||
if (isset($q['config'][$ck])) {
|
||||
$config[$ck] = $q['config'][$ck];
|
||||
}
|
||||
@ -117,7 +117,11 @@ try {
|
||||
}
|
||||
}
|
||||
|
||||
if ($qKey !== '') {
|
||||
$config = qdb_normalize_question_config($config, $qKey);
|
||||
}
|
||||
$configJson = !empty($config) ? json_encode($config) : '{}';
|
||||
$germanText = $qKey;
|
||||
|
||||
$pdo->prepare("INSERT OR REPLACE INTO question
|
||||
(questionID, questionnaireID, defaultText, type, orderIndex, isRequired, configJson)
|
||||
@ -125,12 +129,16 @@ try {
|
||||
->execute([
|
||||
':id' => $questionID,
|
||||
':qnid' => $questionnaireID,
|
||||
':dt' => $qKey,
|
||||
':dt' => $germanText,
|
||||
':ty' => $layout,
|
||||
':oi' => $qIdx,
|
||||
':ir' => 0,
|
||||
':cj' => $configJson,
|
||||
]);
|
||||
if ($qKey !== '') {
|
||||
qdb_upsert_source_translation($pdo, 'question', $questionID, $germanText);
|
||||
qdb_sync_question_note_strings($pdo, $qKey, $config);
|
||||
}
|
||||
|
||||
if (isset($q['options']) && is_array($q['options'])) {
|
||||
$hasObjects = isset($q['options'][0]) && is_array($q['options'][0]);
|
||||
|
||||
Reference in New Issue
Block a user