Browse Source

Too many changes to mention.

Ferks-FK 2 years ago
parent
commit
cfd370eb6d
26 changed files with 194 additions and 91 deletions
  1. 2 2
      app/Http/Controllers/Admin/InvoiceController.php
  2. 4 6
      app/Http/Controllers/Admin/OverViewController.php
  3. 0 5
      app/Http/Controllers/Admin/PaymentController.php
  4. 5 4
      app/Http/Controllers/Admin/ProductController.php
  5. 3 3
      app/Http/Controllers/Admin/ServerController.php
  6. 1 1
      app/Http/Controllers/Admin/ShopProductController.php
  7. 4 4
      app/Http/Controllers/Admin/UserController.php
  8. 4 5
      app/Http/Controllers/Api/UserController.php
  9. 1 2
      app/Http/Controllers/Auth/RegisterController.php
  10. 2 2
      app/Http/Controllers/Controller.php
  11. 2 4
      app/Http/Controllers/ProductController.php
  12. 7 7
      app/Http/Controllers/ProfileController.php
  13. 20 21
      app/Http/Controllers/ServerController.php
  14. 4 3
      app/Http/Controllers/StoreController.php
  15. 2 0
      app/Settings/ServerSettings.php
  16. 1 1
      database/seeders/DatabaseSeeder.php
  17. 12 1
      database/settings/2023_02_01_164731_create_general_settings.php
  18. 12 1
      database/settings/2023_02_01_181334_create_pterodactyl_settings.php
  19. 13 2
      database/settings/2023_02_01_181453_create_mail_settings.php
  20. 12 1
      database/settings/2023_02_01_181925_create_user_settings.php
  21. 13 1
      database/settings/2023_02_01_181950_create_server_settings.php
  22. 18 7
      database/settings/2023_02_01_182021_create_invoice_settings.php
  23. 16 5
      database/settings/2023_02_01_182043_create_discord_settings.php
  24. 12 1
      database/settings/2023_02_01_182108_create_locale_settings.php
  25. 12 1
      database/settings/2023_02_01_182135_create_referral_settings.php
  26. 12 1
      database/settings/2023_02_01_182158_create_website_settings.php

+ 2 - 2
app/Http/Controllers/Admin/InvoiceController.php

@@ -15,7 +15,7 @@ class InvoiceController extends Controller
         $zip = new ZipArchive;
         $zip = new ZipArchive;
         $zip_safe_path = storage_path('invoices.zip');
         $zip_safe_path = storage_path('invoices.zip');
         $res = $zip->open($zip_safe_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
         $res = $zip->open($zip_safe_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
-        $result = $this::rglob(storage_path('app/invoice/*'));
+        $result = $this->rglob(storage_path('app/invoice/*'));
         if ($res === true) {
         if ($res === true) {
             $zip->addFromString('1. Info.txt', __('Created at').' '.now()->format('d.m.Y'));
             $zip->addFromString('1. Info.txt', __('Created at').' '.now()->format('d.m.Y'));
             foreach ($result as $file) {
             foreach ($result as $file) {
@@ -38,7 +38,7 @@ class InvoiceController extends Controller
     {
     {
         $files = glob($pattern, $flags);
         $files = glob($pattern, $flags);
         foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
         foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
-            $files = array_merge($files, $this::rglob($dir.'/'.basename($pattern), $flags));
+            $files = array_merge($files, $this->rglob($dir.'/'.basename($pattern), $flags));
         }
         }
 
 
         return $files;
         return $files;

+ 4 - 6
app/Http/Controllers/Admin/OverViewController.php

@@ -20,10 +20,8 @@ class OverViewController extends Controller
 {
 {
     public const TTL = 86400;
     public const TTL = 86400;
 
 
-    public function index(PterodactylSettings $ptero_settings)
+    public function index()
     {
     {
-        //Prepare pterodactyl client
-        $pterodactyl_client = new PterodactylClient($ptero_settings);
         //Get counters
         //Get counters
         $counters = collect();
         $counters = collect();
         //Set basic variables in the collection
         //Set basic variables in the collection
@@ -137,7 +135,7 @@ class OverViewController extends Controller
 
 
         //Get node information and prepare collection
         //Get node information and prepare collection
         $pteroNodeIds = [];
         $pteroNodeIds = [];
-        foreach ($pterodactyl_client->getNodes() as $pteroNode) {
+        foreach ($this->pterodactyl->getNodes() as $pteroNode) {
             array_push($pteroNodeIds, $pteroNode['attributes']['id']);
             array_push($pteroNodeIds, $pteroNode['attributes']['id']);
         }
         }
         $nodes = collect();
         $nodes = collect();
@@ -148,7 +146,7 @@ class OverViewController extends Controller
             } //Check if node exists on pterodactyl too, if not, skip
             } //Check if node exists on pterodactyl too, if not, skip
             $nodes->put($nodeId, collect());
             $nodes->put($nodeId, collect());
             $nodes[$nodeId]->name = $DBnode['name'];
             $nodes[$nodeId]->name = $DBnode['name'];
-            $pteroNode = $pterodactyl_client->getNode($nodeId);
+            $pteroNode = $this->pterodactyl->getNode($nodeId);
             $nodes[$nodeId]->usagePercent = round(max($pteroNode['allocated_resources']['memory'] / ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100), $pteroNode['allocated_resources']['disk'] / ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) * 100, 2);
             $nodes[$nodeId]->usagePercent = round(max($pteroNode['allocated_resources']['memory'] / ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100), $pteroNode['allocated_resources']['disk'] / ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) * 100, 2);
             $counters['totalUsagePercent'] += $nodes[$nodeId]->usagePercent;
             $counters['totalUsagePercent'] += $nodes[$nodeId]->usagePercent;
 
 
@@ -159,7 +157,7 @@ class OverViewController extends Controller
         }
         }
         $counters['totalUsagePercent'] = ($DBnodes->count()) ? round($counters['totalUsagePercent'] / $DBnodes->count(), 2) : 0;
         $counters['totalUsagePercent'] = ($DBnodes->count()) ? round($counters['totalUsagePercent'] / $DBnodes->count(), 2) : 0;
 
 
-        foreach ($pterodactyl_client->getServers() as $server) { //gets all servers from Pterodactyl and calculates total of credit usage for each node separately + total
+        foreach ($this->pterodactyl->getServers() as $server) { //gets all servers from Pterodactyl and calculates total of credit usage for each node separately + total
             $nodeId = $server['attributes']['node'];
             $nodeId = $server['attributes']['node'];
 
 
             if ($CPServer = Server::query()->where('pterodactyl_id', $server['attributes']['id'])->first()) {
             if ($CPServer = Server::query()->where('pterodactyl_id', $server['attributes']['id'])->first()) {

+ 0 - 5
app/Http/Controllers/Admin/PaymentController.php

@@ -58,11 +58,6 @@ class PaymentController extends Controller
             }
             }
         }
         }
 
 
-
-
-
-
-
         return view('store.checkout')->with([
         return view('store.checkout')->with([
             'product' => $shopProduct,
             'product' => $shopProduct,
             'discountpercent' => $discount,
             'discountpercent' => $discount,

+ 5 - 4
app/Http/Controllers/Admin/ProductController.php

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
 use App\Models\Pterodactyl\Location;
 use App\Models\Pterodactyl\Location;
 use App\Models\Pterodactyl\Nest;
 use App\Models\Pterodactyl\Nest;
 use App\Models\Product;
 use App\Models\Product;
+use App\Settings\UserSettings;
 use Exception;
 use Exception;
 use Illuminate\Contracts\Foundation\Application;
 use Illuminate\Contracts\Foundation\Application;
 use Illuminate\Contracts\View\Factory;
 use Illuminate\Contracts\View\Factory;
@@ -39,7 +40,7 @@ class ProductController extends Controller
         ]);
         ]);
     }
     }
 
 
-    public function clone(Request $request, Product $product)
+    public function clone(Product $product)
     {
     {
         return view('admin.products.create', [
         return view('admin.products.create', [
             'product' => $product,
             'product' => $product,
@@ -90,11 +91,11 @@ class ProductController extends Controller
      * @param  Product  $product
      * @param  Product  $product
      * @return Application|Factory|View
      * @return Application|Factory|View
      */
      */
-    public function show(Product $product)
+    public function show(Product $product, UserSettings $user_settings)
     {
     {
         return view('admin.products.show', [
         return view('admin.products.show', [
             'product' => $product,
             'product' => $product,
-            'minimum_credits' => config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER'),
+            'minimum_credits' => $user_settings->min_credits_to_make_server,
         ]);
         ]);
     }
     }
 
 
@@ -157,7 +158,7 @@ class ProductController extends Controller
      * @param  Product  $product
      * @param  Product  $product
      * @return RedirectResponse
      * @return RedirectResponse
      */
      */
-    public function disable(Request $request, Product $product)
+    public function disable(Product $product)
     {
     {
         $product->update(['disabled' => ! $product->disabled]);
         $product->update(['disabled' => ! $product->disabled]);
 
 

+ 3 - 3
app/Http/Controllers/Admin/ServerController.php

@@ -64,7 +64,7 @@ class ServerController extends Controller
 
 
             // try to update the owner on pterodactyl
             // try to update the owner on pterodactyl
             try {
             try {
-                $response = $this->client->updateServerOwner($server, $user->pterodactyl_id);
+                $response = $this->pterodactyl->updateServerOwner($server, $user->pterodactyl_id);
                 if ($response->getStatusCode() != 200) {
                 if ($response->getStatusCode() != 200) {
                     return redirect()->back()->with('error', 'Failed to update server owner on pterodactyl');
                     return redirect()->back()->with('error', 'Failed to update server owner on pterodactyl');
                 }
                 }
@@ -127,7 +127,7 @@ class ServerController extends Controller
             }
             }
         }
         }
 
 
-        foreach ($this->client->getServers() as $server) { //go thru all ptero servers, if server exists, change value to true in array.
+        foreach ($this->pterodactyl->getServers() as $server) { //go thru all ptero servers, if server exists, change value to true in array.
             if (isset($CPIDArray[$server['attributes']['id']])) {
             if (isset($CPIDArray[$server['attributes']['id']])) {
                 $CPIDArray[$server['attributes']['id']] = true;
                 $CPIDArray[$server['attributes']['id']] = true;
 
 
@@ -147,7 +147,7 @@ class ServerController extends Controller
         }, ARRAY_FILTER_USE_BOTH); //Array of servers, that dont exist on ptero (value == false)
         }, ARRAY_FILTER_USE_BOTH); //Array of servers, that dont exist on ptero (value == false)
         $deleteCount = 0;
         $deleteCount = 0;
         foreach ($filteredArray as $key => $CPID) { //delete servers that dont exist on ptero anymore
         foreach ($filteredArray as $key => $CPID) { //delete servers that dont exist on ptero anymore
-            if (!$this->client->getServerAttributes($key, true)) {
+            if (!$this->pterodactyl->getServerAttributes($key, true)) {
                 $deleteCount++;
                 $deleteCount++;
             }
             }
         }
         }

+ 1 - 1
app/Http/Controllers/Admin/ShopProductController.php

@@ -117,7 +117,7 @@ class ShopProductController extends Controller
      * @param  ShopProduct  $shopProduct
      * @param  ShopProduct  $shopProduct
      * @return RedirectResponse
      * @return RedirectResponse
      */
      */
-    public function disable(Request $request, ShopProduct $shopProduct)
+    public function disable(ShopProduct $shopProduct)
     {
     {
         $shopProduct->update(['disabled' => !$shopProduct->disabled]);
         $shopProduct->update(['disabled' => !$shopProduct->disabled]);
 
 

+ 4 - 4
app/Http/Controllers/Admin/UserController.php

@@ -31,7 +31,7 @@ class UserController extends Controller
      * @param  Request  $request
      * @param  Request  $request
      * @return Application|Factory|View|Response
      * @return Application|Factory|View|Response
      */
      */
-    public function index(Request $request)
+    public function index()
     {
     {
         return view('admin.users.index');
         return view('admin.users.index');
     }
     }
@@ -118,7 +118,7 @@ class UserController extends Controller
             'referral_code' => "required|string|min:2|max:32|unique:users,referral_code,{$user->id}",
             'referral_code' => "required|string|min:2|max:32|unique:users,referral_code,{$user->id}",
         ]);
         ]);
 
 
-        if (isset($this->client->getUser($request->input('pterodactyl_id'))['errors'])) {
+        if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) {
             throw ValidationException::withMessages([
             throw ValidationException::withMessages([
                 'pterodactyl_id' => [__("User does not exists on pterodactyl's panel")],
                 'pterodactyl_id' => [__("User does not exists on pterodactyl's panel")],
             ]);
             ]);
@@ -160,7 +160,7 @@ class UserController extends Controller
      * @param  User  $user
      * @param  User  $user
      * @return RedirectResponse
      * @return RedirectResponse
      */
      */
-    public function verifyEmail(Request $request, User $user)
+    public function verifyEmail(User $user)
     {
     {
         $user->verifyEmail();
         $user->verifyEmail();
 
 
@@ -198,7 +198,7 @@ class UserController extends Controller
      * @param  User  $user
      * @param  User  $user
      * @return Application|Factory|View|Response
      * @return Application|Factory|View|Response
      */
      */
-    public function notifications(User $user)
+    public function notifications()
     {
     {
         return view('admin.users.notifications');
         return view('admin.users.notifications');
     }
     }

+ 4 - 5
app/Http/Controllers/Api/UserController.php

@@ -2,7 +2,6 @@
 
 
 namespace App\Http\Controllers\Api;
 namespace App\Http\Controllers\Api;
 
 
-use App\Classes\Pterodactyl;
 use App\Events\UserUpdateCreditsEvent;
 use App\Events\UserUpdateCreditsEvent;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Controller;
 use App\Models\DiscordUser;
 use App\Models\DiscordUser;
@@ -95,7 +94,7 @@ class UserController extends Controller
 
 
         //Update Users Password on Pterodactyl
         //Update Users Password on Pterodactyl
         //Username,Mail,First and Lastname are required aswell
         //Username,Mail,First and Lastname are required aswell
-        $response = Pterodactyl::client()->patch('/application/users/' . $user->pterodactyl_id, [
+        $response = $this->pterodactyl->client_admin->patch('/application/users/' . $user->pterodactyl_id, [
             'username' => $request->name,
             'username' => $request->name,
             'first_name' => $request->name,
             'first_name' => $request->name,
             'last_name' => $request->name,
             'last_name' => $request->name,
@@ -203,7 +202,7 @@ class UserController extends Controller
      *
      *
      * @throws ValidationException
      * @throws ValidationException
      */
      */
-    public function suspend(Request $request, int $id)
+    public function suspend(int $id)
     {
     {
         $discordUser = DiscordUser::find($id);
         $discordUser = DiscordUser::find($id);
         $user = $discordUser ? $discordUser->user : User::findOrFail($id);
         $user = $discordUser ? $discordUser->user : User::findOrFail($id);
@@ -227,7 +226,7 @@ class UserController extends Controller
      *
      *
      * @throws ValidationException
      * @throws ValidationException
      */
      */
-    public function unsuspend(Request $request, int $id)
+    public function unsuspend(int $id)
     {
     {
         $discordUser = DiscordUser::find($id);
         $discordUser = DiscordUser::find($id);
         $user = $discordUser ? $discordUser->user : User::findOrFail($id);
         $user = $discordUser ? $discordUser->user : User::findOrFail($id);
@@ -270,7 +269,7 @@ class UserController extends Controller
             'referral_code' => $this->createReferralCode(),
             'referral_code' => $this->createReferralCode(),
         ]);
         ]);
 
 
-        $response = Pterodactyl::client()->post('/application/users', [
+        $response = $this->pterodactyl->client_admin->post('/application/users', [
             'external_id' => App::environment('local') ? Str::random(16) : (string) $user->id,
             'external_id' => App::environment('local') ? Str::random(16) : (string) $user->id,
             'username' => $user->name,
             'username' => $user->name,
             'email' => $user->email,
             'email' => $user->email,

+ 1 - 2
app/Http/Controllers/Auth/RegisterController.php

@@ -2,7 +2,6 @@
 
 
 namespace App\Http\Controllers\Auth;
 namespace App\Http\Controllers\Auth;
 
 
-use App\Classes\Pterodactyl;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Controller;
 use App\Models\User;
 use App\Models\User;
 use App\Notifications\ReferralNotification;
 use App\Notifications\ReferralNotification;
@@ -106,7 +105,7 @@ class RegisterController extends Controller
 
 
         ]);
         ]);
 
 
-        $response = Pterodactyl::client()->post('/application/users', [
+        $response = $this->pterodactyl->client_admin->post('/application/users', [
             'external_id' => App::environment('local') ? Str::random(16) : (string) $user->id,
             'external_id' => App::environment('local') ? Str::random(16) : (string) $user->id,
             'username' => $user->name,
             'username' => $user->name,
             'email' => $user->email,
             'email' => $user->email,

+ 2 - 2
app/Http/Controllers/Controller.php

@@ -14,12 +14,12 @@ class Controller extends BaseController
 {
 {
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 
 
-    public $client = null;
+    public $pterodactyl = null;
 
 
     public function __construct(PterodactylSettings $ptero_settings)
     public function __construct(PterodactylSettings $ptero_settings)
     {
     {
         try {
         try {
-            $this->client = new PterodactylClient($ptero_settings);
+            $this->pterodactyl = new PterodactylClient($ptero_settings);
         }
         }
         catch (Exception $exception) {
         catch (Exception $exception) {
             
             

+ 2 - 4
app/Http/Controllers/ProductController.php

@@ -2,12 +2,10 @@
 
 
 namespace App\Http\Controllers;
 namespace App\Http\Controllers;
 
 
-use App\Classes\PterodactylClient;
 use App\Models\Pterodactyl\Egg;
 use App\Models\Pterodactyl\Egg;
 use App\Models\Pterodactyl\Location;
 use App\Models\Pterodactyl\Location;
 use App\Models\Pterodactyl\Node;
 use App\Models\Pterodactyl\Node;
 use App\Models\Product;
 use App\Models\Product;
-use app\Settings\PterodactylSettings;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
@@ -61,7 +59,7 @@ class ProductController extends Controller
     {
     {
         $nodes = $this->getNodesBasedOnEgg($request, $egg);
         $nodes = $this->getNodesBasedOnEgg($request, $egg);
         foreach ($nodes as $key => $node) {
         foreach ($nodes as $key => $node) {
-            $pteroNode = $this->client->getNode($node->id);
+            $pteroNode = $this->pterodactyl->getNode($node->id);
             if ($pteroNode['allocated_resources']['memory'] >= ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) || $pteroNode['allocated_resources']['disk'] >= ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) {
             if ($pteroNode['allocated_resources']['memory'] >= ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) || $pteroNode['allocated_resources']['disk'] >= ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) {
                 $nodes->forget($key);
                 $nodes->forget($key);
             }
             }
@@ -110,7 +108,7 @@ class ProductController extends Controller
             })
             })
             ->get();
             ->get();
 
 
-        $pteroNode = $this->client->getNode($node->id);
+        $pteroNode = $this->pterodactyl->getNode($node->id);
         foreach ($products as $key => $product) {
         foreach ($products as $key => $product) {
             if ($product->memory > ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['memory'] || $product->disk > ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['disk']) {
             if ($product->memory > ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['memory'] || $product->disk > ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['disk']) {
                 $product->doesNotFit = true;
                 $product->doesNotFit = true;

+ 7 - 7
app/Http/Controllers/ProfileController.php

@@ -2,8 +2,8 @@
 
 
 namespace App\Http\Controllers;
 namespace App\Http\Controllers;
 
 
-use App\Classes\Pterodactyl;
 use App\Models\User;
 use App\Models\User;
+use App\Settings\UserSettings;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Auth;
@@ -13,7 +13,7 @@ use Illuminate\Validation\ValidationException;
 class ProfileController extends Controller
 class ProfileController extends Controller
 {
 {
     /** Display a listing of the resource. */
     /** Display a listing of the resource. */
-    public function index()
+    public function index(UserSettings $user_settings)
     {
     {
         switch (Auth::user()->role) {
         switch (Auth::user()->role) {
             case 'admin':
             case 'admin':
@@ -32,9 +32,9 @@ class ProfileController extends Controller
 
 
         return view('profile.index')->with([
         return view('profile.index')->with([
             'user' => Auth::user(),
             'user' => Auth::user(),
-            'credits_reward_after_verify_discord' => config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD'),
-            'force_email_verification' => config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION'),
-            'force_discord_verification' => config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION'),
+            'credits_reward_after_verify_discord' => $user_settings->credits_reward_after_verify_discord,
+            'force_email_verification' => $user_settings->force_email_verification,
+            'force_discord_verification' => $user_settings->force_discord_verification,
             'badgeColor' => $badgeColor,
             'badgeColor' => $badgeColor,
         ]);
         ]);
     }
     }
@@ -81,7 +81,7 @@ class ProfileController extends Controller
 
 
             //Update Users Password on Pterodactyl
             //Update Users Password on Pterodactyl
             //Username,Mail,First and Lastname are required aswell
             //Username,Mail,First and Lastname are required aswell
-            $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
+            $response = $this->pterodactyl->client_admin->patch('/application/users/'.$user->pterodactyl_id, [
                 'password' => $request->input('new_password'),
                 'password' => $request->input('new_password'),
                 'username' => $request->input('name'),
                 'username' => $request->input('name'),
                 'first_name' => $request->input('name'),
                 'first_name' => $request->input('name'),
@@ -125,7 +125,7 @@ class ProfileController extends Controller
         }
         }
 
 
         //update name and email on Pterodactyl
         //update name and email on Pterodactyl
-        $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
+        $response = $this->pterodactyl->client_admin->patch('/application/users/'.$user->pterodactyl_id, [
             'username' => $request->input('name'),
             'username' => $request->input('name'),
             'first_name' => $request->input('name'),
             'first_name' => $request->input('name'),
             'last_name' => $request->input('name'),
             'last_name' => $request->input('name'),

+ 20 - 21
app/Http/Controllers/ServerController.php

@@ -30,7 +30,7 @@ class ServerController extends Controller
         foreach ($servers as $server) {
         foreach ($servers as $server) {
 
 
             //Get server infos from ptero
             //Get server infos from ptero
-            $serverAttributes = $this->client->getServerAttributes($server->pterodactyl_id, true);
+            $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id, true);
             if (! $serverAttributes) {
             if (! $serverAttributes) {
                 continue;
                 continue;
             }
             }
@@ -123,18 +123,15 @@ class ServerController extends Controller
             $nodeName = $node->name;
             $nodeName = $node->name;
 
 
             // Check if node has enough memory and disk space
             // Check if node has enough memory and disk space
-            $checkResponse = $this->client->checkNodeResources($node, $product->memory, $product->disk);
+            $checkResponse = $this->pterodactyl->checkNodeResources($node, $product->memory, $product->disk);
             if ($checkResponse == false) {
             if ($checkResponse == false) {
                 return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to allocate this product."));
                 return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to allocate this product."));
             }
             }
 
 
             // Min. Credits
             // Min. Credits
-            if (
-                Auth::user()->credits <
-                ($product->minimum_credits == -1
-                    ? config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)
-                    : $product->minimum_credits)
-            ) {
+            if (Auth::user()->credits < ($product->minimum_credits == -1
+                ? $user_settings->min_credits_to_make_server
+                : $product->minimum_credits)) {
                 return redirect()->route('servers.index')->with('error', 'You do not have the required amount of '.CREDITS_DISPLAY_NAME.' to use this product!');
                 return redirect()->route('servers.index')->with('error', 'You do not have the required amount of '.CREDITS_DISPLAY_NAME.' to use this product!');
             }
             }
         }
         }
@@ -158,13 +155,15 @@ class ServerController extends Controller
     }
     }
 
 
     /** Store a newly created resource in storage. */
     /** Store a newly created resource in storage. */
-    public function store(Request $request)
+    public function store(Request $request, UserSettings $user_settings, ServerSettings $server_settings)
     {
     {
         /** @var Node $node */
         /** @var Node $node */
         /** @var Egg $egg */
         /** @var Egg $egg */
         /** @var Product $product */
         /** @var Product $product */
-        if (! is_null($this->validateConfigurationRules())) {
-            return $this->validateConfigurationRules();
+        $validate_configuration = $this->validateConfigurationRules($user_settings, $server_settings);
+
+        if (!is_null($validate_configuration)) {
+            return $validate_configuration;
         }
         }
 
 
         $request->validate([
         $request->validate([
@@ -185,13 +184,13 @@ class ServerController extends Controller
         ]);
         ]);
 
 
         //get free allocation ID
         //get free allocation ID
-        $allocationId = $this->client->getFreeAllocationId($node);
+        $allocationId = $this->pterodactyl->getFreeAllocationId($node);
         if (! $allocationId) {
         if (! $allocationId) {
             return $this->noAllocationsError($server);
             return $this->noAllocationsError($server);
         }
         }
 
 
         //create server on pterodactyl
         //create server on pterodactyl
-        $response = $this->client->createServer($server, $egg, $allocationId);
+        $response = $this->pterodactyl->createServer($server, $egg, $allocationId);
         if ($response->failed()) {
         if ($response->failed()) {
             return $this->serverCreationFailed($response, $server);
             return $this->serverCreationFailed($response, $server);
         }
         }
@@ -203,7 +202,7 @@ class ServerController extends Controller
             'identifier' => $serverAttributes['identifier'],
             'identifier' => $serverAttributes['identifier'],
         ]);
         ]);
 
 
-        if (config('SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR', 'true') == 'true') {
+        if ($server_settings->charge_first_hour) {
             if ($request->user()->credits >= $server->product->getHourlyPrice()) {
             if ($request->user()->credits >= $server->product->getHourlyPrice()) {
                 $request->user()->decrement('credits', $server->product->getHourlyPrice());
                 $request->user()->decrement('credits', $server->product->getHourlyPrice());
             }
             }
@@ -257,9 +256,9 @@ class ServerController extends Controller
     public function show(Server $server)
     public function show(Server $server)
     {
     {
         if ($server->user_id != Auth::user()->id) {
         if ($server->user_id != Auth::user()->id) {
-            return back()->with('error', __('´This is not your Server!'));
+            return back()->with('error', __('This is not your Server!'));
         }
         }
-        $serverAttributes = $this->client->getServerAttributes($server->pterodactyl_id);
+        $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id);
         $serverRelationships = $serverAttributes['relationships'];
         $serverRelationships = $serverAttributes['relationships'];
         $serverLocationAttributes = $serverRelationships['location']['attributes'];
         $serverLocationAttributes = $serverRelationships['location']['attributes'];
 
 
@@ -275,7 +274,7 @@ class ServerController extends Controller
         $server->name = $serverAttributes['name'];
         $server->name = $serverAttributes['name'];
         $server->egg = $serverRelationships['egg']['attributes']['name'];
         $server->egg = $serverRelationships['egg']['attributes']['name'];
 
 
-        $pteroNode = $this->client->getNode($serverRelationships['node']['attributes']['id']);
+        $pteroNode = $this->pterodactyl->getNode($serverRelationships['node']['attributes']['id']);
 
 
         $products = Product::orderBy('created_at')
         $products = Product::orderBy('created_at')
         ->whereHas('nodes', function (Builder $builder) use ($serverRelationships) { //Only show products for that node
         ->whereHas('nodes', function (Builder $builder) use ($serverRelationships) { //Only show products for that node
@@ -308,7 +307,7 @@ class ServerController extends Controller
         $user = Auth::user();
         $user = Auth::user();
         $oldProduct = Product::where('id', $server->product->id)->first();
         $oldProduct = Product::where('id', $server->product->id)->first();
         $newProduct = Product::where('id', $request->product_upgrade)->first();
         $newProduct = Product::where('id', $request->product_upgrade)->first();
-        $serverAttributes = $this->client->getServerAttributes($server->pterodactyl_id);
+        $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id);
         $serverRelationships = $serverAttributes['relationships'];
         $serverRelationships = $serverAttributes['relationships'];
 
 
         // Get node resource allocation info
         // Get node resource allocation info
@@ -319,7 +318,7 @@ class ServerController extends Controller
         // Check if node has enough memory and disk space
         // Check if node has enough memory and disk space
         $requireMemory = $newProduct->memory - $oldProduct->memory;
         $requireMemory = $newProduct->memory - $oldProduct->memory;
         $requiredisk = $newProduct->disk - $oldProduct->disk;
         $requiredisk = $newProduct->disk - $oldProduct->disk;
-        $checkResponse = $this->client->checkNodeResources($node, $requireMemory, $requiredisk);
+        $checkResponse = $this->pterodactyl->checkNodeResources($node, $requireMemory, $requiredisk);
         if ($checkResponse == false) {
         if ($checkResponse == false) {
             return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to upgrade the server."));
             return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to upgrade the server."));
         }
         }
@@ -333,14 +332,14 @@ class ServerController extends Controller
             $server->product_id = $request->product_upgrade;
             $server->product_id = $request->product_upgrade;
             $server->update();
             $server->update();
             $server->allocation = $serverAttributes['allocation'];
             $server->allocation = $serverAttributes['allocation'];
-            $response = $this->client->updateServer($server, $newProduct);
+            $response = $this->pterodactyl->updateServer($server, $newProduct);
             if ($response->failed()) {
             if ($response->failed()) {
                 return $this->serverCreationFailed($response, $server);
                 return $this->serverCreationFailed($response, $server);
             }
             }
             //update user balance
             //update user balance
             $user->decrement('credits', $priceupgrade);
             $user->decrement('credits', $priceupgrade);
             //restart the server
             //restart the server
-            $response = $this->client->powerAction($server, 'restart');
+            $response = $this->pterodactyl->powerAction($server, 'restart');
             if ($response->failed()) {
             if ($response->failed()) {
                 return redirect()->route('servers.index')->with('error', $response->json()['errors'][0]['detail']);
                 return redirect()->route('servers.index')->with('error', $response->json()['errors'][0]['detail']);
             }
             }

+ 4 - 3
app/Http/Controllers/StoreController.php

@@ -3,12 +3,13 @@
 namespace App\Http\Controllers;
 namespace App\Http\Controllers;
 
 
 use App\Models\ShopProduct;
 use App\Models\ShopProduct;
+use App\Settings\UserSettings;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Auth;
 
 
 class StoreController extends Controller
 class StoreController extends Controller
 {
 {
     /** Display a listing of the resource. */
     /** Display a listing of the resource. */
-    public function index()
+    public function index(UserSettings $user_settings)
     {
     {
         $isPaymentSetup = false;
         $isPaymentSetup = false;
 
 
@@ -21,12 +22,12 @@ class StoreController extends Controller
         }
         }
 
 
         //Required Verification for creating an server
         //Required Verification for creating an server
-        if (config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION', false) === 'true' && ! Auth::user()->hasVerifiedEmail()) {
+        if ($user_settings->force_email_verification && ! Auth::user()->hasVerifiedEmail()) {
             return redirect()->route('profile.index')->with('error', __('You are required to verify your email address before you can purchase credits.'));
             return redirect()->route('profile.index')->with('error', __('You are required to verify your email address before you can purchase credits.'));
         }
         }
 
 
         //Required Verification for creating an server
         //Required Verification for creating an server
-        if (config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION', false) === 'true' && ! Auth::user()->discordUser) {
+        if ($user_settings->force_discord_verification && ! Auth::user()->discordUser) {
             return redirect()->route('profile.index')->with('error', __('You are required to link your discord account before you can purchase Credits'));
             return redirect()->route('profile.index')->with('error', __('You are required to link your discord account before you can purchase Credits'));
         }
         }
 
 

+ 2 - 0
app/Settings/ServerSettings.php

@@ -12,6 +12,8 @@ class ServerSettings extends Settings
 
 
     public bool $enable_upgrade;
     public bool $enable_upgrade;
 
 
+    public bool $charge_first_hour;
+
     public static function group(): string
     public static function group(): string
     {
     {
         return 'server';
         return 'server';

+ 1 - 1
database/seeders/DatabaseSeeder.php

@@ -14,6 +14,6 @@ class DatabaseSeeder extends Seeder
      */
      */
     public function run()
     public function run()
     {
     {
-        Schema::dropIfExists('settings_old');
+        // Schema::dropIfExists('settings_old');
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_164731_create_general_settings.php

@@ -27,6 +27,17 @@ class CreateGeneralSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_181334_create_pterodactyl_settings.php

@@ -19,6 +19,17 @@ class CreatePterodactylSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 13 - 2
database/settings/2023_02_01_181453_create_mail_settings.php

@@ -11,7 +11,7 @@ class CreateMailSettings extends SettingsMigration
 
 
         // Get the user-set configuration values from the old table.
         // Get the user-set configuration values from the old table.
         $this->migrator->add('mail.mail_host', $table_exists ? $this->getOldValue('SETTINGS::MAIL:HOST') : env('MAIL_HOST', 'localhost'));
         $this->migrator->add('mail.mail_host', $table_exists ? $this->getOldValue('SETTINGS::MAIL:HOST') : env('MAIL_HOST', 'localhost'));
-        $this->migrator->add('mail.mail_port', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PORT') : env('MAIL_PORT', '25'));
+        $this->migrator->add('mail.mail_port', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PORT') : env('MAIL_PORT', 25));
         $this->migrator->add('mail.mail_username', $table_exists ? $this->getOldValue('SETTINGS::MAIL:USERNAME') : env('MAIL_USERNAME', ''));
         $this->migrator->add('mail.mail_username', $table_exists ? $this->getOldValue('SETTINGS::MAIL:USERNAME') : env('MAIL_USERNAME', ''));
         $this->migrator->addEncrypted('mail.mail_password', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PASSWORD') : env('MAIL_PASSWORD', ''));
         $this->migrator->addEncrypted('mail.mail_password', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PASSWORD') : env('MAIL_PASSWORD', ''));
         $this->migrator->add('mail.mail_encryption', $table_exists ? $this->getOldValue('SETTINGS::MAIL:ENCRYPTION') : env('MAIL_ENCRYPTION', 'tls'));
         $this->migrator->add('mail.mail_encryption', $table_exists ? $this->getOldValue('SETTINGS::MAIL:ENCRYPTION') : env('MAIL_ENCRYPTION', 'tls'));
@@ -24,6 +24,17 @@ class CreateMailSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_181925_create_user_settings.php

@@ -27,6 +27,17 @@ class CreateUserSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 13 - 1
database/settings/2023_02_01_181950_create_server_settings.php

@@ -13,11 +13,23 @@ class CreateServerSettings extends SettingsMigration
         $this->migrator->add('server.allocation_limit', $table_exists ? $this->getOldValue('SETTINGS::SERVER:ALLOCATION_LIMIT'): 200);
         $this->migrator->add('server.allocation_limit', $table_exists ? $this->getOldValue('SETTINGS::SERVER:ALLOCATION_LIMIT'): 200);
         $this->migrator->add('server.creation_enabled', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS'): true);
         $this->migrator->add('server.creation_enabled', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS'): true);
         $this->migrator->add('server.enable_upgrade', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:ENABLE_UPGRADE'): false);
         $this->migrator->add('server.enable_upgrade', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:ENABLE_UPGRADE'): false);
+        $this->migrator->add('server.charge_first_hour', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR'): false);
     }
     }
 
 
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 18 - 7
database/settings/2023_02_01_182021_create_invoice_settings.php

@@ -10,12 +10,12 @@ class CreateInvoiceSettings extends SettingsMigration
         $table_exists = DB::table('settings_old')->exists();
         $table_exists = DB::table('settings_old')->exists();
 
 
         // Get the user-set configuration values from the old table.
         // Get the user-set configuration values from the old table.
-        $this->migrator->add('invoice.company_address', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_ADDRESS'): null);
-        $this->migrator->add('invoice.company_mail', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_MAIL'): null);
-        $this->migrator->add('invoice.company_name', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_NAME'): null);
-        $this->migrator->add('invoice.company_phone', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_PHONE'): null);
-        $this->migrator->add('invoice.company_vat', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_VAT'): null);
-        $this->migrator->add('invoice.company_website', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_WEBSITE'): null);
+        $this->migrator->add('invoice.company_address', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_ADDRESS'): '');
+        $this->migrator->add('invoice.company_mail', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_MAIL'): '');
+        $this->migrator->add('invoice.company_name', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_NAME'): '');
+        $this->migrator->add('invoice.company_phone', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_PHONE'): '');
+        $this->migrator->add('invoice.company_vat', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_VAT'): '');
+        $this->migrator->add('invoice.company_website', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_WEBSITE'): '');
         $this->migrator->add('invoice.enabled', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:ENABLED'): true);
         $this->migrator->add('invoice.enabled', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:ENABLED'): true);
         $this->migrator->add('invoice.prefix', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:PREFIX'): 'INV');
         $this->migrator->add('invoice.prefix', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:PREFIX'): 'INV');
     }
     }
@@ -23,6 +23,17 @@ class CreateInvoiceSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 16 - 5
database/settings/2023_02_01_182043_create_discord_settings.php

@@ -10,17 +10,28 @@ class CreateDiscordSettings extends SettingsMigration
         $table_exists = DB::table('settings_old')->exists();
         $table_exists = DB::table('settings_old')->exists();
 
 
         // Get the user-set configuration values from the old table.
         // Get the user-set configuration values from the old table.
-        $this->migrator->addEncrypted('discord.bot_token', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:BOT_TOKEN'): null);
-        $this->migrator->addEncrypted('discord.client_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_ID'): null);
-        $this->migrator->addEncrypted('discord.client_secret', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_SECRET'): null);
+        $this->migrator->addEncrypted('discord.bot_token', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:BOT_TOKEN'): '');
+        $this->migrator->addEncrypted('discord.client_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_ID'): '');
+        $this->migrator->addEncrypted('discord.client_secret', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_SECRET'): '');
         $this->migrator->add('discord.guild_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:GUILD_ID'): null);
         $this->migrator->add('discord.guild_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:GUILD_ID'): null);
-        $this->migrator->add('discord.invite_url', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:INVITE_URL'): null);
+        $this->migrator->add('discord.invite_url', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:INVITE_URL'): '');
         $this->migrator->add('discord.role_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:ROLE_ID'): null);
         $this->migrator->add('discord.role_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:ROLE_ID'): null);
     }
     }
 
 
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_182108_create_locale_settings.php

@@ -20,6 +20,17 @@ class CreateLocaleSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_182135_create_referral_settings.php

@@ -21,6 +21,17 @@ class CreateReferralSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }

+ 12 - 1
database/settings/2023_02_01_182158_create_website_settings.php

@@ -29,6 +29,17 @@ class CreateWebsiteSettings extends SettingsMigration
     public function getOldValue(string $key)
     public function getOldValue(string $key)
     {
     {
         // Always get the first value of the key.
         // Always get the first value of the key.
-        return DB::table('settings_old')->where('key', '=', $key)->get(['value'])->first()->value;
+        $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
+
+        // Handle the old values to return without it being a string in all cases.
+        if ($old_value->type === "string" || $old_value->type === "text") {
+            return $old_value->value;
+        }
+
+        if ($old_value->type === "boolean") {
+            return filter_var($old_value->value, FILTER_VALIDATE_BOOL);
+        }
+
+        return filter_var($old_value->value, FILTER_VALIDATE_INT);
     }
     }
 }
 }