*/ function faq_fetch_all(PDO $pdo, int $tenantId): array { $stmt = $pdo->prepare( 'SELECT id, question, answer, sort_order FROM faq_entries WHERE tenant_id = ? AND deleted_at IS NULL ORDER BY sort_order, id' ); $stmt->execute([$tenantId]); return $stmt->fetchAll(); } function faq_create(PDO $pdo, int $tenantId, string $question, string $answer): bool { $question = trim($question); $answer = trim($answer); if ($question === '' || $answer === '') { return false; } $stmt = $pdo->prepare('SELECT COALESCE(MAX(sort_order), 0) + 1 FROM faq_entries WHERE tenant_id = ? AND deleted_at IS NULL'); $stmt->execute([$tenantId]); $nextOrder = (int)$stmt->fetchColumn(); $stmt = $pdo->prepare('INSERT INTO faq_entries (tenant_id, question, answer, sort_order) VALUES (?, ?, ?, ?)'); return $stmt->execute([$tenantId, $question, $answer, $nextOrder]); } function faq_update(PDO $pdo, int $tenantId, int $id, string $question, string $answer): bool { $question = trim($question); $answer = trim($answer); if ($question === '' || $answer === '') { return false; } $stmt = $pdo->prepare( 'UPDATE faq_entries SET question = ?, answer = ? WHERE id = ? AND tenant_id = ? AND deleted_at IS NULL' ); $stmt->execute([$question, $answer, $id, $tenantId]); return $stmt->rowCount() > 0; } function faq_soft_delete(PDO $pdo, int $tenantId, int $id): bool { $stmt = $pdo->prepare( 'UPDATE faq_entries SET deleted_at = NOW() WHERE id = ? AND tenant_id = ? AND deleted_at IS NULL' ); $stmt->execute([$id, $tenantId]); return $stmt->rowCount() > 0; } /** * Seeds two example questions for a brand-new tenant, damit die FAQ-Seite * nicht voellig leer startet und sofort erkennbar ist, wie ein Eintrag * aussieht. Bewusst nur zwei Beispiele statt eines fertigen Katalogs: die * Antworten sind Platzhalter, die jeder Mandant ohnehin auf seine eigene * Teekueche umschreibt. Beide Eintraege sind frei editier- und loeschbar. */ function faq_seed_default_entries(PDO $pdo, int $tenantId): void { $starters = [ ['Wie starten wir mit unserer Kaffeeliste?', 'Beispielantwort – bitte anpassen: Mitglieder unter „Mitglieder verwalten" anlegen, danach direkt Striche und Einzahlungen erfassen.'], ['Wie erfahre ich meinen aktuellen Stand?', 'Beispielantwort – bitte anpassen: Unter „Meine Kaffeeliste" ist der aktuelle Stand jederzeit sichtbar.'], ]; $stmt = $pdo->prepare('INSERT INTO faq_entries (tenant_id, question, answer, sort_order) VALUES (?, ?, ?, ?)'); foreach ($starters as $index => [$question, $answer]) { $stmt->execute([$tenantId, $question, $answer, $index + 1]); } }