From 1d5b00a675bee6f80b21d67c5937bd186b01b7bd Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Mon, 16 Aug 2021 06:32:26 +0200 Subject: [PATCH] IcingaObject: unify DB boolean value converter Hint: fixes booleans for "plain unmodified" objects --- library/Director/Objects/IcingaObject.php | 26 ++++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 8a6b7973..4b015500 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -2801,13 +2801,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer // TODO: Do not ship null properties based on flag? if (!$skipDefaults || $this->differsFromDefaultValue($k, $v)) { if ($k === 'disabled' || $this->propertyIsBoolean($k)) { - if ($v === 'y') { - $props[$k] = true; - } elseif ($v === 'n') { - $props[$k] = false; - } else { - $props[$k] = $v; - } + $props[$k] = $this->booleanForDbValue($v); } else { $props[$k] = $v; } @@ -2918,6 +2912,18 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer return (object) $props; } + protected function booleanForDbValue($value) + { + if ($value === 'y') { + return true; + } + if ($value === 'n') { + return false; + } + + return $value; // let this fail elsewhere, if not null + } + public function listImportNames() { if ($this->gotImports()) { @@ -3052,7 +3058,11 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer } if ($this->differsFromDefaultValue($k, $v)) { - $props[$k] = $v; + if ($k === 'disabled' || $this->propertyIsBoolean($k)) { + $props[$k] = $this->booleanForDbValue($v); + } else { + $props[$k] = $v; + } } }