File: /home/bdedition/public_html/core/app/Http/Controllers/Admin/GeneralSettingController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Constants\Status;
use App\Http\Controllers\Controller;
use App\Models\Frontend;
use App\Rules\FileTypeValidate;
use Illuminate\Http\Request;
class GeneralSettingController extends Controller
{
public function systemSetting()
{
$pageTitle = 'System Settings';
$settings = json_decode(file_get_contents(resource_path('views/admin/setting/settings.json')));
return view('admin.setting.system', compact('pageTitle', 'settings'));
}
public function general()
{
$pageTitle = 'General Setting';
$timezones = timezone_identifiers_list();
$currentTimezone = array_search(config('app.timezone'), $timezones);
return view('admin.setting.general', compact('pageTitle', 'timezones', 'currentTimezone'));
}
public function generalUpdate(Request $request)
{
$request->validate([
'site_name' => 'required|string|max:40',
'timezone' => 'required|integer',
'paginate_number' => 'required|integer'
]);
$timezones = timezone_identifiers_list();
$timezone = @$timezones[$request->timezone] ?? 'UTC';
$general = gs();
$general->site_name = $request->site_name;
$general->paginate_number = $request->paginate_number;
$general->save();
$timezoneFile = config_path('timezone.php');
$content = '<?php $timezone = "' . $timezone . '" ?>';
file_put_contents($timezoneFile, $content);
$notify[] = ['success', 'General setting updated successfully'];
return back()->withNotify($notify);
}
public function systemConfiguration()
{
$pageTitle = 'System Configuration';
return view('admin.setting.configuration', compact('pageTitle'));
}
public function systemConfigurationSubmit(Request $request)
{
$general = gs();
$general->ev = $request->ev ? Status::ENABLE : Status::DISABLE;
$general->en = $request->en ? Status::ENABLE : Status::DISABLE;
$general->sv = $request->sv ? Status::ENABLE : Status::DISABLE;
$general->sn = $request->sn ? Status::ENABLE : Status::DISABLE;
$general->pn = $request->pn ? Status::ENABLE : Status::DISABLE;
$general->force_ssl = $request->force_ssl ? Status::ENABLE : Status::DISABLE;
$general->multi_language = $request->multi_language ? Status::ENABLE : Status::DISABLE;
$general->save();
$notify[] = ['success', 'System configuration updated successfully'];
return back()->withNotify($notify);
}
public function logoIcon()
{
$pageTitle = 'Logo & Favicon';
return view('admin.setting.logo_icon', compact('pageTitle'));
}
public function logoIconUpdate(Request $request)
{
$request->validate([
'logo' => ['image', new FileTypeValidate(['jpg', 'jpeg', 'png'])],
'favicon' => ['image', new FileTypeValidate(['png'])],
]);
$path = getFilePath('logoIcon');
if ($request->hasFile('logo')) {
try {
fileUploader($request->logo, $path, filename: 'logo.png');
} catch (\Exception $exp) {
$notify[] = ['error', 'Couldn\'t upload the logo'];
return back()->withNotify($notify);
}
}
if ($request->hasFile('logo_dark')) {
try {
fileUploader($request->logo_dark, $path, filename: 'logo_dark.png');
} catch (\Exception $exp) {
$notify[] = ['error', 'Couldn\'t upload the logo'];
return back()->withNotify($notify);
}
}
if ($request->hasFile('favicon')) {
try {
fileUploader($request->favicon, $path, filename: 'favicon.png');
} catch (\Exception $exp) {
$notify[] = ['error', 'Couldn\'t upload the favicon'];
return back()->withNotify($notify);
}
}
$notify[] = ['success', 'Logo & favicon updated successfully'];
return back()->withNotify($notify);
}
public function customCss()
{
$pageTitle = 'Custom CSS';
$file = activeTemplate(true) . 'css/custom.css';
$fileContent = @file_get_contents($file);
return view('admin.setting.custom_css', compact('pageTitle', 'fileContent'));
}
public function sitemap()
{
$pageTitle = 'Sitemap XML';
$file = 'sitemap.xml';
$fileContent = @file_get_contents($file);
return view('admin.setting.sitemap', compact('pageTitle', 'fileContent'));
}
public function sitemapSubmit(Request $request)
{
$file = 'sitemap.xml';
if (!file_exists($file)) {
fopen($file, "w");
}
file_put_contents($file, $request->sitemap);
$notify[] = ['success', 'Sitemap updated successfully'];
return back()->withNotify($notify);
}
public function robot()
{
$pageTitle = 'Robots TXT';
$file = 'robots.xml';
$fileContent = @file_get_contents($file);
return view('admin.setting.robots', compact('pageTitle', 'fileContent'));
}
public function robotSubmit(Request $request)
{
$file = 'robots.xml';
if (!file_exists($file)) {
fopen($file, "w");
}
file_put_contents($file, $request->robots);
$notify[] = ['success', 'Robots txt updated successfully'];
return back()->withNotify($notify);
}
public function customCssSubmit(Request $request)
{
$file = activeTemplate(true) . 'css/custom.css';
if (!file_exists($file)) {
fopen($file, "w");
}
file_put_contents($file, $request->css);
$notify[] = ['success', 'CSS updated successfully'];
return back()->withNotify($notify);
}
public function maintenanceMode()
{
$pageTitle = 'Maintenance Mode';
$maintenance = Frontend::where('data_keys', 'maintenance.data')->firstOrFail();
return view('admin.setting.maintenance', compact('pageTitle', 'maintenance'));
}
public function maintenanceModeSubmit(Request $request)
{
$request->validate([
'description' => 'required',
'image' => ['nullable', new FileTypeValidate(['jpg', 'jpeg', 'png'])]
]);
$general = gs();
$general->maintenance_mode = $request->status ? Status::ENABLE : Status::DISABLE;
$general->save();
$maintenance = Frontend::where('data_keys', 'maintenance.data')->firstOrFail();
$image = @$maintenance->data_values->image;
if ($request->hasFile('image')) {
try {
$old = $image;
$image = fileUploader($request->image, getFilePath('maintenance'), getFileSize('maintenance'), $old);
} catch (\Exception $exp) {
$notify[] = ['error', 'Couldn\'t upload your image'];
return back()->withNotify($notify);
}
}
$maintenance->data_values = [
'description' => $request->description,
'image' => $image
];
$maintenance->save();
$notify[] = ['success', 'Maintenance mode updated successfully'];
return back()->withNotify($notify);
}
public function cookie()
{
$pageTitle = 'GDPR Cookie';
$cookie = Frontend::where('data_keys', 'cookie.data')->firstOrFail();
return view('admin.setting.cookie', compact('pageTitle', 'cookie'));
}
public function cookieSubmit(Request $request)
{
$request->validate([
'short_desc' => 'required|string|max:255',
'description' => 'required',
]);
$cookie = Frontend::where('data_keys', 'cookie.data')->firstOrFail();
$cookie->data_values = [
'short_desc' => $request->short_desc,
'description' => $request->description,
'status' => $request->status ? Status::ENABLE : Status::DISABLE,
];
$cookie->save();
$notify[] = ['success', 'Cookie policy updated successfully'];
return back()->withNotify($notify);
}
}