Skip to content

Commit 5ecb828

Browse files
committed
fix(targetticket,targetchange): missing update of question ID in targets
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
1 parent c502dfd commit 5ecb828

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

inc/targetchange.class.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,25 @@ public static function import(PluginFormcreatorLinker $linker, $input = [], $con
188188
}
189189
}
190190

191+
// Update links to other questions
192+
$questionLinks = [
193+
'due_date_rule' => ['values' => self::DUE_DATE_RULE_ANSWER, 'field' => 'due_date_question'],
194+
'urgency_rule' => ['values' => self::URGENCY_RULE_ANSWER, 'field' => 'urgency_question'],
195+
'tag_type' => ['values' => self::TAG_TYPE_QUESTIONS, 'field' => 'tag_questions'],
196+
'category_rule' => ['values' => self::CATEGORY_RULE_ANSWER, 'field' => 'category_question'],
197+
];
198+
foreach ($questionLinks as $field => $fieldSetting) {
199+
if (!is_array($fieldSetting['values'])) {
200+
$fieldSetting['values'] = [$fieldSetting['values']];
201+
}
202+
if (!in_array($input[$field], $fieldSetting['values'])) {
203+
continue;
204+
}
205+
/**@var PluginFormcreatorQuestion $question */
206+
$question = $linker->getObject($input[$fieldSetting['field']], PluginFormcreatorQuestion::class);
207+
$input[$fieldSetting['field']] = $question->getID();
208+
}
209+
191210
// Add or update
192211
$originalId = $input[$idKey];
193212
if ($itemId !== false) {

inc/targetticket.class.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,6 +1083,28 @@ public static function import(PluginFormcreatorLinker $linker, $input = [], $con
10831083
}
10841084
}
10851085

1086+
// Update links to other questions
1087+
$questionLinks = [
1088+
'type_rule' => ['values' => self::REQUESTTYPE_ANSWER, 'field' => 'type_question'],
1089+
'due_date_rule' => ['values' => self::DUE_DATE_RULE_ANSWER, 'field' => 'due_date_question'],
1090+
'urgency_rule' => ['values' => self::URGENCY_RULE_ANSWER, 'field' => 'urgency_question'],
1091+
'tag_type' => ['values' => self::TAG_TYPE_QUESTIONS, 'field' => 'tag_questions'],
1092+
'category_rule' => ['values' => self::CATEGORY_RULE_ANSWER, 'field' => 'category_question'],
1093+
'associate_rule' => ['values' => self::ASSOCIATE_RULE_ANSWER, 'field' => 'associate_question'],
1094+
'location_rule' => ['values' => self::LOCATION_RULE_ANSWER, 'field' => 'location_question'],
1095+
];
1096+
foreach ($questionLinks as $field => $fieldSetting) {
1097+
if (!is_array($fieldSetting['values'])) {
1098+
$fieldSetting['values'] = [$fieldSetting['values']];
1099+
}
1100+
if (!in_array($input[$field], $fieldSetting['values'])) {
1101+
continue;
1102+
}
1103+
/**@var PluginFormcreatorQuestion $question */
1104+
$question = $linker->getObject($input[$fieldSetting['field']], PluginFormcreatorQuestion::class);
1105+
$input[$fieldSetting['field']] = $question->getID();
1106+
}
1107+
10861108
// Add or update
10871109
$originalId = $input[$idKey];
10881110
if ($itemId !== false) {

tests/suite-unit/PluginFormcreatorTargetTicket.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,8 @@ public function testImport() {
783783
'category_question' => '0',
784784
'associate_rule' => \PluginFormcreatorTargetTicket::ASSOCIATE_RULE_NONE,
785785
'associate_question' => '0',
786+
'type_rule' => 1,
787+
'type_question' => 0,
786788
'uuid' => $uuid,
787789
];
788790

0 commit comments

Comments
 (0)