Skip to content

Commit

Permalink
DirectorDatafield: prefer list uuid...
Browse files Browse the repository at this point in the history
...on basket restore
  • Loading branch information
Thomas-Gelf committed Jul 30, 2023
1 parent 14604b6 commit 02d6ebb
Showing 1 changed file with 3 additions and 12 deletions.
15 changes: 3 additions & 12 deletions library/Director/Objects/DirectorDatafield.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Icinga\Module\Director\Data\Db\DbObjectWithSettings;
use Icinga\Module\Director\Db;
use Icinga\Module\Director\DirectorObject\Automation\BasketSnapshotFieldResolver;
use Icinga\Module\Director\DirectorObject\Automation\CompareBasketObject;
use Icinga\Module\Director\Forms\IcingaServiceForm;
use Icinga\Module\Director\Hook\DataTypeHook;
Expand Down Expand Up @@ -146,7 +147,7 @@ public static function import(stdClass $plain, Db $db): DirectorDatafield
if ($uuid = $plain->uuid ?? null) {
$uuid = Uuid::fromString($uuid);
if ($candidate = DirectorDatafield::loadWithUniqueId($uuid, $db)) {
self::fixOptionalDatalistReference($plain, $db);
BasketSnapshotFieldResolver::fixOptionalDatalistReference($plain, $db);
assert($candidate instanceof DirectorDatafield);
$candidate->setProperties((array) $plain);
return $candidate;
Expand All @@ -164,21 +165,11 @@ public static function import(stdClass $plain, Db $db): DirectorDatafield
return $candidate;
}
}
self::fixOptionalDatalistReference($plain, $db);
BasketSnapshotFieldResolver::fixOptionalDatalistReference($plain, $db);

return static::create((array) $plain, $db);
}

protected static function fixOptionalDatalistReference(stdClass $plain, Db $db)
{
if (isset($plain->settings->datalist)) {
// Just try to load the list, import should fail if missing
$list = DirectorDatalist::load($plain->settings->datalist, $db);
unset($plain->settings->datalist);
$plain->settings->datalist_id = $list->get('id');
}
}

protected function beforeStore()
{
if ($this->category) {
Expand Down

0 comments on commit 02d6ebb

Please sign in to comment.