Skip to content

Commit 06c2430

Browse files
committed
fix: misconceptions in duplication process
1 parent 74ea8cf commit 06c2430

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

inc/form.class.php

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,15 +1296,18 @@ public function duplicate() {
12961296
return false;
12971297
}
12981298

1299+
$new_target_item_id = $target->getField('items_id');
12991300
switch ($target_values['itemtype']) {
13001301
case PluginFormcreatorTargetTicket::class:
1302+
// Get the original target ticket
13011303
if (!$target_ticket->getFromDB($target_values['items_id'])) {
13021304
return false;
13031305
}
13041306

13051307
// Update the target ticket created while cloning the target
13061308
$update_target_ticket = $target_ticket->fields;
1307-
unset($update_target_ticket['id'], $update_target_ticket['uuid']);
1309+
$update_target_ticket['id'] = $new_target_item_id;
1310+
unset($update_target_ticket['uuid']);
13081311
foreach ($tab_questions as $id => $value) {
13091312
$update_target_ticket['name'] = str_replace('##question_' . $id . '##', '##question_' . $value . '##', $update_target_ticket['name']);
13101313
$update_target_ticket['name'] = str_replace('##answer_' . $id . '##', '##answer_' . $value . '##', $update_target_ticket['name']);
@@ -1313,21 +1316,22 @@ public function duplicate() {
13131316
}
13141317

13151318
$new_target_ticket = new PluginFormcreatorTargetTicket();
1316-
$new_target_ticket->add($update_target_ticket);
1317-
$new_target_item_id = $new_target_ticket->getID();
1318-
if (!$new_target_item_id) {
1319+
$update_target_ticket['title'] = $update_target_ticket['name'];
1320+
if (!$new_target_ticket->update($update_target_ticket)) {
13191321
return false;
13201322
}
13211323
break;
13221324

13231325
case PluginFormcreatorTargetChange::class:
1326+
// Get the original target change
13241327
if (!$target_change->getFromDB($target_values['items_id'])) {
13251328
return false;
13261329
}
13271330

13281331
// Update the target change created while cloning the target
13291332
$update_target_change = $target_change->fields;
1330-
unset($update_target_change['id'], $update_target_change['uuid']);
1333+
$update_target_change['id'] = $new_target_item_id;
1334+
unset($update_target_change['uuid']);
13311335
foreach ($tab_questions as $id => $value) {
13321336
$changeFields = [
13331337
'name',
@@ -1353,21 +1357,20 @@ public function duplicate() {
13531357
}
13541358

13551359
$new_target_change = new PluginFormcreatorTargetChange();
1356-
$new_target_change->add($update_target_change);
1357-
$new_target_item_id = $new_target_change->getID();
1358-
if (!$new_target_item_id) {
1360+
$update_target_change['title'] = $update_target_change['name'];
1361+
if (!$new_target_change->update($update_target_change)) {
13591362
return false;
13601363
}
13611364
break;
13621365
}
13631366

1364-
$target->update([
1365-
'id' => $target->getID(),
1366-
'items_id' => $new_target_item_id,
1367-
]);
1368-
13691367
switch ($target_values['itemtype']) {
13701368
case PluginFormcreatorTargetTicket::class:
1369+
// Drop default actors
1370+
$target_ticket_actor->deleteByCriteria([
1371+
'plugin_formcreator_targettickets_id' => $new_target_item_id
1372+
]);
1373+
13711374
// Form target tickets actors
13721375
$rows = $target_ticket_actor->find("`plugin_formcreator_targettickets_id` = '{$target_values['items_id']}'");
13731376
foreach ($rows as $row) {
@@ -1381,6 +1384,11 @@ public function duplicate() {
13811384
break;
13821385

13831386
case PluginFormcreatorTargetChange::class:
1387+
// Drop default actors
1388+
$target_ticket_actor->deleteByCriteria([
1389+
'plugin_formcreator_targetchanges_id' => $new_target_item_id
1390+
]);
1391+
13841392
// Form target change actors
13851393
$rows = $target_change_actor->find("`plugin_formcreator_targetchanges_id` = '{$target_values['items_id']}'");
13861394
foreach ($rows as $row) {

0 commit comments

Comments
 (0)