Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
05/30/2020 09:26:01 AM (6 years ago)
Author:
imath
Message:

xProfile Group Admin: add confirmation screen for the delete action

Props oztaser

Fixes #8305

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/bp-xprofile-admin.php

    r12624 r12660  
    6666        'edit_group',
    6767        'delete_group',
     68        'do_delete_group',
    6869        'add_field',
    6970        'edit_field',
     
    8788
    8889            // Delete group.
    89             } elseif ( 'delete_group' === $mode ) {
     90            } elseif ( in_array( $mode, array( 'delete_group', 'do_delete_group' ), true ) ) {
    9091                xprofile_admin_delete_group( $group_id );
    9192
     
    404405    check_admin_referer( 'bp_xprofile_delete_group' );
    405406
     407    $mode = ! empty( $_GET['mode'] )
     408          ? sanitize_key( $_GET['mode'] )
     409          : false;
     410
     411    // Display the group delete confirmation screen.
     412    if ( 'delete_group' === $mode ) {
     413        xprofile_admin_delete_group_screen( $group_id );
     414
     415    // Handle the deletion of group.
     416    } else {
     417        $group = new BP_XProfile_Group( $group_id );
     418
     419        if ( ! $group->delete() ) {
     420            $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' );
     421            $type    = 'error';
     422        } else {
     423            $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' );
     424            $type    = 'success';
     425
     426            /**
     427             * Fires at the end of group deletion process, if successful.
     428             *
     429             * @since 1.0.0
     430             *
     431             * @param BP_XProfile_Group $group Current BP_XProfile_Group object.
     432             */
     433            do_action( 'xprofile_groups_deleted_group', $group );
     434        }
     435
     436        xprofile_admin_screen( $message, $type );
     437    }
     438}
     439
     440/**
     441 * Display the delete confirmation screen of profile data groups.
     442 *
     443 * @since 7.0.0
     444 */
     445function xprofile_admin_delete_group_screen( $group_id ) {
     446
     447    if ( ! bp_current_user_can( 'bp_moderate' ) ) {
     448        die( '-1' );
     449    }
     450
    406451    $group = new BP_XProfile_Group( $group_id );
    407452
    408     if ( !$group->delete() ) {
    409         $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' );
    410         $type    = 'error';
    411     } else {
    412         $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' );
    413         $type    = 'success';
    414 
    415         /**
    416          * Fires at the end of group deletion process, if successful.
    417          *
    418          * @since 1.0.0
    419          *
    420          * @param BP_XProfile_Group $group Current BP_XProfile_Group object.
    421          */
    422         do_action( 'xprofile_groups_deleted_group', $group );
    423     }
    424 
    425     xprofile_admin_screen( $message, $type );
     453    $base_url = remove_query_arg( array( 'mode', 'group_id', '_wpnonce' ), $_SERVER['REQUEST_URI'] ); ?>
     454
     455    <div class="wrap">
     456        <h1><?php esc_html_e( 'Delete Field Group', 'buddypress' ) ?></h1>
     457        <p><?php esc_html_e( 'You are about to delete the following field group:', 'buddypress' ) ?></p>
     458
     459        <ul class="bp-xprofile-delete-group-list">
     460            <li><?php echo esc_html( $group->name ); ?></li>
     461        </ul>
     462
     463        <p><strong><?php esc_html_e( 'This action cannot be undone.', 'buddypress' ) ?></strong></p>
     464
     465        <a class="button-primary" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'mode' => 'do_delete_group', 'group_id' => $group_id ), $base_url ), 'bp_xprofile_delete_group' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ) ?></a>
     466        <a class="button" href="<?php echo esc_attr( $base_url ); ?>"><?php esc_html_e( 'Cancel', 'buddypress' ) ?></a>
     467    </div>
     468
     469    <?php
    426470}
    427471
Note: See TracChangeset for help on using the changeset viewer.