first commit
This commit is contained in:
142
controllers/CalendarController.php
Normal file
142
controllers/CalendarController.php
Normal file
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
class CalendarController
|
||||
{
|
||||
private $calendarModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: /logowanie');
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user