$name, 'email' => $email]); $meldung = 'Mitglied wurde angelegt.'; } catch (Throwable $e) { $fehler = 'Das Mitglied konnte nicht angelegt werden (E-Mail eventuell schon vergeben).'; } } } elseif ($aktion === 'bearbeitenspeichern') { $participantId = (int)$_POST["mitgliedID"]; $name = trim((string)($_POST["name"] ?? '')); $email = trim((string)($_POST["email"] ?? '')); $paypalname = trim((string)($_POST["paypalname"] ?? '')); $aktiv = isset($_POST["aktiv"]); $warAktiv = false; foreach (ledger_fetch_participants_for_admin($pdo, $tenantId) as $m) { if ($m['participant_id'] === $participantId) { $warAktiv = (bool)$m['active']; break; } } if ($name === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $fehler = 'Bitte einen Namen und eine gültige E-Mail-Adresse angeben.'; } elseif ($aktiv && !$warAktiv && !billing_has_capacity_for($pdo, $tenantId)) { $fehler = billing_capacity_error_message($pdo, $tenantId); } elseif (ledger_update_participant($pdo, $tenantId, $participantId, $name, $email, $paypalname, $aktiv)) { app_audit_log($pdo, $tenantId, $actorUserId, 'participant.updated', 'participant', $participantId, ['name' => $name, 'email' => $email]); $meldung = 'Mitglied wurde gespeichert.'; } else { $fehler = 'Das Mitglied konnte nicht gespeichert werden.'; } } elseif ($aktion === 'aktivieren' || $aktion === 'deaktivieren') { $participantId = (int)$_POST["mitgliedID"]; if ($aktion === 'aktivieren' && !billing_has_capacity_for($pdo, $tenantId)) { $fehler = billing_capacity_error_message($pdo, $tenantId); } elseif (ledger_set_participant_active($pdo, $tenantId, $participantId, $aktion === 'aktivieren')) { app_audit_log($pdo, $tenantId, $actorUserId, $aktion === 'aktivieren' ? 'participant.activated' : 'participant.deactivated', 'participant', $participantId); $meldung = $aktion === 'aktivieren' ? 'Mitglied wurde aktiviert.' : 'Mitglied wurde deaktiviert.'; } else { $fehler = 'Der Status konnte nicht geändert werden.'; } } elseif ($aktion === 'zugang_gewaehren') { $participantId = (int)$_POST["mitgliedID"]; $rolle = (string)($_POST["rolle"] ?? ''); $ergebnis = saas_grant_participant_access($pdo, $tenantId, $participantId, $rolle); if ($ergebnis['ok']) { $einladendeTenantSettings = saas_fetch_tenant_settings($pdo, $tenantId); $mailErgebnis = saas_send_invite_mail( $ergebnis['user_email'], $einladendeTenantSettings['name'] ?? 'Kaffeeliste', $rolle, $ergebnis['token'] ); app_audit_log($pdo, $tenantId, $actorUserId, 'participant.access_granted', 'participant', $participantId, ['role' => $rolle]); $meldung = 'Zugang wurde gewährt, Einladung wurde verschickt.'; if (saas_should_show_auth_links()) { $einladungslink = saas_app_url('passwort-zuruecksetzen.php?token=' . urlencode($ergebnis['token'])); } } else { $fehler = implode(' ', $ergebnis['errors']); } } elseif ($aktion === 'zugang_entziehen') { $participantId = (int)$_POST["mitgliedID"]; $ergebnis = saas_revoke_participant_access($pdo, $tenantId, $participantId); if ($ergebnis['ok']) { app_audit_log($pdo, $tenantId, $actorUserId, 'participant.access_revoked', 'participant', $participantId); $meldung = 'Zugang wurde entzogen.'; } else { $fehler = implode(' ', $ergebnis['errors']); } } elseif ($aktion === 'anonymisieren') { $participantId = (int)$_POST["mitgliedID"]; $mitgliedRolle = null; foreach (ledger_fetch_participants_for_admin($pdo, $tenantId) as $m) { if ($m['participant_id'] === $participantId) { $mitgliedRolle = $m['role']; break; } } if ($mitgliedRolle === 'owner') { $fehler = 'Der Inhaber kann nicht anonymisiert werden.'; } elseif (ledger_anonymize_participant($pdo, $tenantId, $participantId)) { app_audit_log($pdo, $tenantId, $actorUserId, 'participant.anonymized', 'participant', $participantId); $meldung = 'Mitglied wurde anonymisiert. Name und E-Mail sind entfernt, Buchungen bleiben für die Kassenführung erhalten.'; } else { $fehler = 'Das Mitglied konnte nicht anonymisiert werden.'; } } } $mitglieder = ledger_fetch_participants_for_admin($pdo, $tenantId); $billingInfo = billing_fetch_or_init($pdo, $tenantId); $billingPlan = billing_plans()[$billingInfo['plan_code']] ?? null; $aktiveMitgliederAnzahl = billing_count_active_participants($pdo, $tenantId); $rollenLabels = ['owner' => 'Inhaber', 'admin' => 'Administrator', 'treasurer' => 'Kassenwart', 'member' => 'Mitglied', 'viewer' => 'Betrachter']; $bearbeitenMitglied = null; if ($bearbeitenId !== null) { foreach ($mitglieder as $m) { if ($m['participant_id'] === $bearbeitenId) { $bearbeitenMitglied = $m; break; } } } ?> Kaffeeliste - Mitglieder verwalten

Mitglieder verwalten

Dev-Link zur Einladung:

Aktive Mitglieder: . = $billingPlan['max_participants']): ?> Limit erreicht – für weitere aktive Mitglieder ist ein Upgrade nötig.

Bearbeiten von

">
>

Neues Mitglied anlegen

">

Name und E-Mail dienen der Kaffeeliste und Benachrichtigungen. Ein Login-Zugang ist davon unabhängig und wird separat je Mitglied gewährt oder entzogen.

Name E-Mail PayPal-Name Aktiv Zugang Aktionen
Inhaber
" style="display:inline">
" style="display:inline">
" style="display:inline">
  • ">
  • ">
    ">
  • " onsubmit="return confirm('Name und E-Mail dieses Mitglieds unwiderruflich entfernen? Buchungen bleiben erhalten.');">
Sie haben keine Zugang zu dieser Webseite"; } ?>