key] = $setting->value; } if ($_SERVER["REQUEST_METHOD"] === "POST") { $input = $request->all(); // comparer les settingsToPrint (en base) avec les inputs (pour trouver un nouveau) foreach ($input as $key => $value) { if ( !isset($settingsToPrint[$key]) && $key != "_method" && $key != "_token" ) { // new setting $setting = new Setting(); $setting->key = $key; $setting->value = $value ?? 0; $setting->save(); } } for ($i = 0; $i < count($settings); $i++) { if (is_array($request->input($settings[$i]->key))) { $settings[$i]->value = implode(',', $request->input($settings[$i]->key)); } else { $settings[$i]->value = $request->input($settings[$i]->key) === null ? 0 : $request->input($settings[$i]->key); } $settings[$i]->save(); } // store redirector to keep flash message from being wipe pby artisan call below $redirector = redirect()->route('bo.settings')->with('success', 'Modifications enregistrés !'); // all settings saved : cache routes Artisan::call('route:clear'); // programmer un php artisan optimize ? (une fois par jour la nuit par exemple) return $redirector; }//end if return view('bo.settings', compact('settingsToPrint')); } /** * Management des settings dont la clé est préfixée theme_ */ public function manageTheme(Request $request) { $settings = Setting::where('key', 'LIKE', 'theme_%')->get(); $settingsToPrint = []; foreach ($settings as $setting) { $settingsToPrint[$setting->key] = $setting->value; } $config_settings = Config::get(('theme.bo_theme_settings')); // check if, for each of the theme defined settings we have a database setting foreach ($config_settings as $onekey => $params) { if (!isset($settingsToPrint['theme_' . $onekey])) { $dbsetting = new Setting(); $dbsetting->key = 'theme_' . $onekey; $dbsetting->value = $params['default_value']; $dbsetting->save(); // injection dans settings to print $settingsToPrint[$dbsetting->key] = $dbsetting->value; } } if ($_SERVER["REQUEST_METHOD"] === "POST") { for ($i = 0; $i < count($settings); $i++) { // attention pour les booléens/checkbox on enregistre 'on' $settings[$i]->value = $request->input($settings[$i]->key) === null ? 0 : $request->input($settings[$i]->key); $settings[$i]->save(); } return redirect()->route('bo.themesettings')->with('success', 'Modifications enregistrés !'); } return view('bo.settings.theme', compact('settingsToPrint', 'config_settings')); } }