| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace App\Http\Controllers; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use App\Models\Settings; | 
					
						
							|  |  |  | use Illuminate\Http\Request; | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | use Illuminate\Support\Facades\Cache; | 
					
						
							| 
									
										
										
										
											2023-03-31 11:31:19 +11:00
										 |  |  | use Illuminate\Support\Facades\Storage; | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | class SettingsController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function index() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-10-31 14:46:07 +11:00
										 |  |  |         return view('settings.index', ['setting' => Settings::where('id', 1)->first()]); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 14:46:07 +11:00
										 |  |  |     public function update(Request $request) | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     { | 
					
						
							|  |  |  |         $request->validate([ | 
					
						
							| 
									
										
										
										
											2022-10-31 14:46:07 +11:00
										 |  |  |             'dark_mode' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_versions_footer' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_ip' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_hostname' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_provider' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_location' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_price' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'show_server_value_yabs' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'save_yabs_as_txt' => 'required|integer|min:0|max:1', | 
					
						
							|  |  |  |             'default_currency' => 'required|string|size:3', | 
					
						
							|  |  |  |             'default_server_os' => 'required|integer', | 
					
						
							| 
									
										
										
										
											2022-03-09 13:41:12 +11:00
										 |  |  |             'due_soon_amount' => 'required|integer|between:0,12', | 
					
						
							| 
									
										
										
										
											2022-05-29 16:46:55 +10:00
										 |  |  |             'recently_added_amount' => 'required|integer|between:0,12', | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  |             'currency' => 'required|string|size:3', | 
					
						
							|  |  |  |             'sort_on' => 'required|integer|between:1,10', | 
					
						
							| 
									
										
										
										
											2023-03-31 11:31:19 +11:00
										 |  |  |             'favicon' => 'sometimes|nullable|mimes:ico,jpg,png|max:40', | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-31 11:31:19 +11:00
										 |  |  |         $settings = Settings::where('id', 1)->first(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($request->favicon) {//Has a favicon upload
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $file = $request->favicon; | 
					
						
							|  |  |  |             $extension = $file->getClientOriginalExtension(); | 
					
						
							|  |  |  |             $favicon_filename = "favicon.$extension"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if ($favicon_filename !== $settings->favicon && $settings->favicon !== 'favicon.ico') { | 
					
						
							|  |  |  |                 Storage::disk('public_uploads')->delete($settings->favicon);//Delete old favicon
 | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $file->storeAs("", $favicon_filename, "public_uploads");//Save into /public
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $do_update = $settings->update([ | 
					
						
							|  |  |  |             'dark_mode' => $request->dark_mode, | 
					
						
							|  |  |  |             'show_versions_footer' => $request->show_versions_footer, | 
					
						
							|  |  |  |             'show_servers_public' => $request->show_servers_public, | 
					
						
							|  |  |  |             'show_server_value_ip' => $request->show_server_value_ip, | 
					
						
							|  |  |  |             'show_server_value_hostname' => $request->show_server_value_hostname, | 
					
						
							|  |  |  |             'show_server_value_provider' => $request->show_server_value_provider, | 
					
						
							|  |  |  |             'show_server_value_location' => $request->show_server_value_location, | 
					
						
							|  |  |  |             'show_server_value_price' => $request->show_server_value_price, | 
					
						
							|  |  |  |             'show_server_value_yabs' => $request->show_server_value_yabs, | 
					
						
							|  |  |  |             'save_yabs_as_txt' => $request->save_yabs_as_txt, | 
					
						
							|  |  |  |             'default_currency' => $request->default_currency, | 
					
						
							|  |  |  |             'default_server_os' => $request->default_server_os, | 
					
						
							|  |  |  |             'due_soon_amount' => $request->due_soon_amount, | 
					
						
							|  |  |  |             'recently_added_amount' => $request->recently_added_amount, | 
					
						
							|  |  |  |             'dashboard_currency' => $request->currency, | 
					
						
							|  |  |  |             'sort_on' => $request->sort_on, | 
					
						
							|  |  |  |             'favicon' => $favicon_filename ?? $settings->favicon | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-09 13:41:12 +11:00
										 |  |  |         Cache::forget('due_soon');//Main page due_soon cache
 | 
					
						
							|  |  |  |         Cache::forget('recently_added');//Main page recently_added cache
 | 
					
						
							| 
									
										
										
										
											2022-05-29 16:56:13 +10:00
										 |  |  |         Cache::forget('pricing_breakdown');//Main page pricing breakdown
 | 
					
						
							| 
									
										
										
										
											2022-03-09 13:41:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  |         Cache::forget('settings');//Main page settings cache
 | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  |         //Clear because they are affected by settings change (sort_on)
 | 
					
						
							|  |  |  |         Cache::forget('all_servers'); | 
					
						
							|  |  |  |         Cache::forget('all_active_servers'); | 
					
						
							|  |  |  |         Cache::forget('all_shared'); | 
					
						
							|  |  |  |         Cache::forget('all_seedboxes'); | 
					
						
							|  |  |  |         Cache::forget('all_reseller'); | 
					
						
							|  |  |  |         Cache::forget('all_misc'); | 
					
						
							| 
									
										
										
										
											2022-10-31 11:15:28 +11:00
										 |  |  |         Cache::forget('all_domains'); | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |         Settings::setSettingsToSession(Settings::getSettings()); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-31 11:31:19 +11:00
										 |  |  |         if ($do_update) { | 
					
						
							| 
									
										
										
										
											2022-10-31 14:46:07 +11:00
										 |  |  |             return redirect()->route('settings.index') | 
					
						
							|  |  |  |                 ->with('success', 'Settings Updated Successfully.'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         return redirect()->route('settings.index') | 
					
						
							| 
									
										
										
										
											2022-10-31 14:46:07 +11:00
										 |  |  |             ->with('error', 'Settings failed to update.'); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |