File "users.php"
Full Path: /home/jlklyejr/public_html/wp-content/test/wp-content/plugins/bbpress/includes/admin/users.php
File size: 9.68 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* bbPress Users Admin Class
*
* @package bbPress
* @subpackage Administration
*/
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
if ( ! class_exists( 'BBP_Users_Admin' ) ) :
/**
* Loads bbPress users admin area
*
* @package bbPress
* @subpackage Administration
* @since 2.0.0 bbPress (r2464)
*/
class BBP_Users_Admin {
/**
* The bbPress users admin loader
*
* @since 2.0.0 bbPress (r2515)
*/
public function __construct() {
$this->setup_actions();
}
/**
* Setup the admin hooks, actions and filters
*
* @since 2.0.0 bbPress (r2646)
*
* @access private
*/
function setup_actions() {
// Bail if in network admin
if ( is_network_admin() ) {
return;
}
// User profile edit/display actions
add_action( 'edit_user_profile', array( $this, 'secondary_role_display' ) );
// WordPress user screen
// Remvove the bottom list table "change forum role" dropdown from WordPress < 4.6.
// See https://bbpress.trac.wordpress.org/ticket/2906.
if ( bbp_get_major_wp_version() < 4.6 ) {
add_action( 'restrict_manage_users', array( __CLASS__, 'user_role_bulk_dropdown' ) );
} else {
add_action( 'restrict_manage_users', array( $this, 'user_role_bulk_dropdown' ), 10, 1 );
}
add_filter( 'manage_users_columns', array( $this, 'user_role_column' ), 10, 1 );
add_filter( 'manage_users_custom_column', array( $this, 'user_role_row' ), 10, 3 );
// Only list bbPress roles under Forum Role, remove from WordPress' > 4.4 Site Role list.
if ( bbp_get_major_wp_version() >= 4.4 ) {
add_filter( 'get_role_list', array( $this, 'user_role_list_filter' ), 10, 2 );
}
// User List Table
add_action( 'load-users.php', array( $this, 'user_role_bulk_change' ), 10, 1 );
add_action( 'user_row_actions', array( $this, 'user_row_actions' ), 10, 2 );
}
/**
* Default interface for setting a forum role
*
* @since 2.2.0 bbPress (r4285)
*
* @param WP_User $profileuser User data
* @return bool Always false
*/
public static function secondary_role_display( $profileuser ) {
// Bail if current user cannot edit users
if ( ! current_user_can( 'edit_user', $profileuser->ID ) ) {
return;
}
// Get the roles
$dynamic_roles = bbp_get_dynamic_roles();
// Only keymasters can set other keymasters
if ( ! bbp_is_user_keymaster() ) {
unset( $dynamic_roles[ bbp_get_keymaster_role() ] );
} ?>
<h2><?php esc_html_e( 'Forums', 'bbpress' ); ?></h2>
<table class="form-table">
<tbody>
<tr>
<th><label for="bbp-forums-role"><?php esc_html_e( 'Forum Role', 'bbpress' ); ?></label></th>
<td>
<?php $user_role = bbp_get_user_role( $profileuser->ID ); ?>
<select name="bbp-forums-role" id="bbp-forums-role">
<?php if ( ! empty( $user_role ) ) : ?>
<option value=""><?php esc_html_e( '— No role for these forums —', 'bbpress' ); ?></option>
<?php else : ?>
<option value="" selected="selected"><?php esc_html_e( '— No role for these forums —', 'bbpress' ); ?></option>
<?php endif; ?>
<?php foreach ( $dynamic_roles as $role => $details ) : ?>
<option <?php selected( $user_role, $role ); ?> value="<?php echo esc_attr( $role ); ?>"><?php echo bbp_translate_user_role( $details['name'] ); ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
</tbody>
</table>
<?php
}
/**
* Add bulk forums role dropdown to the WordPress users table
*
* @since 2.2.0 bbPress (r4360)
* @since 2.6.0 bbPress (r6055) Introduced the `$which` parameter.
*
* @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
*/
public static function user_role_bulk_dropdown( $which ) {
// Remove the bottom list table "change forum role" dropdown from WordPress < 4.6.
// See https://bbpress.trac.wordpress.org/ticket/2906.
if ( bbp_get_major_wp_version() < 4.6 ) {
remove_action( 'restrict_manage_users', array( __CLASS__, 'user_role_bulk_dropdown' ) );
}
// Bail if current user cannot promote users
if ( ! current_user_can( 'promote_users' ) ) {
return;
}
// Get the roles
$dynamic_roles = bbp_get_dynamic_roles();
// Only keymasters can set other keymasters
if ( ! bbp_is_user_keymaster() ) {
unset( $dynamic_roles[ bbp_get_keymaster_role() ] );
}
$select_id = 'bottom' === $which ? 'bbp-new-role2' : 'bbp-new-role';
$button_id = 'bottom' === $which ? 'bbp-change-role2' : 'bbp-change-role';
?>
<label class="screen-reader-text" for="<?php echo $select_id; ?>"><?php esc_html_e( 'Change forum role to…', 'bbpress' ) ?></label>
<select name="<?php echo $select_id; ?>" id="<?php echo $select_id; ?>" style="display:inline-block; float:none;">
<option value=''><?php esc_html_e( 'Change forum role to…', 'bbpress' ) ?></option>
<?php foreach ( $dynamic_roles as $role => $details ) : ?>
<option value="<?php echo esc_attr( $role ); ?>"><?php echo bbp_translate_user_role( $details['name'] ); ?></option>
<?php endforeach; ?>
</select><?php submit_button( esc_html__( 'Change', 'bbpress' ), 'secondary', $button_id, false );
wp_nonce_field( 'bbp-bulk-users', 'bbp-bulk-users-nonce' );
}
/**
* Process bulk dropdown form submission from the WordPress Users
* Table
*
* @since 2.2.0 bbPress (r4365)
*
* @return bool Always false
*/
public function user_role_bulk_change() {
// Bail if no users specified
if ( empty( $_REQUEST['users'] ) ) {
return;
}
// Bail if this isn't a bbPress action
if ( ( empty( $_REQUEST['bbp-new-role'] ) && empty( $_REQUEST['bbp-new-role2'] ) ) || ( empty( $_REQUEST['bbp-change-role'] ) && empty( $_REQUEST['bbp-change-role2'] ) ) ) {
return;
}
$new_role = false;
if ( ! empty( $_REQUEST['bbp-change-role2'] ) && ! empty( $_REQUEST['bbp-new-role2'] ) ) {
$new_role = $_REQUEST['bbp-new-role2'];
} elseif ( ! empty( $_REQUEST['bbp-change-role'] ) && ! empty( $_REQUEST['bbp-new-role'] ) ) {
$new_role = $_REQUEST['bbp-new-role'];
}
// Check that the new role exists
$dynamic_roles = bbp_get_dynamic_roles();
if ( ! $new_role || empty( $dynamic_roles[ $new_role ] ) ) {
return;
}
// Bail if nonce check fails
check_admin_referer( 'bbp-bulk-users', 'bbp-bulk-users-nonce' );
// Bail if current user cannot promote users
if ( ! current_user_can( 'promote_users' ) ) {
return;
}
// Get the current user ID
$current_user_id = (int) bbp_get_current_user_id();
// Run through user ids
foreach ( (array) $_REQUEST['users'] as $user_id ) {
$user_id = (int) $user_id;
// Don't let a user change their own role
if ( $user_id === $current_user_id ) {
continue;
}
// Set up user and role data
$user_role = bbp_get_user_role( $user_id );
$new_role = sanitize_text_field( $new_role );
// Only keymasters can set other keymasters
if ( in_array( bbp_get_keymaster_role(), array( $user_role, $new_role ), true ) && ! bbp_is_user_keymaster() ) {
continue;
}
// Set the new forums role
if ( $new_role !== $user_role ) {
bbp_set_user_role( $user_id, $new_role );
}
}
}
/**
* Add a "View" link for each user
*
* @since 2.6.0 bbPress (r6502)
*
* @param array $actions
* @param WP_User $user
*
* @return array Actions with 'view' link added to them
*/
public function user_row_actions( $actions = array(), $user = false ) {
// Reverse
$actions = array_reverse( $actions );
// Add the view action link
$actions['view'] = '<a href="' . esc_url( bbp_get_user_profile_url( $user->ID ) ) . '" class="bbp-user-profile-link">' . esc_html__( 'View', 'bbpress' ) . '</a>';
// Re-reverse
return array_reverse( $actions );
}
/**
* Add Forum Role column to the WordPress Users table, and change the
* core role title to "Site Role"
*
* @since 2.2.0 bbPress (r4337)
*
* @param array $columns Users table columns
* @return array $columns
*/
public static function user_role_column( $columns = array() ) {
// New title for old Role column
$columns['role'] = esc_html__( 'Site Role', 'bbpress' );
// New column
$bbp_user_role = array(
'bbp_user_role' => esc_html__( 'Forum Role', 'bbpress' )
);
// Make sure role columns are next to each other
$role_pos = array_search( 'role', array_keys( $columns ), true );
$result = array_slice( $columns, 0, $role_pos + 1 );
$result = array_merge( $result, $bbp_user_role );
// Merge and return
return array_merge( $result, array_slice( $columns, $role_pos ) );
}
/**
* Return user's forums role for display in the WordPress Users list table
*
* @since 2.2.0 bbPress (r4337)
*
* @param string $retval
* @param string $column_name
* @param int $user_id
*
* @return string Displayable bbPress user role
*/
public static function user_role_row( $retval = '', $column_name = '', $user_id = 0 ) {
// User role column
if ( 'bbp_user_role' === $column_name ) {
// Get the users role
$user_role = bbp_get_user_role( $user_id );
$retval = false;
// Translate user role for display
if ( ! empty( $user_role ) ) {
$roles = bbp_get_dynamic_roles();
$retval = bbp_translate_user_role( $roles[ $user_role ]['name'] );
}
}
// Pass retval through
return $retval;
}
/**
* Filter the list of roles included in the WordPress site role list
*
* Ensures forum roles are only displayed under the Forum Role list in the
* WordPress Users list table
*
* @since 2.6.0 bbPress (r6051)
*
* @return array $roles
*/
public static function user_role_list_filter( $roles, $user ) {
// Get the users role
$user_role = bbp_get_user_role( $user->ID );
if ( ! empty( $user_role ) ) {
unset( $roles[ $user_role ] );
}
return $roles;
}
}
new BBP_Users_Admin();
endif; // class exists