94 lines
3.5 KiB
PHP
94 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Bo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Setting;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Config;
|
|
|
|
class SettingsController extends Controller
|
|
{
|
|
public function manage(Request $request) {
|
|
|
|
$settings = Setting::all();
|
|
$settingsToPrint = [];
|
|
foreach ($settings as $setting) {
|
|
$settingsToPrint[$setting->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:cache');
|
|
|
|
return $redirector;
|
|
}
|
|
|
|
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'));
|
|
}
|
|
}
|