From 2d5d0db77c64d6f452d60ae558a812cc7752885c Mon Sep 17 00:00:00 2001 From: Ravi Kumar Kempapura Srinivasa Date: Fri, 30 Sep 2022 11:38:00 +0200 Subject: [PATCH] DirectorJob: fix restoring from snapshot fixes #2528 --- doc/82-Changelog.md | 1 + library/Director/Objects/DirectorJob.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/82-Changelog.md b/doc/82-Changelog.md index 934594b9..744a087c 100644 --- a/doc/82-Changelog.md +++ b/doc/82-Changelog.md @@ -16,6 +16,7 @@ v1.10.1 (unreleased) ### Configuration Baskets * FIX: restore Import/Sync/Job when exported with v1.10 (#2620) +* FIX: restoring Job with ImportSource or SyncRule (#2528) ### Database Schema * FIX: new DB schema failed due to duplicate line in SQL statement (#2609) diff --git a/library/Director/Objects/DirectorJob.php b/library/Director/Objects/DirectorJob.php index 7a0dc063..361f7645 100644 --- a/library/Director/Objects/DirectorJob.php +++ b/library/Director/Objects/DirectorJob.php @@ -251,6 +251,21 @@ class DirectorJob extends DbObjectWithSettings implements ExportInterface, Insta $object = static::create([], $db); } + $settings = (array) $properties['settings']; + + if (array_key_exists('source', $settings) && ! (array_key_exists('source_id', $settings))) { + $val = ImportSource::load($settings['source'], $db)->get('id'); + $settings['source_id'] = $val; + unset($settings['source']); + } + + if (array_key_exists('rule', $settings) && ! (array_key_exists('rule_id', $settings))) { + $val = SyncRule::load($settings['rule'], $db)->get('id'); + $settings['rule_id'] = $val; + unset($settings['rule']); + } + + $properties['settings'] = (object) $settings; $object->setProperties($properties); if ($id !== null) { $object->reallySet($idCol, $id);