@@ -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