diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 6950438d..a07c9a13 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -76,21 +76,22 @@ class HomeController extends AbstractController $daysToShow = Setting::get('app_incident_days') ?: 7; $incidentDays = range(0, $daysToShow - 1); - $dateFormat = Setting::get('date_format') ?: 'jS F Y'; + $dateTimeZone = Setting::get('app_timezone'); $allIncidents = Incident::notScheduled()->whereBetween('created_at', [ $startDate->copy()->subDays($daysToShow)->format('Y-m-d').' 00:00:00', $startDate->format('Y-m-d').' 23:59:59', - ])->orderBy('created_at', 'desc')->get()->groupBy(function (Incident $incident) use ($dateFormat) { - return $incident->created_at->format($dateFormat); + ])->orderBy('created_at', 'desc')->get()->groupBy(function (Incident $incident) use ($dateTimeZone) { + return (new Date($incident->created_at)) + ->setTimezone($dateTimeZone)->toDateString(); }); // Add in days that have no incidents foreach ($incidentDays as $i) { - $date = $startDate->copy()->subDays($i); + $date = (new Date($startDate))->setTimezone($dateTimeZone)->subDays($i); - if (!isset($allIncidents[$date->format($dateFormat)])) { - $allIncidents[$date->format($dateFormat)] = []; + if (!isset($allIncidents[$date->toDateString()])) { + $allIncidents[$date->toDateString()] = []; } } diff --git a/app/Http/helpers.php b/app/Http/helpers.php index 5eec9a80..188d6b48 100644 --- a/app/Http/helpers.php +++ b/app/Http/helpers.php @@ -13,6 +13,7 @@ use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Segment\Facades\Segment; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Request; +use Jenssegers\Date\Date; if (!function_exists('set_active')) { @@ -128,3 +129,20 @@ if (!function_exists('segment_page')) { } } } + +if (!function_exists('formatted_date')) { + /** + * Formats a date with the user timezone and the selected format. + * + * @param string $date + * + * @return \Jenssegers\Date\Date + */ + function formatted_date($date) + { + $dateTimeZone = Setting::get('app_timezone'); + $dateFormat = Setting::get('date_format') ?: 'jS F Y'; + + return (new Date($date))->setTimeZone($dateTimeZone)->format($dateFormat); + } +} diff --git a/resources/views/partials/incidents.blade.php b/resources/views/partials/incidents.blade.php index f42291e2..c3d90941 100644 --- a/resources/views/partials/incidents.blade.php +++ b/resources/views/partials/incidents.blade.php @@ -1,4 +1,4 @@ -

{{ $date }}

+

{{ formatted_date($date) }}

@forelse($incidents as $incidentID => $incident)