prevent crash when no settings

This commit is contained in:
Beu
2025-06-22 00:13:46 +02:00
parent 8e632d5057
commit 0fe9dc3e14

View File

@ -863,36 +863,38 @@ class MatchManagerCore implements CallbackListener, CommandListener, TimerListen
} }
$allsettings = $this->maniaControl->getSettingManager()->getSettingsByClass($this); $allsettings = $this->maniaControl->getSettingManager()->getSettingsByClass($this);
$settingsmode = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_SETTINGS_MODE); $settingsmode = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_SETTINGS_MODE);
$modesettings = $this->getModeSettings($settingsmode); if ($allsettings !== null && $settingsmode !== null) {
foreach ($allsettings as $key => $value) { $modesettings = $this->getModeSettings($settingsmode);
$name = $value->setting;
if (array_key_exists($name,self::SETTINGS_MODE_LIST)) {
if (!isset($modesettings[$name])) {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name);
}
}
}
foreach ($modesettings as $key => $value) {
$this->maniaControl->getSettingManager()->initSetting($this, $key, self::SETTINGS_MODE_LIST[$key]['default'], self::SETTINGS_MODE_LIST[$key]['description'], 50);
}
if ($settingsmode == 'Maps from file & Settings from plugin' || $settingsmode == 'All from the plugin') {
$gmsettings = $this->getGMSettings($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_GAMEMODE_BASE), $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_CUSTOM_GAMEMODE));
foreach ($allsettings as $key => $value) { foreach ($allsettings as $key => $value) {
$name = $value->setting; $name = $value->setting;
if (substr($name,0, 2) == "S_" && !isset($gmsettings[$name])) { if (array_key_exists($name,self::SETTINGS_MODE_LIST)) {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name); if (!isset($modesettings[$name])) {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name);
}
} }
} }
foreach ($gmsettings as $key => $value) { foreach ($modesettings as $key => $value) {
$this->maniaControl->getSettingManager()->initSetting($this, $key, $value['default'], $value['description'], 100); $this->maniaControl->getSettingManager()->initSetting($this, $key, self::SETTINGS_MODE_LIST[$key]['default'], self::SETTINGS_MODE_LIST[$key]['description'], 50);
} }
} else {
foreach ($allsettings as $key => $value) { if ($settingsmode == 'Maps from file & Settings from plugin' || $settingsmode == 'All from the plugin') {
$name = $value->setting; $gmsettings = $this->getGMSettings($this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_GAMEMODE_BASE), $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MATCH_CUSTOM_GAMEMODE));
if (substr($name,0, 2) == "S_") {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name); foreach ($allsettings as $key => $value) {
$name = $value->setting;
if (substr($name,0, 2) == "S_" && !isset($gmsettings[$name])) {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name);
}
}
foreach ($gmsettings as $key => $value) {
$this->maniaControl->getSettingManager()->initSetting($this, $key, $value['default'], $value['description'], 100);
}
} else {
foreach ($allsettings as $key => $value) {
$name = $value->setting;
if (substr($name,0, 2) == "S_") {
if ($deletesettings) $this->maniaControl->getSettingManager()->deleteSetting($this, $name);
}
} }
} }
} }