Save settings in a transaction

This commit is contained in:
slawkens 2025-02-02 22:28:27 +01:00
parent 28fef952f8
commit 4b6024dc45

View File

@ -72,24 +72,32 @@ class Settings implements \ArrayAccess
} }
} }
$this->errors = []; global $db;
ModelsSettings::where('name', $pluginName)->delete();
foreach ($values as $key => $value) { try {
$errorMessage = ''; $db->beginTransaction();
if (isset($settings['settings'][$key]['callbacks']['beforeSave']) && !$settings['settings'][$key]['callbacks']['beforeSave']($key, $value, $errorMessage)) {
$this->errors[] = $errorMessage; $this->errors = [];
continue; ModelsSettings::where('name', $pluginName)->delete();
} foreach ($values as $key => $value) {
$errorMessage = '';
if (isset($settings['settings'][$key]['callbacks']['beforeSave']) && !$settings['settings'][$key]['callbacks']['beforeSave']($key, $value, $errorMessage)) {
$this->errors[] = $errorMessage;
continue;
}
try {
ModelsSettings::create([ ModelsSettings::create([
'name' => $pluginName, 'name' => $pluginName,
'key' => $key, 'key' => $key,
'value' => $value 'value' => $value
]); ]);
} catch (\PDOException $error) {
$this->errors[] = 'Error while saving setting (' . $pluginName . ' - ' . $key . '): ' . $error->getMessage();
} }
$db->commit();
} catch (\Exception $error) {
$db->rollBack();
$this->errors[] = 'Error while saving settings (' . $pluginName . ')<br/>' . $error->getMessage();
return false;
} }
$this->clearCache(); $this->clearCache();