From 0a65ceae4b6ee793e61e4598eff2544d7bb76c86 Mon Sep 17 00:00:00 2001
From: Davide Aprea <davide@suma-ev.de>
Date: Wed, 11 Nov 2020 10:09:35 +0100
Subject: [PATCH] add complete parameter validation to load settings

---
 app/Http/Controllers/SettingsController.php | 28 ++++++---------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php
index b0a4e4638..b8ffb6629 100644
--- a/app/Http/Controllers/SettingsController.php
+++ b/app/Http/Controllers/SettingsController.php
@@ -425,29 +425,17 @@ class SettingsController extends Controller
                 Cookie::queue($key, 'on', 0, '/', null, false, false);
             } else {
                 foreach($langFile->foki as $fokus => $fokusInfo) {
-                    if($key === $fokus.'_setting_zitate' && $value === 'off'){
+                    if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){
                         Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
-                    } elseif(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){
-                        Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
-                    } elseif($key === $fokus . '_setting_s') {
-                        foreach($langFile->filter->{'parameter-filter'}->safesearch->values as $safesearch => $sInfo){
-                            if($value === $safesearch) {
-                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
-                            }
-                        }
-                    }elseif($key === $fokus . '_setting_f') {
-                        foreach($langFile->filter->{'parameter-filter'}->freshness->values as $freshness => $fInfo){
-                            if($value === $freshness) {
-                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
-                            }
-                        }
-                    }elseif($key === $fokus . '_setting_m') {
-                        foreach($langFile->filter->{'parameter-filter'}->language->values as $language => $lInfo){
-                            if($value === $language) {
-                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                    } elseif(strpos($key, $fokus.'_setting_') === 0) {
+                        foreach($langFile->filter->{'parameter-filter'} as $parameter) {
+                            foreach($parameter->values as $p => $v) {
+                                if($key === $fokus.'_setting_' . $parameter->{'get-parameter'} && $value === $p){
+                                    Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                                }
                             }
                         }
-                    }else{
+                    } else {
                         $sumalist = array_keys($this->getSumas($fokus));
                         foreach($sumalist as $suma) {
                             if(strpos($key, $fokus . '_engine_' . $suma) === 0) {
-- 
GitLab