frame('calendar.settings.subscribe'); } /* show “Subscribe to a calendar” form */ public function subscribeForm() { return $this->frame( 'calendar.settings.subscribe', [ 'title' => 'Subscribe to a calendar', 'sub' => 'Add an `.ics` calender from another service' ]); } /* handle POST from the subscribe form */ public function subscribeStore(Request $request) { $data = $request->validate([ 'source' => ['required', 'url'], 'displayname' => ['nullable', 'string', 'max:100'], 'color' => ['nullable', 'regex:/^#[0-9A-F]{6}$/i'], ]); DB::table('calendarsubscriptions')->insert([ 'uri' => Str::uuid(), // local id 'principaluri' => 'principals/'.$request->user()->email, 'source' => $data['source'], 'displayname' => $data['displayname'] ?: $data['source'], 'calendarcolor' => $data['color'], 'refreshrate' => 'P1D', // daily 'lastmodified' => now()->timestamp, ]); return redirect() ->route('calendar.settings') ->with('toast', __('Subscription added successfully!')); } /** * content frame handler */ private function frame(?string $view = null, array $data = []) { return view('calendar.settings.index', [ 'view' => $view, 'data' => $data, ]); } }