This commit is contained in:
@@ -9,6 +9,19 @@ final class Community
|
||||
{
|
||||
}
|
||||
|
||||
public function getStats(): array
|
||||
{
|
||||
$threads = (int)$this->pdo->query('SELECT COUNT(*) FROM forum_threads')->fetchColumn();
|
||||
$posts = (int)$this->pdo->query('SELECT COUNT(*) FROM forum_posts')->fetchColumn();
|
||||
$members = (int)$this->pdo->query('SELECT COUNT(*) FROM users WHERE status = "active"')->fetchColumn();
|
||||
|
||||
return [
|
||||
'threads' => $threads,
|
||||
'posts' => $posts,
|
||||
'members' => $members,
|
||||
];
|
||||
}
|
||||
|
||||
public function createThread(int $userId, string $title, string $body): void
|
||||
{
|
||||
$stmt = $this->pdo->prepare('INSERT INTO forum_threads (user_id, title, body) VALUES (:uid, :title, :body)');
|
||||
@@ -45,10 +58,27 @@ final class Community
|
||||
}
|
||||
$where = $conditions ? ('AND ' . implode(' AND ', $conditions)) : '';
|
||||
|
||||
$sql = "SELECT ft.id, ft.title, ft.body, ft.created_at,
|
||||
$sql = "SELECT ft.id, ft.title, ft.body, ft.created_at, ft.updated_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,
|
||||
COALESCE(
|
||||
(SELECT MAX(fp.created_at) FROM forum_posts fp WHERE fp.thread_id = ft.id),
|
||||
ft.created_at
|
||||
) AS last_activity_at,
|
||||
COALESCE(
|
||||
(
|
||||
SELECT p2.display_name
|
||||
FROM forum_posts fp3
|
||||
JOIN users u2 ON u2.id = fp3.user_id
|
||||
LEFT JOIN user_profiles p2 ON p2.user_id = u2.id
|
||||
WHERE fp3.thread_id = ft.id
|
||||
ORDER BY fp3.created_at DESC
|
||||
LIMIT 1
|
||||
),
|
||||
p.display_name,
|
||||
'Mitglied'
|
||||
) AS last_activity_by,
|
||||
(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
|
||||
|
||||
Reference in New Issue
Block a user