From 270707a4d5c3a6a95c877ca21c1352097497876c Mon Sep 17 00:00:00 2001 From: "Marco A. Nina Mena" Date: Mon, 31 Jul 2023 16:36:29 -0400 Subject: [PATCH] add message when missing nested screen's screen --- ProcessMaker/Assets/ScreensInScreen.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ProcessMaker/Assets/ScreensInScreen.php b/ProcessMaker/Assets/ScreensInScreen.php index 92e486a344..48790b4744 100644 --- a/ProcessMaker/Assets/ScreensInScreen.php +++ b/ProcessMaker/Assets/ScreensInScreen.php @@ -65,17 +65,32 @@ public function referencesToExport(ScreenInterface $screen, array $screens = [], * * @param Screen $process * @param array $references + * @param ExportManager $exportManager * * @return void */ - public function updateReferences(Screen $screen, array $references = []) + public function updateReferences(Screen $screen, array $references, ExportManager $exportManager) { $config = $screen->config; if (is_array($config)) { - $this->findInArray($config, function ($item, $key) use ($references, &$config) { + $this->findInArray($config, function ($item, $key) use ($references, &$config, $exportManager) { if (is_array($item) && isset($item['component']) && $item['component'] === 'FormNestedScreen' && !empty($item['config']['screen'])) { $oldRef = $item['config']['screen']; - $newRef = $references[Screen::class][$oldRef]->getKey(); + if ((array_key_exists($oldRef, $references[Screen::class]))) { + $newRef = $references[Screen::class][$oldRef]->getKey(); + + } else { + $newRef = null; + $exportManager->addLogMessage( + 'ScreensInScreen:references', + __( + 'Imported file does not contain the screen #:screen assigned to a nested screen', + ['screen' => $oldRef] + ), + false, + __("Missing Nested Screen's screen") + ); + } Arr::set($config, "$key.config.screen", $newRef); } });