From 55429283c09ec1c2cf9b3d43f027f7698c8064be Mon Sep 17 00:00:00 2001 From: James Brooks Date: Wed, 7 Oct 2015 13:48:14 +0100 Subject: [PATCH 1/8] Started working on API timezone support --- app/Http/Kernel.php | 1 + app/Http/Middleware/Timezone.php | 35 ++++++++++++++++++++++++++++++++ app/Http/Routes/ApiRoutes.php | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 app/Http/Middleware/Timezone.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index b5cdc265..462a193b 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -46,6 +46,7 @@ class Kernel extends HttpKernel 'csrf' => 'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken', 'guest' => 'CachetHQ\Cachet\Http\Middleware\RedirectIfAuthenticated', 'localize' => 'CachetHQ\Cachet\Http\Middleware\Localize', + 'timezone' => 'CachetHQ\Cachet\Http\Middleware\Timezone', 'throttling' => 'GrahamCampbell\Throttle\Http\Middleware\ThrottleMiddleware', ]; } diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php new file mode 100644 index 00000000..0f663e6c --- /dev/null +++ b/app/Http/Middleware/Timezone.php @@ -0,0 +1,35 @@ +header('Time-Zone')) { + app('config')->set('app.timezone', $tz); + } + + return $next($request); + } +} diff --git a/app/Http/Routes/ApiRoutes.php b/app/Http/Routes/ApiRoutes.php index 4906133e..fd924244 100644 --- a/app/Http/Routes/ApiRoutes.php +++ b/app/Http/Routes/ApiRoutes.php @@ -30,7 +30,7 @@ class ApiRoutes $router->group([ 'namespace' => 'Api', 'prefix' => 'api/v1', - 'middleware' => 'accept:application/json', + 'middleware' => ['accept:application/json', 'timezone'], ], function ($router) { // General $router->get('ping', 'GeneralController@ping'); From ce8e7101731219b202f000bbed0c9be6d34e6058 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Wed, 7 Oct 2015 17:49:22 +0100 Subject: [PATCH 2/8] Set the app_timezone setting --- app/Http/Middleware/Timezone.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php index 0f663e6c..2ab69d86 100644 --- a/app/Http/Middleware/Timezone.php +++ b/app/Http/Middleware/Timezone.php @@ -11,6 +11,7 @@ namespace CachetHQ\Cachet\Http\Middleware; +use CachetHQ\Cachet\Facades\Setting; use Closure; class Timezone @@ -28,6 +29,7 @@ class Timezone { if ($tz = $request->header('Time-Zone')) { app('config')->set('app.timezone', $tz); + Setting::set('app_timezone', $tz); } return $next($request); From a288f84fc571253b6d10372984a09f3e928658c6 Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Thu, 8 Oct 2015 16:11:30 -0500 Subject: [PATCH 3/8] Settable timezones with cachet config --- .../Incident/ReportIncidentCommandHandler.php | 2 +- .../ReportMaintenanceCommandHandler.php | 2 +- .../Incident/UpdateIncidentCommandHandler.php | 2 +- .../Dashboard/ScheduleController.php | 2 +- app/Http/Controllers/StatusPageController.php | 2 +- app/Http/Middleware/Timezone.php | 3 +-- app/Providers/ConfigServiceProvider.php | 2 ++ config/cachet.php | 24 +++++++++++++++++++ 8 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 config/cachet.php diff --git a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php index 3d3d37e0..4dd101e7 100644 --- a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php @@ -40,7 +40,7 @@ class ReportIncidentCommandHandler // The incident occurred at a different time. if ($command->incident_date) { - $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, Setting::get('app_timezone'))->setTimezone(Config::get('app.timezone')); + $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, config('cachet.timezone'))->setTimezone(Config::get('app.timezone')); $incident->update([ 'created_at' => $incidentDate, diff --git a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php index b9542191..ac72df05 100644 --- a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php @@ -30,7 +30,7 @@ class ReportMaintenanceCommandHandler public function handle(ReportMaintenanceCommand $command) { // TODO: Add validation to scheduledAt - $scheduledAt = Date::createFromFormat('d/m/Y H:i', $command->timestamp, Setting::get('app_timezone')) + $scheduledAt = Date::createFromFormat('d/m/Y H:i', $command->timestamp, config('cachet.timezone')) ->setTimezone(Config::get('app.timezone')); $maintenanceEvent = Incident::create([ diff --git a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php index ef25992c..09d5ed49 100644 --- a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php @@ -35,7 +35,7 @@ class UpdateIncidentCommandHandler // The incident occurred at a different time. if ($command->incident_date) { - $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, Setting::get('app_timezone'))->setTimezone(Config::get('app.timezone')); + $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, config('cachet.timezone'))->setTimezone(Config::get('app.timezone')); $incident->update([ 'created_at' => $incidentDate, diff --git a/app/Http/Controllers/Dashboard/ScheduleController.php b/app/Http/Controllers/Dashboard/ScheduleController.php index 3e7f94aa..60d4b2f3 100644 --- a/app/Http/Controllers/Dashboard/ScheduleController.php +++ b/app/Http/Controllers/Dashboard/ScheduleController.php @@ -140,7 +140,7 @@ class ScheduleController extends Controller { $scheduleData = Binput::get('incident'); // Parse the schedule date. - $scheduledAt = Date::createFromFormat('d/m/Y H:i', $scheduleData['scheduled_at'], Setting::get('app_timezone')) + $scheduledAt = Date::createFromFormat('d/m/Y H:i', $scheduleData['scheduled_at'], config('cachet.timezone')) ->setTimezone(Config::get('app.timezone')); if ($scheduledAt->isPast()) { diff --git a/app/Http/Controllers/StatusPageController.php b/app/Http/Controllers/StatusPageController.php index 231b234d..8012f756 100644 --- a/app/Http/Controllers/StatusPageController.php +++ b/app/Http/Controllers/StatusPageController.php @@ -55,7 +55,7 @@ class StatusPageController extends Controller } else { $incidentDays = range(0, $daysToShow); } - $dateTimeZone = Setting::get('app_timezone'); + $dateTimeZone = config('cachet.timezone'); $incidentVisiblity = Auth::check() ? 0 : 1; diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php index 2ab69d86..ad5bd11d 100644 --- a/app/Http/Middleware/Timezone.php +++ b/app/Http/Middleware/Timezone.php @@ -28,8 +28,7 @@ class Timezone public function handle($request, Closure $next) { if ($tz = $request->header('Time-Zone')) { - app('config')->set('app.timezone', $tz); - Setting::set('app_timezone', $tz); + app('config')->set('cachet.timezone', $tz); } return $next($request); diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php index 0a25dc33..a9e04edd 100644 --- a/app/Providers/ConfigServiceProvider.php +++ b/app/Providers/ConfigServiceProvider.php @@ -32,6 +32,7 @@ class ConfigServiceProvider extends ServiceProvider // Get app custom configuration. $appDomain = Setting::get('app_domain'); $appLocale = Setting::get('app_locale'); + $appTimezone = Setting::get('app_timezone'); // Setup Cors. $allowedOrigins = $this->app->config->get('cors.defaults.allowedOrigins'); @@ -55,6 +56,7 @@ class ConfigServiceProvider extends ServiceProvider // Override default app values. $this->app->config->set('app.url', $appDomain ?: $this->app->config->get('app.url')); $this->app->config->set('app.locale', $appLocale ?: $this->app->config->get('app.locale')); + $this->app->config->set('cachet.timezone', $appTimezone ?: $this->app->config->get('cachet.timezone')); // Set custom lang. $this->app->translator->setLocale($appLocale); diff --git a/config/cachet.php b/config/cachet.php new file mode 100644 index 00000000..ee7e42bb --- /dev/null +++ b/config/cachet.php @@ -0,0 +1,24 @@ + 'UTC', +]; From 1a783d71f8de95b5b02ddcf942f7c15147e1376d Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Thu, 8 Oct 2015 17:13:03 -0400 Subject: [PATCH 4/8] Applied fixes from StyleCI --- app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php | 1 - .../Commands/Incident/ReportMaintenanceCommandHandler.php | 1 - app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php | 1 - app/Http/Controllers/Dashboard/ScheduleController.php | 1 - app/Http/Middleware/Timezone.php | 1 - 5 files changed, 5 deletions(-) diff --git a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php index 4dd101e7..bc6b8fcb 100644 --- a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\ReportIncidentCommand; use CachetHQ\Cachet\Events\Incident\IncidentWasReportedEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; diff --git a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php index ac72df05..9fe832b7 100644 --- a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand; use CachetHQ\Cachet\Events\Incident\MaintenanceWasScheduledEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; use Jenssegers\Date\Date; diff --git a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php index 09d5ed49..015c984a 100644 --- a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\UpdateIncidentCommand; use CachetHQ\Cachet\Events\Incident\IncidentWasUpdatedEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; diff --git a/app/Http/Controllers/Dashboard/ScheduleController.php b/app/Http/Controllers/Dashboard/ScheduleController.php index 60d4b2f3..8b710788 100644 --- a/app/Http/Controllers/Dashboard/ScheduleController.php +++ b/app/Http/Controllers/Dashboard/ScheduleController.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard; use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Incident; use CachetHQ\Cachet\Models\IncidentTemplate; use GrahamCampbell\Binput\Facades\Binput; diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php index ad5bd11d..15ddc9cd 100644 --- a/app/Http/Middleware/Timezone.php +++ b/app/Http/Middleware/Timezone.php @@ -11,7 +11,6 @@ namespace CachetHQ\Cachet\Http\Middleware; -use CachetHQ\Cachet\Facades\Setting; use Closure; class Timezone From 9887df6987039b40f191c0d7b6705d42114db29e Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Thu, 8 Oct 2015 16:15:04 -0500 Subject: [PATCH 5/8] Revert change on statuspage --- app/Http/Controllers/StatusPageController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/StatusPageController.php b/app/Http/Controllers/StatusPageController.php index 8012f756..231b234d 100644 --- a/app/Http/Controllers/StatusPageController.php +++ b/app/Http/Controllers/StatusPageController.php @@ -55,7 +55,7 @@ class StatusPageController extends Controller } else { $incidentDays = range(0, $daysToShow); } - $dateTimeZone = config('cachet.timezone'); + $dateTimeZone = Setting::get('app_timezone'); $incidentVisiblity = Auth::check() ? 0 : 1; From 9d91e19863b785cc00d3d69d804e86a095c95797 Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Thu, 8 Oct 2015 16:15:44 -0500 Subject: [PATCH 6/8] CS Fix --- config/cachet.php | 1 + 1 file changed, 1 insertion(+) diff --git a/config/cachet.php b/config/cachet.php index ee7e42bb..5746def5 100644 --- a/config/cachet.php +++ b/config/cachet.php @@ -21,4 +21,5 @@ return [ */ 'timezone' => 'UTC', + ]; From bda07ea0dda4f29d5dd0d0b4a7a18f56ec4f1e73 Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Thu, 8 Oct 2015 17:16:37 -0400 Subject: [PATCH 7/8] Applied fixes from StyleCI --- config/cachet.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cachet.php b/config/cachet.php index 5746def5..b6231302 100644 --- a/config/cachet.php +++ b/config/cachet.php @@ -21,5 +21,5 @@ return [ */ 'timezone' => 'UTC', - + ]; From 41b8b9660b2101327884f07d43bcfb8209a93f1f Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Thu, 8 Oct 2015 16:17:35 -0500 Subject: [PATCH 8/8] Fix missing default --- app/Providers/ConfigServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php index a9e04edd..5848759a 100644 --- a/app/Providers/ConfigServiceProvider.php +++ b/app/Providers/ConfigServiceProvider.php @@ -26,7 +26,7 @@ class ConfigServiceProvider extends ServiceProvider */ public function boot() { - $appDomain = $appLocale = null; + $appDomain = $appLocale = $appTimezone = null; try { // Get app custom configuration.