From a981b4950253da5d359cc6ae0d7f8e20976cf57a Mon Sep 17 00:00:00 2001 From: ayntk-ai <122374094+ayntk-ai@users.noreply.github.com> Date: Fri, 16 Aug 2024 17:43:14 +0200 Subject: [PATCH] fixed database seeder, remove dependency on form.php --- database/seeders/ServerTimezoneSeeder.php | 52 ++++++++++++++++------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/database/seeders/ServerTimezoneSeeder.php b/database/seeders/ServerTimezoneSeeder.php index fc31eb761..9dd6636f9 100644 --- a/database/seeders/ServerTimezoneSeeder.php +++ b/database/seeders/ServerTimezoneSeeder.php @@ -4,9 +4,9 @@ use App\Models\Server; use Illuminate\Database\Seeder; -use App\Livewire\Server\Form; use Illuminate\Support\Facades\DB; + class ServerTimezoneSeeder extends Seeder { public function run(): void @@ -17,22 +17,42 @@ public function run(): void $query->whereNull('server_timezone')->orWhere('server_timezone', ''); })->each(function ($server) use ($defaultTimezone) { DB::transaction(function () use ($server, $defaultTimezone) { - $server->settings->server_timezone = $defaultTimezone; - $server->settings->save(); - - $formComponent = new Form(); - $formComponent->server = $server; - $formComponent->updateServerTimezone($defaultTimezone); - - // Refresh the server settings to ensure we have the latest data - $server->settings->refresh(); - - // Double-check and set the timezone if it's still not set - if (!$server->settings->server_timezone) { - $server->settings->server_timezone = $defaultTimezone; - $server->settings->save(); - } + $this->updateServerTimezone($server, $defaultTimezone); }); }); } + + private function updateServerTimezone($server, $desired_timezone) + { + $commands = [ + "if command -v timedatectl > /dev/null 2>&1 && pidof systemd > /dev/null; then", + " timedatectl set-timezone " . escapeshellarg($desired_timezone), + "elif [ -f /etc/timezone ]; then", + " echo " . escapeshellarg($desired_timezone) . " > /etc/timezone", + " rm -f /etc/localtime", + " ln -sf /usr/share/zoneinfo/" . escapeshellarg($desired_timezone) . " /etc/localtime", + "elif [ -f /etc/localtime ]; then", + " rm -f /etc/localtime", + " ln -sf /usr/share/zoneinfo/" . escapeshellarg($desired_timezone) . " /etc/localtime", + "fi", + "if command -v dpkg-reconfigure > /dev/null 2>&1; then", + " dpkg-reconfigure -f noninteractive tzdata", + "elif command -v tzdata-update > /dev/null 2>&1; then", + " tzdata-update", + "elif [ -f /etc/sysconfig/clock ]; then", + " sed -i 's/^ZONE=.*/ZONE=\"" . $desired_timezone . "\"/' /etc/sysconfig/clock", + " source /etc/sysconfig/clock", + "fi", + "if command -v systemctl > /dev/null 2>&1 && pidof systemd > /dev/null; then", + " systemctl try-restart systemd-timesyncd.service || true", + "elif command -v service > /dev/null 2>&1; then", + " service ntpd restart || service ntp restart || true", + "fi" + ]; + + instant_remote_process($commands, $server); + + $server->settings->server_timezone = $desired_timezone; + $server->settings->save(); + } }