BP_Core_Members_Switching::action_init()
Loads localisation files and routes actions depending on the ‘action’ query var.
Description
Source
File: bp-members/classes/class-bp-core-members-switching.php
public function action_init() { if ( ! isset( $_REQUEST['action'] ) ) { return; } $current_user = ( is_user_logged_in() ) ? wp_get_current_user() : null; switch ( $_REQUEST['action'] ) { // We're attempting to switch to another user: case 'switch_to_user': if ( isset( $_REQUEST['user_id'] ) ) { $user_id = absint( $_REQUEST['user_id'] ); } else { $user_id = 0; } // Check authentication: $old_user = bp_current_member_switched(); if ( ! current_user_can( 'switch_to_user', $user_id ) && ( ! $old_user || ! user_can( $old_user, 'switch_to_user' ) ) ) { wp_die( esc_html__( 'Could not switch users.', 'buddyboss' ) ); } // Check intent: check_admin_referer( "switch_to_user_{$user_id}" ); // Switch user: $user = bp_member_switch_to( $user_id, self::remember() ); if ( $user ) { $redirect_to = $_GET['redirect_to'] ?: self::get_redirect( $user, $current_user ); // Redirect to the dashboard or the home URL depending on capabilities: $args = array( 'user_switched' => 'true', ); if ( $redirect_to ) { wp_safe_redirect( add_query_arg( $args, $redirect_to ), 302, self::$application ); } elseif ( ! current_user_can( 'read' ) ) { wp_safe_redirect( add_query_arg( $args, home_url() ), 302, self::$application ); } else { wp_safe_redirect( add_query_arg( $args, admin_url() ), 302, self::$application ); } exit; } else { wp_die( esc_html__( 'Could not switch users.', 'buddyboss' ) ); } break; // We're attempting to switch back to the originating user: case 'switch_to_olduser': // Fetch the originating user data: $old_user = self::get_old_user(); if ( ! $old_user ) { wp_die( esc_html__( 'Could not switch users.', 'buddyboss' ) ); } // Check authentication: if ( ! self::authenticate_old_user( $old_user ) ) { wp_die( esc_html__( 'Could not switch users.', 'buddyboss' ) ); } // Check intent: check_admin_referer( "switch_to_olduser_{$old_user->ID}" ); // Switch user: if ( bp_member_switch_to( $old_user->ID, self::remember(), false ) ) { if ( ! empty( $_REQUEST['interim-login'] ) ) { $GLOBALS['interim_login'] = 'success'; // @codingStandardsIgnoreLine login_header( '', '' ); exit; } $redirect_to = self::get_redirect( $old_user, $current_user ); $args = array( 'user_switched' => 'true', 'switched_back' => 'true', ); if ( $redirect_to ) { wp_safe_redirect( add_query_arg( $args, $redirect_to ), 302, self::$application ); } else { wp_safe_redirect( add_query_arg( $args, admin_url( 'users.php' ) ), 302, self::$application ); } exit; } else { wp_die( esc_html__( 'Could not switch users.', 'buddyboss' ) ); } break; } }
Changelog
Version | Description |
---|---|
BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.