| @@ -1,33 +1,55 @@ | ||
| 1 | -<?php | |
| 2 | -namespace admin\menu; | |
| 3 | - | |
| 4 | -defined( 'ABSPATH' ) || exit(); | |
| 5 | - | |
| 6 | -class Approve_Topic { | |
| 7 | - public function __construct() { | |
| 8 | - add_action( 'admin_init', [ $this, 'approve_spam_topic' ] ); | |
| 9 | - add_action( 'admin_init', [ $this, 'approve_pending_reply' ] ); | |
| 10 | - } | |
| 11 | - | |
| 12 | - public function approve_spam_topic() { | |
| 13 | - $approval_request = $_GET['bbpc_approve_topic_id'] ?? false; | |
| 14 | - | |
| 15 | - if ( $approval_request ) { | |
| 16 | - bbp_approve_topic( (int) $approval_request ); | |
| 17 | - wp_safe_redirect( admin_url( 'admin.php?page=bbp-core' ) ); | |
| 18 | - } | |
| 19 | - } | |
| 20 | - | |
| 21 | - public function approve_pending_reply() { | |
| 22 | - $approval_request = $_GET['bbpc_approve_reply_id'] ?? false; | |
| 23 | - | |
| 24 | - if ( $approval_request ) { | |
| 25 | - bbp_approve_reply( (int) $approval_request ); | |
| 26 | - wp_safe_redirect( admin_url( 'admin.php?page=bbp-core' ) ); | |
| 27 | - } | |
| 28 | - } | |
| 29 | -} | |
| 30 | - | |
| 31 | -new Approve_Topic(); | |
| 32 | - | |
| 33 | - | |
| 1 | +<?php | |
| 2 | +namespace admin\menu; | |
| 3 | + | |
| 4 | +defined( 'ABSPATH' ) || exit(); | |
| 5 | + | |
| 6 | +class Forumax_Approve_Topic { | |
| 7 | + public function __construct() { | |
| 8 | + add_action( 'admin_init', [ $this, 'approve_spam_topic' ] ); | |
| 9 | + add_action( 'admin_init', [ $this, 'approve_pending_reply' ] ); | |
| 10 | + } | |
| 11 | + | |
| 12 | + public function approve_spam_topic() { | |
| 13 | + $approval_request = $_GET['bbpc_approve_topic_id'] ?? false; | |
| 14 | + | |
| 15 | + if ( $approval_request ) { | |
| 16 | + // Verify user has permission to moderate topics | |
| 17 | + if ( ! current_user_can( 'moderate' ) ) { | |
| 18 | + wp_die( esc_html__( 'You do not have permission to approve topics.', 'forumax' ) ); | |
| 19 | + } | |
| 20 | + | |
| 21 | + // Verify nonce for CSRF protection | |
| 22 | + if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'bbpc_approve_topic_' . (int) $approval_request ) ) { | |
| 23 | + wp_die( esc_html__( 'Security check failed. Please try again.', 'forumax' ) ); | |
| 24 | + } | |
| 25 | + | |
| 26 | + bbp_approve_topic( (int) $approval_request ); | |
| 27 | + wp_safe_redirect( admin_url( 'admin.php?page=forumax' ) ); | |
| 28 | + exit; | |
| 29 | + } | |
| 30 | + } | |
| 31 | + | |
| 32 | + public function approve_pending_reply() { | |
| 33 | + $approval_request = $_GET['bbpc_approve_reply_id'] ?? false; | |
| 34 | + | |
| 35 | + if ( $approval_request ) { | |
| 36 | + // Verify user has permission to moderate replies | |
| 37 | + if ( ! current_user_can( 'moderate' ) ) { | |
| 38 | + wp_die( esc_html__( 'You do not have permission to approve replies.', 'forumax' ) ); | |
| 39 | + } | |
| 40 | + | |
| 41 | + // Verify nonce for CSRF protection | |
| 42 | + if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'bbpc_approve_reply_' . (int) $approval_request ) ) { | |
| 43 | + wp_die( esc_html__( 'Security check failed. Please try again.', 'forumax' ) ); | |
| 44 | + } | |
| 45 | + | |
| 46 | + bbp_approve_reply( (int) $approval_request ); | |
| 47 | + wp_safe_redirect( admin_url( 'admin.php?page=forumax' ) ); | |
| 48 | + exit; | |
| 49 | + } | |
| 50 | + } | |
| 51 | +} | |
| 52 | + | |
| 53 | +new Forumax_Approve_Topic(); | |
| 54 | + | |
| 55 | + | |