Skip to content

Commit def87e8

Browse files
authored
[Feature] Use php's internal time zone list (alexjustesen#966)
1 parent d7b1e57 commit def87e8

File tree

7 files changed

+48
-282
lines changed

7 files changed

+48
-282
lines changed

.phpstorm.meta.php

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@
189189
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
190190
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
191191
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
192-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
193192
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
194193
'auth' => \Illuminate\Auth\AuthManager::class,
195194
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -427,7 +426,6 @@
427426
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
428427
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
429428
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
430-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
431429
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
432430
'auth' => \Illuminate\Auth\AuthManager::class,
433431
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -665,7 +663,6 @@
665663
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
666664
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
667665
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
668-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
669666
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
670667
'auth' => \Illuminate\Auth\AuthManager::class,
671668
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -903,7 +900,6 @@
903900
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
904901
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
905902
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
906-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
907903
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
908904
'auth' => \Illuminate\Auth\AuthManager::class,
909905
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -1141,7 +1137,6 @@
11411137
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
11421138
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
11431139
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
1144-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
11451140
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
11461141
'auth' => \Illuminate\Auth\AuthManager::class,
11471142
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -1379,7 +1374,6 @@
13791374
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
13801375
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
13811376
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
1382-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
13831377
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
13841378
'auth' => \Illuminate\Auth\AuthManager::class,
13851379
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -1617,7 +1611,6 @@
16171611
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
16181612
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
16191613
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
1620-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
16211614
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
16221615
'auth' => \Illuminate\Auth\AuthManager::class,
16231616
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -1855,7 +1848,6 @@
18551848
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
18561849
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
18571850
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
1858-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
18591851
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
18601852
'auth' => \Illuminate\Auth\AuthManager::class,
18611853
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -2093,7 +2085,6 @@
20932085
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
20942086
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
20952087
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
2096-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
20972088
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
20982089
'auth' => \Illuminate\Auth\AuthManager::class,
20992090
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -2331,7 +2322,6 @@
23312322
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
23322323
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
23332324
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
2334-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
23352325
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
23362326
'auth' => \Illuminate\Auth\AuthManager::class,
23372327
'auth.driver' => \Illuminate\Auth\SessionGuard::class,
@@ -2569,7 +2559,6 @@
25692559
'Spatie\LaravelSettings\SettingsMapper' => \Spatie\LaravelSettings\SettingsMapper::class,
25702560
'Spatie\LaravelSettings\SettingsRepositories\SettingsRepository' => \Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
25712561
'Spatie\LaravelSettings\Support\SettingsCacheFactory' => \Spatie\LaravelSettings\Support\SettingsCacheFactory::class,
2572-
'Squire\RepositoryManager' => \Squire\RepositoryManager::class,
25732562
'Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface' => \Symfony\Component\HtmlSanitizer\HtmlSanitizer::class,
25742563
'auth' => \Illuminate\Auth\AuthManager::class,
25752564
'auth.driver' => \Illuminate\Auth\SessionGuard::class,

_ide_helper.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18665,7 +18665,18 @@ public static function sanitizeHtml()
1866518665

1866618666
}
1866718667

18668-
namespace Livewire {
18668+
namespace App\Helpers {
18669+
/**
18670+
*
18671+
*
18672+
*/
18673+
class TimeZoneHelper {
18674+
18675+
}
18676+
18677+
}
18678+
18679+
namespace Livewire {
1866918680
/**
1867018681
*
1867118682
*
@@ -26312,6 +26323,7 @@ class URL extends \Illuminate\Support\Facades\URL {}
2631226323
class Validator extends \Illuminate\Support\Facades\Validator {}
2631326324
class View extends \Illuminate\Support\Facades\View {}
2631426325
class Vite extends \Illuminate\Support\Facades\Vite {}
26326+
class TimeZoneHelper extends \App\Helpers\TimeZoneHelper {}
2631526327
class Livewire extends \Livewire\Livewire {}
2631626328
class Excel extends \Maatwebsite\Excel\Facades\Excel {}
2631726329
class Flare extends \Spatie\LaravelIgnition\Facades\Flare {}

app/Filament/Pages/Settings/GeneralPage.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
namespace App\Filament\Pages\Settings;
44

5+
use App\Helpers\TimeZoneHelper;
56
use App\Rules\Cron;
67
use App\Settings\GeneralSettings;
78
use Filament\Forms;
89
use Filament\Forms\Form;
910
use Filament\Pages\SettingsPage;
1011
use Illuminate\Support\Facades\Http;
1112
use Illuminate\Support\HtmlString;
12-
use Squire\Models\Timezone;
1313

1414
class GeneralPage extends SettingsPage
1515
{
@@ -53,7 +53,7 @@ public function form(Form $form): Form
5353
->columnSpan(['md' => 2]),
5454
Forms\Components\Select::make('timezone')
5555
->label('Time zone')
56-
->options(Timezone::all()->pluck('code', 'code'))
56+
->options(TimeZoneHelper::list())
5757
->searchable()
5858
->required(),
5959
Forms\Components\TextInput::make('time_format')

app/Helpers/TimeZoneHelper.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace App\Helpers;
4+
5+
use Illuminate\Support\Facades\Cache;
6+
7+
class TimeZoneHelper
8+
{
9+
/**
10+
* Returns a collection of time zones with their offset from UTC.
11+
*/
12+
public static function list()
13+
{
14+
$seconds = 3600; // 1hr
15+
16+
return Cache::remember('timezones_list_collection', $seconds, function () {
17+
$timestamp = time();
18+
19+
foreach (timezone_identifiers_list() as $key => $value) {
20+
date_default_timezone_set($value);
21+
22+
$timezone[$value] = $value.' (UTC '.date('P', $timestamp).')';
23+
}
24+
25+
return collect($timezone)->sortKeys();
26+
});
27+
}
28+
}

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@
2525
"livewire/livewire": "^3.2.6",
2626
"maatwebsite/excel": "^3.1.50",
2727
"maennchen/zipstream-php": "^2.4",
28-
"spatie/laravel-settings": "^2.8.3",
29-
"squirephp/timezones-en": "^3.4.4"
28+
"spatie/laravel-settings": "^2.8.3"
3029
},
3130
"require-dev": {
3231
"barryvdh/laravel-ide-helper": "^2.13",
@@ -41,7 +40,8 @@
4140
},
4241
"autoload": {
4342
"files": [
44-
"app/helpers.php"
43+
"app/helpers.php",
44+
"app/Helpers/TimeZoneHelper.php"
4545
],
4646
"psr-4": {
4747
"App\\": "app/",

0 commit comments

Comments
 (0)