PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.2.0
Forumax – AI Powered Advanced Community Forum Plugin v2.2.0
2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 2.0.0 2.1.0 All 29 releases
← All changes | includes/admin/menu/Delete_Topic.php +44 -38 1.2.3 → 2.2.0 View file →
@@ -1,50 +1,56 @@
1 1 <?php
2 -namespace admin\menu;
2 +/**
3 + * Delete Topic functionality
4 + *
5 + * @package Forumax
6 + */
3 7
8 +defined( 'ABSPATH' ) || exit;
9 +
10 +// AJAX handler to delete a topic
11 +add_action( 'wp_ajax_forumax_delete_topic', 'forumax_delete_topic' );
12 +
4 13 /**
5 - * Class Delete_Post
6 - * @package BBP-core\Admin\Menu
14 + * Delete a topic and its replies.
7 15 */
8 -class Delete_Topic {
16 +function forumax_delete_topic() {
9 17
10 - /**
11 - * Create_Post constructor.
12 - */
13 - public function __construct() {
14 - add_action( 'admin_init', [ $this, 'delete_topic' ] );
18 + // Check the nonce
19 + check_ajax_referer( 'bbpc-admin-nonce', 'bbpc_nonce' );
20 +
21 + if ( ! current_user_can( 'manage_options' ) ) {
22 + wp_send_json_error( 'Unauthorized request.' );
15 23 }
16 24
17 - /**
18 - * Delete Parent Doc
19 - */
20 - public function delete_topic() {
21 -
22 - if ( ! empty ( $_GET['topic_ID'] ) ) {
23 - $topic_id = $_GET['topic_ID'] ?? '';
24 - $topics = get_children(
25 - [
26 - 'post_parent' => $_GET['topic_ID'],
27 - 'post_type' => 'reply',
28 - 'orderby' => 'menu_order',
29 - 'order' => 'asc',
30 - ]
31 - );
25 + $topic_id = ! empty( $_POST['topic_id'] ) ? absint( $_POST['topic_id'] ) : 0;
26 + if ( empty( $topic_id ) ) {
27 + wp_send_json_error( 'Topic ID cannot be empty.' );
28 + }
32 29
33 - $forum_topics = '';
34 - if ( is_array( $topics ) ) :
35 - foreach ( $topics as $topic ) :
36 - $forum_topics .= $topic->ID . ',';
37 - endforeach;
38 - endif;
30 + $replies = get_children( [
31 + 'post_parent' => $topic_id,
32 + 'post_type' => 'reply',
33 + 'orderby' => 'menu_order',
34 + 'order' => 'asc',
35 + ] );
39 36
40 - $topics_id = $topic_id . ',' . $forum_topics;
41 - $topic_ids = explode( ',', $topics_id );
42 - $topic_id_int = array_map( 'intval', $topic_ids );
43 - foreach ( $topic_id_int as $delete_topic ) {
44 - wp_trash_post( $delete_topic, true );
45 - }
46 - wp_safe_redirect(admin_url( 'admin.php?page=bbp-core' ));
37 + $reply_ids = '';
38 + if ( is_array( $replies ) ) {
39 + foreach ( $replies as $reply ) {
40 + $reply_ids .= $reply->ID . ',';
47 41 }
48 42 }
43 +
44 + $topic_posts = $topic_id . ',' . $reply_ids;
45 + $topic_posts = explode( ',', $topic_posts );
46 + $topic_posts_int = array_map( 'intval', $topic_posts );
47 +
48 + foreach ( $topic_posts_int as $delete_topic ) {
49 + if ( ! empty( $delete_topic ) ) {
50 + wp_trash_post( $delete_topic );
51 + }
52 + }
53 +
54 + wp_send_json_success( 'Topic Deleted successfully.' );
55 + wp_die();
49 56 }
50 -new Delete_Topic();