calendarModel = new CalendarEvent(); } public function index() { $userId = $_SESSION['user_id']; $month = $_GET['month'] ?? date('Y-m'); $monthDate = DateTime::createFromFormat('Y-m', $month); if (!$monthDate) { $monthDate = new DateTime('first day of this month'); $month = $monthDate->format('Y-m'); } $firstDay = (clone $monthDate)->modify('first day of this month'); $daysInMonth = (int)$firstDay->format('t'); $startWeekday = (int)$firstDay->format('N'); $prevMonth = (clone $monthDate)->modify('-1 month')->format('Y-m'); $nextMonth = (clone $monthDate)->modify('+1 month')->format('Y-m'); $monthLabel = $monthDate->format('F Y'); $selectedDate = $_GET['date'] ?? date('Y-m-d'); $events = $this->calendarModel->getByMonth($userId, $month); $eventsByDate = []; foreach ($events as $event) { $eventsByDate[$event['event_date']][] = $event; } $eventsForSelected = $this->calendarModel->getByDate($userId, $selectedDate); require_once __DIR__ . '/../views/calendar/index.php'; } public function create() { $event = null; $defaultDate = $_GET['date'] ?? date('Y-m-d'); $returnMonth = $_GET['month'] ?? date('Y-m'); require_once __DIR__ . '/../views/calendar/form.php'; } public function edit() { $eventId = $_GET['id'] ?? null; if (!$eventId) { $_SESSION['error'] = 'Nie podano ID wydarzenia'; header('Location: /kalendarz'); exit; } $userId = $_SESSION['user_id']; $event = $this->calendarModel->getById($eventId, $userId); if (!$event) { $_SESSION['error'] = 'Wydarzenie nie zostało znalezione'; header('Location: /kalendarz'); exit; } $defaultDate = $event['event_date']; $returnMonth = $_GET['month'] ?? date('Y-m', strtotime($event['event_date'])); require_once __DIR__ . '/../views/calendar/form.php'; } public function save() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { header('Location: /kalendarz'); exit; } $userId = $_SESSION['user_id']; $eventId = $_POST['event_id'] ?? null; $title = trim($_POST['title'] ?? ''); $content = trim($_POST['content'] ?? ''); $eventDate = $_POST['event_date'] ?? date('Y-m-d'); $returnMonth = $_POST['return_month'] ?? date('Y-m'); if ($title === '') { $_SESSION['error'] = 'Tytuł wydarzenia jest wymagany'; $redirect = $eventId ? "/wydarzenie/edytuj?id=$eventId&month=$returnMonth" : "/wydarzenie/nowe?date=$eventDate&month=$returnMonth"; header('Location: ' . $redirect); exit; } if ($eventId) { $this->calendarModel->update($eventId, $userId, $title, $content, $eventDate); $_SESSION['success'] = 'Wydarzenie zostało zaktualizowane'; } else { $this->calendarModel->create($userId, $title, $content, $eventDate); $_SESSION['success'] = 'Wydarzenie zostało utworzone'; } header('Location: /kalendarz?month=' . $returnMonth . '&date=' . $eventDate); exit; } public function delete() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { header('Location: /kalendarz'); exit; } $eventId = $_POST['event_id'] ?? null; $returnMonth = $_POST['return_month'] ?? date('Y-m'); $returnDate = $_POST['return_date'] ?? date('Y-m-d'); if (!$eventId) { $_SESSION['error'] = 'Nie podano ID wydarzenia'; header('Location: /kalendarz'); exit; } $userId = $_SESSION['user_id']; $result = $this->calendarModel->delete($eventId, $userId); if ($result) { $_SESSION['success'] = 'Wydarzenie zostało usunięte'; } else { $_SESSION['error'] = 'Nie udało się usunąć wydarzenia'; } header('Location: /kalendarz?month=' . $returnMonth . '&date=' . $returnDate); exit; } }