diff --git a/library/Director/DirectorObject/Automation/BasketSnapshotFieldResolver.php b/library/Director/DirectorObject/Automation/BasketSnapshotFieldResolver.php index f80b2702..e565f77b 100644 --- a/library/Director/DirectorObject/Automation/BasketSnapshotFieldResolver.php +++ b/library/Director/DirectorObject/Automation/BasketSnapshotFieldResolver.php @@ -4,8 +4,10 @@ namespace Icinga\Module\Director\DirectorObject\Automation; use Icinga\Module\Director\Db; use Icinga\Module\Director\Objects\DirectorDatafield; +use Icinga\Module\Director\Objects\DirectorDatalist; use Icinga\Module\Director\Objects\IcingaObject; use InvalidArgumentException; +use stdClass; class BasketSnapshotFieldResolver { @@ -141,6 +143,22 @@ class BasketSnapshotFieldResolver } } + public static function fixOptionalDatalistReference(stdClass $plain, Db $db) + { + if (isset($plain->settings->datalist_uuid)) { + unset($plain->settings->datalist); + return; + } + if (isset($plain->settings->datalist)) { + // Just try to load the list, final import will fail if missing + // No modification in case we do not find the list, + if ($list = DirectorDatalist::loadOptional($plain->settings->datalist, $db)) { + unset($plain->settings->datalist); + $plain->settings->datalist_id = $list->get('id'); + } + } + } + protected function getNextNewId(): int { return $this->nextNewId++;