gt($oldDate)) { $startDate = $oldDate; } } catch (Exception $e) { // Fallback to today } } $daysToShow = Setting::get('app_incident_days', 0) - 1; if ($daysToShow < 0) { $daysToShow = 0; $incidentDays = []; } else { $incidentDays = range(0, $daysToShow); } $dateTimeZone = Setting::get('app_timezone'); $incidentVisiblity = Auth::check() ? 0 : 1; $allIncidents = Incident::notScheduled()->where('visible', '>=', $incidentVisiblity)->whereBetween('created_at', [ $startDate->copy()->subDays($daysToShow)->format('Y-m-d').' 00:00:00', $startDate->format('Y-m-d').' 23:59:59', ])->orderBy('scheduled_at', 'desc')->orderBy('created_at', 'desc')->get()->groupBy(function (Incident $incident) use ($dateTimeZone) { // If it's scheduled, get the scheduled at date. if ($incident->is_scheduled) { return (new Date($incident->scheduled_at)) ->setTimezone($dateTimeZone)->toDateString(); } return (new Date($incident->created_at)) ->setTimezone($dateTimeZone)->toDateString(); }); // Add in days that have no incidents foreach ($incidentDays as $i) { $date = (new Date($startDate))->setTimezone($dateTimeZone)->subDays($i); if (!isset($allIncidents[$date->toDateString()])) { $allIncidents[$date->toDateString()] = []; } } // Sort the array so it takes into account the added days $allIncidents = $allIncidents->sortBy(function ($value, $key) { return strtotime($key); }, SORT_REGULAR, true)->all(); return View::make('index') ->withDaysToShow($daysToShow) ->withAllIncidents($allIncidents) ->withAboutApp(Markdown::convertToHtml(Setting::get('app_about'))) ->withCanPageForward((bool) $today->gt($startDate)) ->withCanPageBackward(Incident::notScheduled()->where('created_at', '<', $startDate->format('Y-m-d'))->count() > 0) ->withPreviousDate($startDate->copy()->subDays($daysToShow)->toDateString()) ->withNextDate($startDate->copy()->addDays($daysToShow)->toDateString()); } /** * Shows an incident in more detail. * * @param \CachetHQ\Cachet\Models\Incident $incident * * @return \Illuminate\View\View */ public function showIncident(Incident $incident) { return View::make('incident') ->withIncident($incident); } }