get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}forum_users WHERE role='superadmin'" ); return (int)$count > 0; } /** Hinweisbanner solange kein Superadmin existiert */ public static function setup_notice() { if ( self::superadmin_exists() ) return; if ( isset($_GET['page']) && $_GET['page'] === 'wbf-setup' ) return; if ( ! current_user_can('manage_options') ) return; echo '
⚙️
WP Business Forum — Einrichtung noch nicht abgeschlossen. Jetzt einrichten
'; } /** Versteckte Admin-Seite für den Wizard */ public static function register_page() { add_submenu_page( null, // kein Menüeintrag — nur direkt aufrufbar 'Forum Einrichtung', 'Forum Einrichtung', 'manage_options', 'wbf-setup', [ __CLASS__, 'render_page' ] ); } /** Wizard verarbeiten & anzeigen */ public static function render_page() { $step = (int)( $_GET['step'] ?? 1 ); $error = ''; $success = ''; // ── Schritt 1: Superadmin-Konto erstellen ───────────────────────────── if ( $step === 1 && isset($_POST['wbf_setup_step1']) && check_admin_referer('wbf_setup_nonce') ) { $username = sanitize_user( $_POST['username'] ?? '' ); $display_name = sanitize_text_field( $_POST['display_name'] ?? '' ); $email = sanitize_email( $_POST['email'] ?? '' ); $password = $_POST['password'] ?? ''; $password2 = $_POST['password2'] ?? ''; if ( strlen($username) < 3 ) $error = 'Benutzername mindestens 3 Zeichen.'; elseif ( empty($display_name) ) $error = 'Anzeigename darf nicht leer sein.'; elseif ( ! is_email($email) ) $error = 'Ungültige E-Mail-Adresse.'; elseif ( strlen($password) < 6 ) $error = 'Passwort mindestens 6 Zeichen.'; elseif ( $password !== $password2) $error = 'Passwörter stimmen nicht überein.'; elseif ( WBF_DB::get_user_by('username', $username) ) $error = 'Benutzername bereits vergeben.'; elseif ( WBF_DB::get_user_by('email', $email) ) $error = 'E-Mail bereits registriert. Bestehendes Konto als Superadmin setzen?'; if ( ! $error ) { $avatar = 'https://www.gravatar.com/avatar/' . md5(strtolower($email)) . '?d=identicon&s=120'; $id = WBF_DB::create_user([ 'username' => $username, 'email' => $email, 'password' => password_hash($password, PASSWORD_DEFAULT), 'display_name' => $display_name, 'avatar_url' => $avatar, 'role' => 'superadmin', ]); if ($id) { update_option('wbf_superadmin_email', $email); wp_redirect( admin_url('admin.php?page=wbf-setup&step=2') ); exit; } else { $error = 'Fehler beim Erstellen des Kontos. Bitte versuche es erneut.'; } } } // ── Bestehendes Konto hochstufen ────────────────────────────────────── if ( $step === 1 && isset($_POST['wbf_setup_promote']) && check_admin_referer('wbf_setup_nonce') ) { $email = sanitize_email($_POST['existing_email'] ?? ''); $user = WBF_DB::get_user_by('email', $email); if ($user) { WBF_DB::update_user($user->id, ['role' => 'superadmin']); update_option('wbf_superadmin_email', $email); wp_redirect( admin_url('admin.php?page=wbf-setup&step=2') ); exit; } else { $error = 'Kein Forum-Konto mit dieser E-Mail gefunden.'; } } // ── Schritt 2: Forum-Seite erstellen (optional) ─────────────────────── if ( $step === 2 && isset($_POST['wbf_setup_step2']) && check_admin_referer('wbf_setup_nonce') ) { $create_page = ! empty($_POST['create_forum_page']); $page_title = sanitize_text_field($_POST['page_title'] ?? 'Forum'); if ($create_page) { $existing = get_posts(['post_type'=>'page','s'=>$page_title,'posts_per_page'=>1]); if (empty($existing)) { $page_id = wp_insert_post([ 'post_title' => $page_title, 'post_content' => '[business_forum]', 'post_status' => 'publish', 'post_type' => 'page', ]); if ($page_id) { update_option('wbf_forum_page_id', $page_id); $success = get_permalink($page_id); } } else { $success = get_permalink($existing[0]->ID); } } update_option(self::OPTION_DONE, true); wp_redirect( admin_url('admin.php?page=wbf-setup&step=3&forum_url='.urlencode($success)) ); exit; } // ── Schritt 3: Überspringen ─────────────────────────────────────────── if ( $step === 3 ) { update_option(self::OPTION_DONE, true); } self::render_wizard($step, $error, isset($_GET['use_existing'])); } private static function render_wizard($step, $error = '', $show_promote = false) { $wp_user = wp_get_current_user(); $forum_url = urldecode($_GET['forum_url'] ?? ''); $forum_page = get_option('wbf_forum_page_id') ? get_permalink(get_option('wbf_forum_page_id')) : ''; ?> Forum Einrichtung
1 · Superadmin
2 · Forum-Seite
3 · Fertig
⚠️

Dein Superadmin-Konto

Erstelle dein persönliches Forum-Konto. Als WordPress-Administrator bekommst du automatisch die Superadmin-Rolle — dauerhaft und unveränderlich.

👑 Superadmin wird automatisch zugewiesen

↑ Aus deinem WP-Konto vorausgefüllt

Nutze deine WP-Admin-E-Mail — das verknüpft dein Forum-Konto dauerhaft mit dem Superadmin-Status.

oder

Bestehendes Konto hochstufen

Gib die E-Mail-Adresse deines vorhandenen Forum-Kontos ein. Es wird sofort auf Superadmin hochgestuft.

✓ Superadmin-Konto erstellt!

Forum-Seite einrichten

Soll eine WordPress-Seite mit dem Forum-Shortcode automatisch erstellt werden?

🎉

Forum ist bereit!

Dein Superadmin-Konto ist aktiv. Das Forum ist einsatzbereit — viel Spaß mit deiner Community!

Zum Forum-Dashboard →