fixed database seeder, remove dependency on form.php

This commit is contained in:
ayntk-ai 2024-08-16 17:43:14 +02:00
parent 74bf4629d6
commit a981b49502
No known key found for this signature in database

View File

@ -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();
}
}