diff --git a/admin/forum-admin.php b/admin/forum-admin.php
index 0c2bf5a..407e44f 100644
--- a/admin/forum-admin.php
+++ b/admin/forum-admin.php
@@ -367,6 +367,11 @@ function wbf_admin_page() {
$existing = $wpdb->get_col("SHOW TABLES LIKE '{$wpdb->prefix}forum_%'");
$missing = array_filter($exp_tables, fn($t) => !in_array($wpdb->prefix.$t, $existing));
+ // ── MC Bridge StatusAPI ───────────────────────────────────────────────────
+ $mc_s = wbf_get_settings();
+ $mc_enabled = ! empty( $mc_s['mc_bridge_enabled'] );
+ $mc_api_url = trim( $mc_s['mc_bridge_api_url'] ?? '' );
+
// ── Trends ────────────────────────────────────────────────────────────────
$pt = (int)$wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE deleted_at IS NULL AND created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)");
$pl = (int)$wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE deleted_at IS NULL AND created_at BETWEEN DATE_SUB(NOW(), INTERVAL 14 DAY) AND DATE_SUB(NOW(), INTERVAL 7 DAY)");
@@ -482,6 +487,11 @@ function wbf_admin_page() {
+
Profil bearbeiten: display_name); ?>
diff --git a/admin/forum-settings-mc-section.php b/admin/forum-settings-mc-section.php
new file mode 100644
index 0000000..63ffae3
--- /dev/null
+++ b/admin/forum-settings-mc-section.php
@@ -0,0 +1,89 @@
+
+
+
+
+
+ ⛏️ Minecraft Bridge
+
+
+ Verbindet das Forum mit deinem Minecraft-Server (BungeeCord StatusAPI Plugin).
+ Spieler können ihren Forum-Account verknüpfen und erhalten Ingame-Benachrichtigungen
+ bei neuen Antworten, Erwähnungen und Privatnachrichten.
+
+
+
+
diff --git a/admin/forum-settings.php b/admin/forum-settings.php
index ad86c0e..6a12134 100644
--- a/admin/forum-settings.php
+++ b/admin/forum-settings.php
@@ -61,12 +61,17 @@ if ( ! function_exists('wbf_get_settings') ) {
'discord_client_secret' => '',
'discord_role_sync' => '0', // Rollen-Sync aktiviert?
'discord_role_map' => '', // JSON: {"discord_role_id":"forum_role_key"}
+ // Minecraft Bridge
+ 'mc_bridge_enabled' => '0',
+ 'mc_bridge_api_url' => '',
+ 'mc_bridge_api_secret' => '',
];
$saved = get_option( 'wbf_settings', [] );
// Fehlende Keys mit Defaults auffüllen, leere Strings ignorieren
- return array_merge( $defaults, array_filter( (array) $saved, 'strlen' ) );
+ // Keine Filterung mehr, damit auch bewusst geleerte Felder gespeichert werden
+ return array_merge( $defaults, (array) $saved );
}
}
@@ -158,9 +163,13 @@ function wbf_admin_settings() {
}
$settings['discord_role_map'] = json_encode($role_map);
+ // ── Minecraft Bridge ──────────────────────────────────────────────────
+ $settings['mc_bridge_api_url'] = esc_url_raw( trim( $_POST['mc_bridge_api_url'] ?? '' ) );
+ $settings['mc_bridge_api_secret'] = sanitize_text_field( $_POST['mc_bridge_api_secret'] ?? '' );
+
// Checkbox-Felder explizit als '0' speichern wenn nicht angehakt,
// damit array_filter(...,'strlen') sie nicht wegwirft und der Default '1' greift.
- $checkbox_fields = ['maintenance_mode', 'rules_enabled', 'rules_accept_required'];
+ $checkbox_fields = ['maintenance_mode', 'rules_enabled', 'rules_accept_required', 'mc_bridge_enabled'];
foreach ( $checkbox_fields as $cb ) {
$settings[$cb] = isset($_POST[$cb]) && $_POST[$cb] === '1' ? '1' : '0';
}
@@ -731,6 +740,116 @@ function wbf_admin_settings() {
});
+
+
+
+ ⛏️ Minecraft Bridge
+
+
+ Verbindet das Forum mit deinem BungeeCord-Server (StatusAPI Plugin).
+ Spieler können ihren Forum-Account mit /forumlink <token> verknüpfen
+ und erhalten dann Ingame-Benachrichtigungen bei neuen Antworten, Erwähnungen und PNs.
+
+
+
+
+
+
⚙️ Einrichtung in 3 Schritten:
+
+ - API Secret hier festlegen und Einstellungen speichern.
+ - In
verify.properties des BungeeCord-Plugins setzen:
+
forum.enabled=true
+
forum.wp_url=
+
forum.api_secret=DEIN_SECRET
+
+ - Spieler können sich nun mit
/forumlink <token> ingame verknüpfen.
+ Den Token generieren sie in ihrem Forum-Profil unter dem Tab Verbindungen.
+
+
+
+
'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);
- }
+ global $wpdb;
+ $existing_id = $wpdb->get_var( $wpdb->prepare(
+ "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'page' AND post_status = 'publish' AND post_content LIKE %s LIMIT 1",
+ '%[business_forum]%'
+ ) );
+ if (empty($existing_id)) {
+ $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);
}