pdo(); $userId = $_SESSION['user_id'] ?? null; $error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'thread_create') { if (!$userId) { $error = 'Bitte einloggen, um Fragen zu stellen.'; } elseif ($pdo) { $title = trim((string)($_POST['title'] ?? '')); $body = trim((string)($_POST['body'] ?? '')); if ($title === '' || $body === '') { $error = 'Titel und Text sind erforderlich.'; } else { $pdo->prepare('CREATE TABLE IF NOT EXISTS forum_threads ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id BIGINT UNSIGNED NOT NULL, title VARCHAR(200) NOT NULL, body TEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci')->execute(); $pdo->prepare('INSERT INTO forum_threads (user_id, title, body) VALUES (:uid, :title, :body)') ->execute(['uid' => $userId, 'title' => $title, 'body' => $body]); header('Location: /community'); exit; } } } $threads = []; if ($pdo) { $pdo->prepare('CREATE TABLE IF NOT EXISTS forum_posts ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, thread_id BIGINT UNSIGNED NOT NULL, user_id BIGINT UNSIGNED NOT NULL, body TEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_thread (thread_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci')->execute(); $sql = 'SELECT ft.id, ft.title, ft.body, ft.created_at, u.id as uid, u.created_at as user_created, p.display_name, (SELECT COUNT(*) FROM forum_posts fp WHERE fp.thread_id = ft.id) AS answers, (SELECT COUNT(*) FROM forum_posts fp2 WHERE fp2.user_id = u.id) + (SELECT COUNT(*) FROM forum_threads ft2 WHERE ft2.user_id = u.id) AS user_posts FROM forum_threads ft JOIN users u ON u.id = ft.user_id LEFT JOIN user_profiles p ON p.user_id = u.id ORDER BY ft.created_at DESC LIMIT 50'; $threads = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC) ?: []; } function compute_points(array $row, \PDO $pdo): float { $uid = (int)$row['uid']; $threads = (int)($row['user_posts'] ?? 0); $answers = (int)($row['answers'] ?? 0); $eventCreated = (int)$pdo->query("SELECT COUNT(*) FROM events WHERE created_by = {$uid}")->fetchColumn(); $eventParticipants = (float)$pdo->query("SELECT COUNT(*) FROM event_participants WHERE user_id = {$uid}")->fetchColumn(); $invites = 0; return $threads * 0.5 + $answers * 1 + $eventCreated * 1 + $eventParticipants * 0.1 + $invites * 0.5; } function membership_level(float $points): string { if ($points >= 1000) return 'Daddy of Daddies'; if ($points >= 300) return 'Master Daddy'; if ($points >= 150) return 'Good Daddy'; if ($points >= 50) return 'Mini Daddy'; if ($points >= 5) return 'Baby Daddy'; return 'New Daddy'; } ?>

Community

Forum

Bitte einloggen, um Fragen zu stellen oder zu antworten.

( Punkte) Beiträge:

240 ? '…' : '' ?>

Antworten:

Noch keine Fragen gestellt.