Upload file wp-business-forum.php via GUI
This commit is contained in:
87
wp-business-forum.php
Normal file
87
wp-business-forum.php
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Plugin Name: WP Business Forum
|
||||||
|
* Plugin URI: https://example.com
|
||||||
|
* Description: Professionelles Forum mit eigenem Login, Rollen, Signaturen, Hierarchie und Moderations-Tools.
|
||||||
|
* Version: 2.0.0
|
||||||
|
* Author: Your Name
|
||||||
|
* Text Domain: wp-business-forum
|
||||||
|
* License: GPL2
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||||
|
|
||||||
|
define( 'WBF_PATH', plugin_dir_path( __FILE__ ) );
|
||||||
|
define( 'WBF_URL', plugin_dir_url( __FILE__ ) );
|
||||||
|
define( 'WBF_VERSION', '2.0.0' );
|
||||||
|
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-db.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-roles.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-levels.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-bbcode.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-auth.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-shortcodes.php';
|
||||||
|
require_once WBF_PATH . 'includes/class-forum-ajax.php';
|
||||||
|
require_once WBF_PATH . 'admin/forum-admin.php';
|
||||||
|
require_once WBF_PATH . 'admin/forum-settings.php';
|
||||||
|
require_once WBF_PATH . 'admin/forum-setup.php';
|
||||||
|
|
||||||
|
// ── Aktivierung ────────────────────────────────────────────────────────────────
|
||||||
|
register_activation_hook( __FILE__, function() {
|
||||||
|
WBF_DB::install();
|
||||||
|
// Transient für einmalige Weiterleitung zum Setup-Wizard setzen
|
||||||
|
set_transient( 'wbf_activation_redirect', true, 30 );
|
||||||
|
});
|
||||||
|
|
||||||
|
// ── Superadmin-Sync ───────────────────────────────────────────────────────────
|
||||||
|
add_action( 'wp_login', function() { WBF_Roles::sync_superadmin(); } );
|
||||||
|
add_action( 'init', function() { WBF_Roles::sync_superadmin(); } );
|
||||||
|
|
||||||
|
// ── Body-Klasse ───────────────────────────────────────────────────────────────
|
||||||
|
add_filter( 'body_class', function( $classes ) {
|
||||||
|
global $post;
|
||||||
|
if ( $post && has_shortcode( $post->post_content, 'business_forum' ) ) {
|
||||||
|
$classes[] = 'wbf-forum-page';
|
||||||
|
}
|
||||||
|
return $classes;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// ── Forum-URL Hilfsfunktion ───────────────────────────────────────────────────
|
||||||
|
function wbf_get_forum_url() {
|
||||||
|
// 1. Gespeicherte Seite aus dem Setup-Wizard
|
||||||
|
$page_id = get_option('wbf_forum_page_id');
|
||||||
|
if ( $page_id ) {
|
||||||
|
$url = get_permalink( $page_id );
|
||||||
|
if ( $url ) return $url;
|
||||||
|
}
|
||||||
|
// 2. Fallback: Seite mit [business_forum] Shortcode suchen
|
||||||
|
$pages = get_posts([
|
||||||
|
'post_type' => 'page',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'posts_per_page' => 1,
|
||||||
|
's' => 'business_forum',
|
||||||
|
]);
|
||||||
|
if ( $pages ) return get_permalink( $pages[0]->ID );
|
||||||
|
// 3. Letzter Fallback: aktuelle Seite
|
||||||
|
return home_url('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Assets ────────────────────────────────────────────────────────────────────
|
||||||
|
add_action( 'wp_enqueue_scripts', function() {
|
||||||
|
wp_enqueue_style( 'wbf-style', WBF_URL . 'assets/css/forum-style.css', [], WBF_VERSION );
|
||||||
|
wp_enqueue_script( 'wbf-script', WBF_URL . 'assets/js/forum-script.js', ['jquery'], WBF_VERSION, true );
|
||||||
|
$wbf_user = WBF_Auth::get_current_user();
|
||||||
|
if ( $wbf_user ) {
|
||||||
|
WBF_DB::touch_last_active( $wbf_user->id );
|
||||||
|
}
|
||||||
|
wp_localize_script( 'wbf-script', 'WBF', [
|
||||||
|
'ajax_url' => admin_url('admin-ajax.php'),
|
||||||
|
'nonce' => wp_create_nonce('wbf_nonce'),
|
||||||
|
'logged_in' => WBF_Auth::is_forum_logged_in() ? 'yes' : 'no',
|
||||||
|
'auto_logout_minutes' => (int)( wbf_get_settings()['auto_logout_minutes'] ?? 30 ),
|
||||||
|
'my_id' => $wbf_user ? (int)$wbf_user->id : 0,
|
||||||
|
'unread_dm' => $wbf_user ? WBF_DB::count_unread_messages($wbf_user->id) : 0,
|
||||||
|
'forum_url' => wbf_get_forum_url(),
|
||||||
|
]);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user