Skip to content
This repository was archived by the owner on Oct 13, 2025. It is now read-only.

Commit 88ac3e8

Browse files
committed
Fixed settings sync
1 parent 7b94b09 commit 88ac3e8

File tree

1 file changed

+47
-40
lines changed

1 file changed

+47
-40
lines changed

lib/Service/UtilsService.php

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -272,49 +272,56 @@ public function getSystemInfo(): array {
272272

273273
public function checkForSettingsUpdates($app_data) {
274274
$settings = $this->settingMapper->findAll();
275-
if (count($settings) > 0 && count($app_data['settings']) > count($settings)) {
276-
$currentSettingsKeys = array_map(function ($setting) {
277-
return $setting->getName();
278-
}, $settings);
279-
$newSettingsKeys = array_map(function ($setting) {
280-
return $setting['name'];
281-
}, $app_data['settings']);
282-
$newSettings = [];
283-
foreach ($newSettingsKeys as $setting) {
284-
if (!in_array($setting, $currentSettingsKeys)) {
285-
array_push($newSettings, $setting);
286-
}
275+
if (count($settings) > 0) {
276+
$this->checkForNewSettings($app_data, $settings);
277+
$this->checkForDeletedSettings($app_data, $settings);
278+
}
279+
}
280+
281+
private function checkForNewSettings(array $app_data, array $settings): void {
282+
$currentSettingsKeys = array_map(function ($setting) {
283+
return $setting->getName();
284+
}, $settings);
285+
$newSettingsKeys = array_map(function ($setting) {
286+
return $setting['name'];
287+
}, $app_data['settings']);
288+
$newSettings = [];
289+
foreach ($newSettingsKeys as $setting) {
290+
if (!in_array($setting, $currentSettingsKeys)) {
291+
array_push($newSettings, $setting);
287292
}
288-
foreach ($app_data['settings'] as $setting) {
289-
if (in_array($setting['name'], $newSettings)) {
290-
$this->settingMapper->insert(new Setting([
291-
'name' => $setting['name'],
292-
'value' => is_array($setting['value']) ?
293-
json_encode($setting['value'])
294-
: str_replace('\\', '', json_encode($setting['value'])),
295-
'displayName' => $setting['displayName'],
296-
'description' => $setting['description']
297-
]));
298-
}
293+
}
294+
foreach ($app_data['settings'] as $setting) {
295+
if (in_array($setting['name'], $newSettings)) {
296+
$this->settingMapper->insert(new Setting([
297+
'name' => $setting['name'],
298+
'value' => is_array($setting['value']) ?
299+
json_encode($setting['value'])
300+
: str_replace('\\', '', json_encode($setting['value'])),
301+
'displayName' => $setting['displayName'],
302+
'description' => $setting['description']
303+
]));
299304
}
300-
} elseif (count($settings) > 0 && count($app_data['settings']) < count($settings)) {
301-
$currentSettingsKeys = array_map(function ($setting) {
302-
return $setting->getName();
303-
}, $settings);
304-
$newSettingsKeys = array_map(function ($setting) {
305-
return $setting['name'];
306-
}, $app_data['settings']);
307-
$settingsToRemove = [];
308-
foreach ($currentSettingsKeys as $setting) {
309-
if (!in_array($setting, $newSettingsKeys)) {
310-
array_push($settingsToRemove, $setting);
311-
}
305+
}
306+
}
307+
308+
private function checkForDeletedSettings(array $app_data, array $settings): void {
309+
$currentSettingsKeys = array_map(function ($setting) {
310+
return $setting->getName();
311+
}, $settings);
312+
$newSettingsKeys = array_map(function ($setting) {
313+
return $setting['name'];
314+
}, $app_data['settings']);
315+
$settingsToRemove = [];
316+
foreach ($currentSettingsKeys as $setting) {
317+
if (!in_array($setting, $newSettingsKeys)) {
318+
array_push($settingsToRemove, $setting);
312319
}
313-
foreach ($settingsToRemove as $settingName) {
314-
$setting = $this->settingMapper->findByName($settingName);
315-
if (isset($setting)) {
316-
$this->settingMapper->delete($setting);
317-
}
320+
}
321+
foreach ($settingsToRemove as $settingName) {
322+
$setting = $this->settingMapper->findByName($settingName);
323+
if (isset($setting)) {
324+
$this->settingMapper->delete($setting);
318325
}
319326
}
320327
}

0 commit comments

Comments
 (0)