Create custom number format method to catch invalid languages on php 8.4 (#1623)

This commit is contained in:
Boy132 2025-08-31 13:48:47 +02:00 committed by GitHub
parent 5eff006843
commit 0104a08ba4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 26 additions and 21 deletions

View File

@ -5,7 +5,6 @@ namespace App\Filament\Admin\Resources\NodeResource\Widgets;
use App\Models\Node;
use Filament\Support\RawJs;
use Filament\Widgets\ChartWidget;
use Illuminate\Support\Number;
class NodeCpuChart extends ChartWidget
{
@ -82,8 +81,8 @@ class NodeCpuChart extends ChartWidget
{
$data = array_slice(end($this->cpuHistory), -60);
$cpu = Number::format($data['cpu'], maxPrecision: 2, locale: auth()->user()->language);
$max = Number::format($this->threads * 100, locale: auth()->user()->language);
$cpu = format_number($data['cpu'], maxPrecision: 2);
$max = format_number($this->threads * 100);
return trans('admin/node.cpu_chart', ['cpu' => $cpu, 'max' => $max]);
}

View File

@ -5,7 +5,6 @@ namespace App\Filament\Admin\Resources\NodeResource\Widgets;
use App\Models\Node;
use Filament\Support\RawJs;
use Filament\Widgets\ChartWidget;
use Illuminate\Support\Number;
class NodeMemoryChart extends ChartWidget
{
@ -85,12 +84,12 @@ class NodeMemoryChart extends ChartWidget
$latestMemoryUsed = array_slice(end($this->memoryHistory), -60);
$used = config('panel.use_binary_prefix')
? Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) .' GiB'
: Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) . ' GB';
? format_number($latestMemoryUsed['memory'], maxPrecision: 2) .' GiB'
: format_number($latestMemoryUsed['memory'], maxPrecision: 2) . ' GB';
$total = config('panel.use_binary_prefix')
? Number::format($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB'
: Number::format($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB';
? format_number($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2) .' GiB'
: format_number($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2) . ' GB';
return trans('admin/node.memory_chart', ['used' => $used, 'total' => $total]);
}

View File

@ -17,7 +17,6 @@ use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Filament\Support\Enums\Alignment;
use Illuminate\Support\Number;
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction;
class Settings extends ServerFormPage
@ -104,7 +103,7 @@ class Settings extends ServerFormPage
->prefixIcon('tabler-cpu')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : Number::format($server->cpu, locale: auth()->user()->language) . '%'),
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'),
TextInput::make('memory')
->label('')
->prefix(trans('server/setting.server_info.limits.memory'))

View File

@ -7,7 +7,6 @@ use Carbon\Carbon;
use Filament\Facades\Filament;
use Filament\Support\RawJs;
use Filament\Widgets\ChartWidget;
use Illuminate\Support\Number;
class ServerCpuChart extends ChartWidget
{
@ -31,7 +30,7 @@ class ServerCpuChart extends ChartWidget
$cpu = collect(cache()->get("servers.{$this->server->id}.cpu_absolute"))
->slice(-$period)
->map(fn ($value, $key) => [
'cpu' => Number::format($value, maxPrecision: 2),
'cpu' => round($value, 2),
'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'),
])
->all();

View File

@ -7,7 +7,6 @@ use Carbon\Carbon;
use Filament\Facades\Filament;
use Filament\Support\RawJs;
use Filament\Widgets\ChartWidget;
use Illuminate\Support\Number;
class ServerMemoryChart extends ChartWidget
{
@ -31,7 +30,7 @@ class ServerMemoryChart extends ChartWidget
$memUsed = collect(cache()->get("servers.{$this->server->id}.memory_bytes"))
->slice(-$period)
->map(fn ($value, $key) => [
'memory' => Number::format(config('panel.use_binary_prefix') ? $value / 1024 / 1024 / 1024 : $value / 1000 / 1000 / 1000, maxPrecision: 2),
'memory' => round(config('panel.use_binary_prefix') ? $value / 1024 / 1024 / 1024 : $value / 1000 / 1000 / 1000, 2),
'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'),
])
->all();

View File

@ -8,7 +8,6 @@ use App\Models\Server;
use Carbon\CarbonInterface;
use Filament\Notifications\Notification;
use Filament\Widgets\StatsOverviewWidget;
use Illuminate\Support\Number;
use Livewire\Attributes\On;
class ServerOverview extends StatsOverviewWidget
@ -54,9 +53,9 @@ class ServerOverview extends StatsOverviewWidget
}
$data = collect(cache()->get("servers.{$this->server->id}.cpu_absolute"))->last(default: 0);
$cpu = Number::format($data, maxPrecision: 2, locale: auth()->user()->language) . ' %';
$cpu = format_number($data, maxPrecision: 2) . ' %';
return $cpu . ($this->server->cpu > 0 ? ' / ' . Number::format($this->server->cpu, locale: auth()->user()->language) . ' %' : ' / ∞');
return $cpu . ($this->server->cpu > 0 ? ' / ' . format_number($this->server->cpu) . ' %' : ' / ∞');
}
public function memoryUsage(): string

View File

@ -38,7 +38,7 @@ class ServerEntry extends Component
<div class="flex justify-between text-center items-center gap-4">
<div>
<p class="text-sm dark:text-gray-400">{{ trans('server/dashboard.cpu') }}</p>
<p class="text-md font-semibold">{{ Number::format(0, precision: 2, locale: auth()->user()->language ?? 'en') . '%' }}</p>
<p class="text-md font-semibold">{{ format_number(0, precision: 2) . '%' }}</p>
<hr class="p-0.5">
<p class="text-xs dark:text-gray-400">{{ $server->formatResource(\App\Enums\ServerResourceType::CPULimit) }}</p>
</div>

View File

@ -17,7 +17,6 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Number;
use Psr\Http\Message\ResponseInterface;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
@ -484,7 +483,7 @@ class Server extends Model implements Validatable
}
if ($resourceType->isPercentage()) {
return Number::format($resourceAmount, precision: 2, locale: auth()->user()->language ?? 'en') . '%';
return format_number($resourceAmount, precision: 2) . '%';
}
return convert_bytes_to_readable($resourceAmount, base: 3);

View File

@ -45,7 +45,7 @@ if (!function_exists('convert_bytes_to_readable')) {
$fromBase = log($bytes) / log($conversionUnit);
$base ??= floor($fromBase);
return Number::format(pow($conversionUnit, $fromBase - $base), $decimals, locale: auth()->user()->language) . ' ' . $suffix[$base];
return format_number(pow($conversionUnit, $fromBase - $base), precision: $decimals) . ' ' . $suffix[$base];
}
}
@ -98,3 +98,15 @@ if (!function_exists('get_ip_from_hostname')) {
return false;
}
}
if (!function_exists('format_number')) {
function format_number(int|float $number, ?int $precision = null, ?int $maxPrecision = null): false|string
{
try {
return Number::format($number, $precision, $maxPrecision, auth()->user()->language ?? 'en');
} catch (Throwable) {
// User language is invalid, so default to english
return Number::format($number, $precision, $maxPrecision, 'en');
}
}
}