2024-09-18 14:03:18 +03:00
< ? php
namespace um\admin ;
use WP_User ;
2024-09-20 18:41:08 +03:00
use WP_User_Query ;
2024-09-18 14:03:18 +03:00
if ( ! defined ( 'ABSPATH' ) ) {
exit ;
}
if ( ! class_exists ( 'um\admin\Users_Columns' ) ) {
/**
* Class Users_Columns
*
* @package um\admin
*/
class Users_Columns {
/**
* Users_Columns constructor.
*/
public function __construct () {
2024-09-20 18:41:08 +03:00
add_filter ( 'manage_users_columns' , array ( & $this , 'manage_users_columns' ) );
add_filter ( 'manage_users_custom_column' , array ( & $this , 'manage_users_custom_column' ), 10 , 3 );
add_action ( 'pre_user_query' , array ( & $this , 'sort_by_newest' ) );
add_filter ( 'users_list_table_query_args' , array ( & $this , 'hide_by_caps' ), 1 );
add_filter ( 'views_users' , array ( & $this , 'restrict_role_links' ) );
add_filter ( 'user_row_actions' , array ( & $this , 'user_row_actions' ), 10 , 2 );
2024-09-18 14:03:18 +03:00
add_filter ( 'bulk_actions-users' , array ( & $this , 'add_bulk_actions' ) );
2024-09-20 18:41:08 +03:00
add_filter ( 'handle_bulk_actions-users' , array ( & $this , 'handle_bulk_actions' ), 10 , 3 );
add_action ( 'manage_users_extra_tablenav' , array ( & $this , 'add_status_filter' ) );
add_action ( 'pre_user_query' , array ( & $this , 'filter_users_by_status' ) );
add_filter ( 'removable_query_args' , array ( & $this , 'add_removable_query_args' ) );
}
/**
* Filter: Add column 'Status'
*
* @param array $columns
*
* @return array
*/
public function manage_users_columns ( $columns ) {
2024-09-24 13:18:48 +03:00
$columns [ 'um_account_status' ] = __ ( 'Status' , 'ultimate-member' );
2024-09-20 18:41:08 +03:00
return $columns ;
}
/**
* Filter: Show column 'Status'
*
* @param string $value
* @param string $column_name
* @param int $user_id
*
* @return string
*/
public function manage_users_custom_column ( $value , $column_name , $user_id ) {
2024-09-24 13:18:48 +03:00
if ( 'um_account_status' !== $column_name ) {
return $value ;
}
$status = UM () -> common () -> users () -> get_status ( $user_id , 'formatted' );
$status = apply_filters ( 'um_users_column_account_status' , $status , $user_id );
$value = '<span class="um-user-status">' . esc_html ( $status ) . '</span>' ;
if ( get_current_user_id () === $user_id ) {
return $value ;
}
$row_actions = array ();
if ( UM () -> common () -> users () -> can_be_approved ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'approve_user' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'approve_user' . $user_id ),
),
admin_url ( 'users.php' )
);
2024-09-30 17:37:04 +03:00
2024-09-24 13:18:48 +03:00
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-set-status-approved">' . esc_html__ ( 'Approve' , 'ultimate-member' ) . '</a>' ;
}
2024-09-30 17:37:04 +03:00
if ( UM () -> common () -> users () -> can_be_rejected ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'reject_user' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'reject_user' . $user_id ),
),
admin_url ( 'users.php' )
);
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-set-status-rejected" onclick="return confirm( \'' . esc_js ( __ ( 'Are you sure you want to reject this user membership?' , 'ultimate-member' ) ) . '\' );">' . esc_html__ ( 'Reject' , 'ultimate-member' ) . '</a>' ;
}
2024-09-24 13:18:48 +03:00
if ( UM () -> common () -> users () -> can_be_reactivated ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'reactivate_user' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'reactivate_user' . $user_id ),
),
admin_url ( 'users.php' )
);
2024-09-30 17:37:04 +03:00
2024-09-24 13:18:48 +03:00
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-reactivate-user">' . esc_html__ ( 'Reactivate' , 'ultimate-member' ) . '</a>' ;
}
if ( UM () -> common () -> users () -> can_be_set_as_pending ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'put_user_as_pending' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'put_user_as_pending' . $user_id ),
),
admin_url ( 'users.php' )
);
2024-09-30 17:37:04 +03:00
2024-09-24 13:18:48 +03:00
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-set-status-pending">' . esc_html__ ( 'Put as pending' , 'ultimate-member' ) . '</a>' ;
}
if ( UM () -> common () -> users () -> can_activation_send ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'resend_user_activation' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'resend_user_activation' . $user_id ),
),
admin_url ( 'users.php' )
);
2024-09-30 17:37:04 +03:00
2024-09-30 23:10:15 +03:00
$title = __ ( 'Send activation email' , 'ultimate-member' );
if ( UM () -> common () -> users () -> has_status ( $user_id , 'awaiting_email_confirmation' ) ) {
$title = __ ( 'Resend activation email' , 'ultimate-member' );
}
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-resend-activation-email">' . esc_html ( $title ) . '</a>' ;
2024-09-24 13:18:48 +03:00
}
if ( UM () -> common () -> users () -> can_be_deactivated ( $user_id ) ) {
$url = add_query_arg (
array (
'um_adm_action' => 'deactivate_user' ,
'uid' => $user_id ,
'_wpnonce' => wp_create_nonce ( 'deactivate_user' . $user_id ),
),
admin_url ( 'users.php' )
);
2024-09-30 17:37:04 +03:00
2024-09-24 13:18:48 +03:00
$row_actions [] = '<a href="' . esc_url ( $url ) . '" class="um-deactivate-user" onclick="return confirm( \'' . esc_js ( __ ( 'Are you sure you want to deactivate this user?' , 'ultimate-member' ) ) . '\' );">' . esc_html__ ( 'Deactivate' , 'ultimate-member' ) . '</a>' ;
}
$row_actions = apply_filters ( 'um_users_column_account_status_row_actions' , $row_actions , $user_id );
if ( ! empty ( $row_actions ) ) {
$value .= '<div class="row-actions"><ul class="um-user-status-row-actions"><li>' . implode ( '</li><li> | </li><li>' , $row_actions ) . '</li></ul></div>' ;
2024-09-20 18:41:08 +03:00
}
return $value ;
}
/**
* Change default sorting at WP Users list table
*
* @param WP_User_Query $query Current instance of WP_User_Query (passed by reference).
*/
public function sort_by_newest ( $query ) {
global $pagenow ;
// phpcs:ignore WordPress.Security.NonceVerification -- situated in WP native query and just checking sorting
if ( 'users.php' === $pagenow && ! isset ( $_REQUEST [ 'orderby' ] ) && is_admin () ) {
$query -> query_vars [ 'order' ] = 'desc' ;
$query -> query_orderby = ' ORDER BY user_registered DESC' ;
}
}
/**
* Hide users who are hidden by role access for not Administrator user
*
* @param array $args Arguments passed to WP_User_Query to retrieve items for the current
* users list table
*
* @return array
*/
public function hide_by_caps ( $args ) {
if ( current_user_can ( 'manage_options' ) ) {
return $args ;
}
// @todo avoid um_user() function using
// @todo check another restrictions not only the role settings. We need to exclude users per user ID.
$can_view_roles = um_user ( 'can_view_roles' );
if ( ! empty ( $can_view_roles ) && um_user ( 'can_view_all' ) ) {
$args [ 'role__in' ] = $can_view_roles ;
}
return $args ;
}
/**
* Hide role filters with not accessible roles
*
* @param array $views
* @return array
*/
public function restrict_role_links ( $views ) {
if ( current_user_can ( 'manage_options' ) ) {
return $views ;
}
$can_view_roles = um_user ( 'can_view_roles' );
if ( ! empty ( $can_view_roles ) && um_user ( 'can_view_all' ) ) {
$wp_roles = wp_roles ();
foreach ( $wp_roles -> get_names () as $this_role => $name ) {
if ( ! in_array ( $this_role , $can_view_roles , true ) ) {
unset ( $views [ $this_role ] );
}
}
}
return $views ;
}
/**
* Custom row actions for users page
*
* @param array $actions
* @param WP_User $user_object
*
* @return array
*/
public function user_row_actions ( $actions , $user_object ) {
$user_id = $user_object -> ID ;
// Link to Ultimate Member Profile.
$actions [ 'frontend_profile' ] = '<a href="' . esc_url ( um_user_profile_url ( $user_id ) ) . '">' . esc_html__ ( 'View profile' , 'ultimate-member' ) . '</a>' ;
// The link for open popup with the registration data submitted through Ultimate Member Registration form.
$submitted = get_user_meta ( $user_id , 'submitted' , true );
if ( ! empty ( $submitted ) ) {
$actions [ 'view_info' ] = '<a href="#" data-modal="UM_preview_registration" data-modal-size="smaller"
data-dynamic-content="um_admin_review_registration" data-arg1="' . esc_attr ( $user_id ) . '" data-arg2="edit_registration">' . esc_html__ ( 'Info' , 'ultimate-member' ) . '</a>' ;
// For new modal below.
// $actions['view_info'] = '<a href="#" class="um-preview-registration" data-user_id="' . esc_attr( $user_id ) . '">' . esc_html__( 'Info', 'ultimate-member' ) . '</a>';
}
// Remove row actions for now Administrator role and who cannot view profiles of row's user.
if ( ! current_user_can ( 'manage_options' ) && ! um_can_view_profile ( $user_id ) ) {
unset ( $actions [ 'frontend_profile' ], $actions [ 'view_info' ], $actions [ 'view' ] );
}
/**
* Filters the rows actions for the user in wp-admin > Users List Table screen.
*
* Note: Row actions format is 'key' => 'action_link_html'
*
* @since 1.3.x
* @hook um_admin_user_row_actions
*
* @param {array} $actions User's row actions.
* @param {int} $user_id Row's user ID.
*
* @return {array} User's row actions.
*/
return apply_filters ( 'um_admin_user_row_actions' , $actions , $user_id );
2024-09-18 14:03:18 +03:00
}
/**
* Get the list with the bulk actions.
*
* @return array
*/
private function get_user_bulk_actions () {
$um_actions = array (
'um_approve_membership' => __ ( 'Approve Membership' , 'ultimate-member' ),
'um_reject_membership' => __ ( 'Reject Membership' , 'ultimate-member' ),
'um_put_as_pending' => __ ( 'Put as Pending Review' , 'ultimate-member' ),
'um_resend_activation' => __ ( 'Resend Activation E-mail' , 'ultimate-member' ),
'um_deactivate' => __ ( 'Deactivate' , 'ultimate-member' ),
2024-09-20 18:41:08 +03:00
'um_reactivate' => __ ( 'Reactivate' , 'ultimate-member' ), // um_reenable
2024-09-18 14:03:18 +03:00
);
/**
* Filters wp-admin > Users List Table bulk actions.
*
* @since 1.3.x
* @since 2.8.7 changed format from `$action_slug => array( 'label' => $action_title )` to `$action_slug => $action_title`
* @hook um_admin_bulk_user_actions_hook
*
* @param {array} $um_actions Users admin actions.
*
* @return {array} Users admin actions.
*
* @example <caption>Add `$action_title` to Users List Table bulk actions.</caption>
* function um_custom_admin_bulk_user_actions_hook( $um_actions ) {
* $um_actions[ $action_slug ] = $action_title;
* return $um_actions;
* }
* add_filter( 'um_admin_bulk_user_actions_hook', 'um_custom_admin_bulk_user_actions_hook' );
*/
return apply_filters ( 'um_admin_bulk_user_actions_hook' , $um_actions );
}
/**
* @param array $actions
*
* @return array
*/
public function add_bulk_actions ( $actions ) {
$rolename = UM () -> roles () -> get_priority_user_role ( get_current_user_id () );
$role = get_role ( $rolename );
if ( null === $role ) {
return $actions ;
}
// Add Ultimate Member bulk actions only when the current user has 'edit_users' capability.
if ( ! current_user_can ( 'edit_users' ) && ! $role -> has_cap ( 'edit_users' ) ) {
return $actions ;
}
$actions [ esc_html__ ( 'Ultimate Member' , 'ultimate-member' ) ] = $this -> get_user_bulk_actions ();
return $actions ;
}
2024-09-24 13:18:48 +03:00
private function get_statuses_filter_options () {
$statuses = UM () -> common () -> users () -> statuses_list ();
/**
* Filters the user statuses added via Ultimate Member plugin.
*
* Note: Statuses format is 'key' => 'title'
*
* @since 2.8.7
* @hook um_user_statuses_admin_filter_options
*
* @param {array} $statuses User statuses in Ultimate Member environment.
*
* @return {array} User statuses.
*/
return apply_filters ( 'um_user_statuses_admin_filter_options' , $statuses );
}
2024-09-18 14:03:18 +03:00
/**
2024-09-20 18:41:08 +03:00
* Adds HTML with the filter by the Ultimate Member status.
2024-09-18 14:03:18 +03:00
*
2024-09-20 18:41:08 +03:00
* @param string $which Where the callback's hook fired.
2024-09-18 14:03:18 +03:00
*/
2024-09-20 18:41:08 +03:00
public function add_status_filter ( $which ) {
if ( 'top' !== $which ) {
return ;
}
2024-09-18 14:03:18 +03:00
2024-09-20 18:41:08 +03:00
$id = 'um_user_status' ;
// need to add there additional nonce field because WordPress native _wpnonce field isn't visible on the users.php screen then custom actions
wp_nonce_field ( 'um-bulk-users' , '_um_wpnonce' , false );
2024-09-18 14:03:18 +03:00
2024-09-24 13:18:48 +03:00
$statuses = $this -> get_statuses_filter_options ();
2024-09-20 18:41:08 +03:00
?>
2024-10-15 22:06:55 +03:00
<div class="alignleft um-filter-by-status">
2024-09-20 18:41:08 +03:00
<label class="screen-reader-text" for="<?php echo esc_attr( $id ); ?>"><?php esc_html_e( 'All Statuses', 'ultimate-member' ); ?></label>
<select name="<?php echo esc_attr( $id ); ?>" id="<?php echo esc_attr( $id ); ?>">
<option value=""><?php esc_html_e( 'All Statuses', 'ultimate-member' ); ?></option>
<?php
foreach ( $statuses as $k => $v ) {
$selected = isset( $_GET[ $id ] ) && sanitize_key( $_GET[ $id ] ) === $k; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- native WordPress nonce is used
?>
<option value="<?php echo esc_attr( $k ); ?>" <?php selected( $selected ); ?>><?php echo esc_html( $v ); ?></option>
<?php
}
?>
</select>
<?php submit_button( __( 'Filter', 'ultimate-member' ), '', 'um_filter_users', false ); ?>
</div>
<?php
2024-09-18 14:03:18 +03:00
}
/**
* Function for handling custom bulk actions on the Users List Table
*
* @param string $sendback URL for redirect after handling bulk action
* @param string $current_action Bulk action key
* @param array $userids User IDs
*
* @return string URL for redirect after handling bulk action
*/
public function handle_bulk_actions( $sendback, $current_action, $userids ) {
$um_actions = $this->get_user_bulk_actions();
if ( ! array_key_exists( $current_action, $um_actions ) ) {
return $sendback;
}
// need to handle there additional nonce field because WordPress native _wpnonce field isn't visible on the users.php screen then custom actions
2024-09-20 18:41:08 +03:00
check_admin_referer( 'um-bulk-users', '_um_wpnonce' );
2024-09-18 14:03:18 +03:00
$rolename = UM()->roles()->get_priority_user_role( get_current_user_id() );
$role = get_role( $rolename );
2024-09-20 18:41:08 +03:00
if ( null === $role ) {
return $sendback;
}
2024-09-18 14:03:18 +03:00
// Make Ultimate Member bulk actions only when the current user has 'edit_users' capability.
if ( ! current_user_can( 'edit_users' ) && ! $role->has_cap( 'edit_users' ) ) {
wp_die( esc_html__( 'You do not have enough permissions to do that.', 'ultimate-member' ) );
}
$users = array_map( 'absint', $userids );
2024-09-20 18:41:08 +03:00
$users = array_diff( $users, array( get_current_user_id() ) ); // cannot make any action related to himself.
2024-09-18 14:03:18 +03:00
switch ( $current_action ) {
case 'um_approve_membership':
$approved_count = 0;
foreach ( $users as $user_id ) {
2024-09-20 18:41:08 +03:00
$res = UM()->common()->users()->approve( $user_id );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$approved_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'approved_count' => $approved_count,
'update' => 'um_approved',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
case 'um_reactivate':
$reactivated_count = 0;
foreach ( $users as $user_id ) {
2024-09-20 18:41:08 +03:00
$res = UM()->common()->users()->reactivate( $user_id );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$reactivated_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'reactivated_count' => $reactivated_count,
'update' => 'um_reactivated',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
case 'um_reject_membership':
$rejected_count = 0;
foreach ( $users as $user_id ) {
2024-09-20 18:41:08 +03:00
$res = UM()->common()->users()->reject( $user_id );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$rejected_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'rejected_count' => $rejected_count,
'update' => 'um_rejected',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
case 'um_deactivate':
$deactivated_count = 0;
foreach ( $users as $user_id ) {
2024-09-20 18:41:08 +03:00
$res = UM()->common()->users()->deactivate( $user_id );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$deactivated_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'deactivated_count' => $deactivated_count,
'update' => 'um_deactivate',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
case 'um_put_as_pending':
$pending_count = 0;
foreach ( $users as $user_id ) {
2024-09-20 18:41:08 +03:00
$res = UM()->common()->users()->set_as_pending( $user_id );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$pending_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'pending_count' => $pending_count,
'update' => 'um_pending',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
case 'um_resend_activation':
$email_pending_count = 0;
foreach ( $users as $user_id ) {
2024-09-30 17:37:04 +03:00
$res = UM()->common()->users()->send_activation( $user_id, true );
2024-09-18 14:03:18 +03:00
if ( $res ) {
2024-09-20 18:41:08 +03:00
++$email_pending_count;
2024-09-18 14:03:18 +03:00
}
}
$sendback = add_query_arg(
array(
'resend_activation_count' => $email_pending_count,
'update' => 'um_resend_activation',
),
$this->set_redirect_uri( $sendback )
);
break;
2024-09-20 18:41:08 +03:00
2024-09-18 14:03:18 +03:00
default:
2024-09-20 18:41:08 +03:00
/**
* Fires when a custom Ultimate Member bulk action for wp-admin > Users list table should be handled.
*
* The redirect link should be modified with success or failure feedback
* from the action to be used to display feedback to the user.
*
* The dynamic portion of the hook name, `$current_action`, refers to the current bulk action.
* Use together with custom actions added via `um_admin_bulk_user_actions_hook` hook.
*
* @param {string} $sendback The redirect URL.
* @param {array} $userids Selected users in bulk action.
*
* @return {string} The redirect URL.
*
* @since 2.8.7
* @hook um_handle_bulk_actions-users-{$current_action}
*
* @example <caption>Handle custom-action and set redirect after it.</caption>
* function um_custom_bulk_actions_users( $sendback, $userids ) {
* foreach ( $userids as $user_id ) {
* // make some action here
* }
* return add_query_arg( 'action_counter', 'completed action count', $sendback );
* }
* add_filter( 'um_handle_bulk_actions-users-custom-action', 'um_custom_bulk_actions_users' );
*/
$sendback = apply_filters( "um_handle_bulk_actions-users-{$current_action}", $sendback, $userids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
2024-09-18 14:03:18 +03:00
break;
}
return $sendback;
}
/**
2024-09-20 18:41:08 +03:00
* Filter WP users by UM Status
2024-09-18 14:03:18 +03:00
*
2024-09-20 18:41:08 +03:00
* WP_User_Query $query Current instance of WP_User_Query (passed by reference).
2024-09-18 14:03:18 +03:00
*/
2024-09-20 18:41:08 +03:00
public function filter_users_by_status( $query ) {
global $wpdb, $pagenow;
2024-09-18 14:03:18 +03:00
2024-09-20 18:41:08 +03:00
if ( 'users.php' !== $pagenow || ! is_admin() ) {
return;
2024-09-18 14:03:18 +03:00
}
2024-09-20 18:41:08 +03:00
if ( empty( $_REQUEST['um_user_status'] ) ) {
return;
2024-09-18 14:03:18 +03:00
}
2024-09-20 18:41:08 +03:00
$status = sanitize_key( $_REQUEST['um_user_status'] );
2024-09-18 14:03:18 +03:00
/**
2024-09-20 18:41:08 +03:00
* Filters the marker to disable Ultimate Member default filter by user status.
2024-09-18 14:03:18 +03:00
*
* @since 2.8.7
2024-09-20 18:41:08 +03:00
* @hook um_skip_filter_users_by_status
2024-09-18 14:03:18 +03:00
*
2024-09-20 18:41:08 +03:00
* @param {bool} $skip Marker to skip Ultimate Member core user filter handler.
* @param {string} $status User Status
2024-09-18 14:03:18 +03:00
*
* @return {array} User's row actions.
*/
2024-09-20 18:41:08 +03:00
$skip_status_filter = apply_filters( 'um_skip_filter_users_by_status', false, $status );
if ( false !== $skip_status_filter ) {
return;
2024-09-18 14:03:18 +03:00
}
2024-09-20 18:41:08 +03:00
$query->query_where = str_replace(
'WHERE 1=1',
$wpdb->prepare(
"WHERE 1=1 AND
{$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id
FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = 'account_status' AND
{$wpdb->usermeta}.meta_value = %s
)",
$status
),
$query->query_where
);
2024-09-18 14:03:18 +03:00
}
/**
* Sets redirect URI after bulk action
*
* @param string $uri
* @return string
*/
2024-09-24 13:18:48 +03:00
public function set_redirect_uri( $uri ) {
2024-09-18 14:03:18 +03:00
if ( ! empty( $_REQUEST['s'] ) ) {
$uri = add_query_arg( 's', sanitize_text_field( $_REQUEST['s'] ), $uri );
}
2024-09-20 18:41:08 +03:00
if ( ! empty( $_REQUEST['um_user_status'] ) ) {
$uri = add_query_arg( 'um_user_status', sanitize_key( $_REQUEST['um_user_status'] ), $uri );
2024-09-18 14:03:18 +03:00
}
return $uri;
}
2024-09-20 18:41:08 +03:00
/**
* Add query args to list of query variable names to remove.
*
* @param array $removable_query_args An array of query variable names to remove from a URL
*
* @return array
*/
public function add_removable_query_args( $removable_query_args ) {
$removable_query_args[] = '_um_wpnonce'; // need to add there additional nonce field because WordPress native _wpnonce field isn't visible on the users.php screen then custom actions
$removable_query_args[] = 'approved_count';
$removable_query_args[] = 'rejected_count';
$removable_query_args[] = 'reactivated_count';
$removable_query_args[] = 'deactivated_count';
$removable_query_args[] = 'pending_count';
$removable_query_args[] = 'resend_activation_count';
return $removable_query_args;
}
2024-09-18 14:03:18 +03:00
}
}