@@ -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