diff --git a/library/Director/Data/Db/DbObjectWithSettings.php b/library/Director/Data/Db/DbObjectWithSettings.php index 781bddf7..88702be0 100644 --- a/library/Director/Data/Db/DbObjectWithSettings.php +++ b/library/Director/Data/Db/DbObjectWithSettings.php @@ -44,7 +44,12 @@ abstract class DbObjectWithSettings extends DbObject public function setSettings($settings) { - $this->settings = (array) $settings; + $settings = (array) $settings; + ksort($settings); + if ($settings !== $this->settings) { + $this->settings = $settings; + $this->hasBeenModified = true; + } return $this; } diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 54484060..30bcf244 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -1086,16 +1086,17 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer public function getVars() { - $vars = (object) array(); + $vars = []; foreach ($this->vars() as $key => $var) { if ($var->hasBeenDeleted()) { continue; } - $vars->$key = $var->getValue(); + $vars[$key] = $var->getValue(); } + ksort($vars); - return $vars; + return (object) $vars; } /**