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(); } } $looplimit = count($settings); for ($i = 0; $i < $looplimit; $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')); } /** * Manage Theme settings page * Management des settings dont la clé est préfixée theme_ * * @param Request $request * @return \Illuminate\Http\Response * */ 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") { $looplimit = count($settings); for ($i = 0; $i < $looplimit; $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')); } }