From 251a174bcf2f9f0482360da33eff10bb9d677a11 Mon Sep 17 00:00:00 2001
From: Davide Aprea <davide@suma-ev.de>
Date: Tue, 10 Nov 2020 17:12:43 +0100
Subject: [PATCH] fix loading settings

---
 app/Http/Controllers/SettingsController.php | 73 +++++++++++++++++----
 1 file changed, 60 insertions(+), 13 deletions(-)

diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php
index e83348897..56ecf3fd6 100644
--- a/app/Http/Controllers/SettingsController.php
+++ b/app/Http/Controllers/SettingsController.php
@@ -405,23 +405,71 @@ class SettingsController extends Controller
         $path = \Request::path();
         $cookiePath = "/" . substr($path, 0, strpos($path, "meta/") + 5);
 
-        $sumaFile = MetaGer::getLanguageFile();
-        $sumaFile = json_decode(file_get_contents($sumaFile), true);
-        
-        $foki = array_keys($sumaFile['foki']);
+        $langFile = MetaGer::getLanguageFile();
+        $langFile = json_decode(file_get_contents($langFile));
+
         $regexUrl = '#^(\*\.)?[a-z0-9]+(\.[a-z0-9]+)?(\.[a-z0-9]{2,})$#';
 
+        $settings = $request->all();
+        foreach($settings as $key => $value) {
+            if($key === 'key') {
+                $memberKey = new Key($value);
+                if($memberKey->getStatus()){
+                    Cookie::queue($key, $value, 0, '/', null, false, false);
+                }
+            }
+            elseif($key === 'dark_mode'){
+                Cookie::queue($key, $value, 0, '/', null, false, false);
+            }
+            elseif($key === 'new_tab' && $value === 'on') {
+                Cookie::queue($key, 'on', 0, '/', null, false, false);
+            }else{
+                foreach($langFile->foki as $fokus => $fokusInfo) {
+                    if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){
+                        Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                    } elseif(strpos($key, $fokus . '_setting_s') === 0) {
+                        foreach($langFile->filter->{'parameter-filter'}->safesearch->values as $safesearch => $sInfo){
+                            if($value === $safesearch) {
+                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                            }
+                        }
+                    }elseif(strpos($key, $fokus . '_setting_f') === 0) {
+                        foreach($langFile->filter->{'parameter-filter'}->freshness->values as $freshness => $fInfo){
+                            if($value === $freshness) {
+                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                            }
+                        }
+                    }elseif(strpos($key, $fokus . '_setting_m') === 0) {
+                        foreach($langFile->filter->{'parameter-filter'}->language->values as $language => $lInfo){
+                            if($value === $language) {
+                                Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
+                            }
+                        }
+                    }else{
+                        $sumalist = array_keys($this->getSumas($fokus));
+                        foreach($sumalist as $suma) {
+                            if(strpos($key, $fokus . '_engine_' . $suma) === 0) {
+                                Cookie::queue($key, 'off', 0, $cookiePath, null, false, false);
+                            }
+                        }
+                    }
 
-        $cookies = $request->all();
+                }
+            }
+        }
+        
+        
+        
+        /* this works for certain cookies
         foreach($cookies as $key => $value){
-            $blpage = false;
+            $found = false;
             foreach($foki as $fokus){
                 if(strpos($key, $fokus . '_blpage') === 0 && preg_match($regexUrl, $value) === 1){
                     Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
-                    $blpage = true;
+                    $found = true;
                 }
             }
-            if($blpage){
+            if($found){
                 continue;
             }
             if($key === 'key') {
@@ -430,20 +478,19 @@ class SettingsController extends Controller
                     Cookie::queue($key, $value, 0, '/', null, false, false);
                 }
             }
-            if($key === 'dark_mode'){
+            elseif($key === 'dark_mode'){
                 Cookie::queue($key, $value, 0, '/', null, false, false);
             }
-            if($key === 'new_tab' && $value === 'on') {
+            elseif($key === 'new_tab' && $value === 'on') {
                 Cookie::queue($key, 'on', 0, '/', null, false, false);
             }
             foreach($sumaFile['filter']['parameter-filter'] as $suma => $filter){
                 if($key === $suma && $value === $filter){
                     Cookie::queue($key, $value, 0, $cookiePath, null, false, false);
                 }
-
             }
-        }
+        }*/
 
         return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), url('/')));
     }
-}
+}
\ No newline at end of file
-- 
GitLab