From 1c229ab72bfe4f71623ec5383d056b967609dda0 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Sun, 29 Mar 2026 11:41:28 +0000 Subject: [PATCH] Upload via Git Manager GUI - wp-business-forum.php --- wp-business-forum.php | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/wp-business-forum.php b/wp-business-forum.php index 73d86a7..fa7502a 100644 --- a/wp-business-forum.php +++ b/wp-business-forum.php @@ -3,10 +3,11 @@ * Plugin Name: WP Business Forum * Plugin URI: https://git.viper.ipv64.net/M_Viper/WP-Business-Forum * Description: Professionelles Forum mit eigenem Login, Rollen, Signaturen, Hierarchie und Moderations-Tools. - * Version: 1.0.2 + * Version: 1.0.3 * Author: M_Viper * Author URI: https://m-viper.de * Text Domain: wp-business-forum + * Requires PHP: 7.0 */ if ( ! defined( 'ABSPATH' ) ) exit; @@ -39,6 +40,33 @@ add_action( 'plugins_loaded', function() { WBF_Export::hooks(); }, 5 ); +// ── DB-Schema sicherstellen (läuft bei jedem Seitenaufruf, sehr günstig) ───── +// Stellt sicher dass neue Spalten auch auf bestehenden Installs vorhanden sind, +// ohne dass das Plugin erneut deaktiviert/aktiviert werden muss. +add_action( 'plugins_loaded', function() { + $db_ver = (int) get_option( 'wbf_db_version', 0 ); + if ( $db_ver < 2 ) { + global $wpdb; + // profile_public: Sicherheits-kritisch — muss immer existieren + $cols = $wpdb->get_col( "DESCRIBE {$wpdb->prefix}forum_users" ); + if ( ! in_array( 'profile_public', $cols ) ) { + $wpdb->query( "ALTER TABLE {$wpdb->prefix}forum_users ADD COLUMN profile_public TINYINT(1) NOT NULL DEFAULT 1" ); + // Alle bestehenden User explizit auf öffentlich setzen + $wpdb->query( "UPDATE {$wpdb->prefix}forum_users SET profile_public = 1 WHERE profile_public IS NULL" ); + } + update_option( 'wbf_db_version', 2 ); + } +}, 10 ); + +// ── Session frühzeitig starten (PHP 8.3 Fix) ──────────────────────────────── +// session_start() MUSS vor jedem HTML-Output laufen. +// plugins_loaded (Prio 1) ist der früheste sichere Zeitpunkt in WordPress. +// Der 'init'-Hook (in class-forum-auth.php) läuft als Fallback weiterhin, +// aber dieser frühe Aufruf verhindert den PHP 8.3 E_WARNING "headers already sent". +add_action( 'plugins_loaded', function() { + WBF_Auth::init(); +}, 1 ); + // ── Superadmin-Sync ─────────────────────────────────────────────────────────── add_action( 'wp_login', function() { WBF_Roles::sync_superadmin(); } ); add_action( 'init', function() { WBF_Roles::sync_superadmin(); } );