Ticket #7658: 7658.01.diff
File 7658.01.diff, 7.1 KB (added by , 10 months ago) |
---|
-
src/bp-core/classes/class-bp-core.php
diff --git src/bp-core/classes/class-bp-core.php src/bp-core/classes/class-bp-core.php index 396d39459..71e9c16d7 100644
class BP_Core extends BP_Component { 239 239 $current_user = wp_get_current_user(); 240 240 241 241 // The user ID of the user who is currently logged in. 242 $bp->loggedin_user = new stdClass; 243 $bp->loggedin_user->id = isset( $current_user->ID ) ? $current_user->ID : 0; 242 $bp->loggedin_user = new BP_LoggedIn_User(); 244 243 245 244 /** Avatars ********************************************************** 246 245 */ -
new file src/bp-core/classes/class-bp-loggedin-user.php
diff --git src/bp-core/classes/class-bp-loggedin-user.php src/bp-core/classes/class-bp-loggedin-user.php new file mode 100644 index 000000000..65eb38ae1
- + 1 <?php 2 /** 3 * Core component classes. 4 * 5 * @package BuddyPress 6 * @subpackage Core 7 * @since 14.0.0 8 */ 9 10 // Exit if accessed directly. 11 defined( 'ABSPATH' ) || exit; 12 13 /** 14 * Fetch an object which represents the logged-in user. 15 * 16 * The values are dynamic--they refer to the WordPress current user, 17 * which may change as actions and hooks are run. 18 * For example: The user may look logged in at the beginning of a poorly 19 * authenticated WP REST API request, but will be de-authenticated 20 * at `rest_cookie_check_errors()` and then would no longer be considered to 21 * be logged in. 22 * 23 * @property-read int $id The logged-in user's ID. 24 * @property-read array $userdata The logged-in user's userdata. 25 * @property-read bool $is_super_admin Is the logged-in user a super admin? 26 * @property-read bool $is_site_admin Is the logged-in user a site admin? 27 */ 28 class BP_LoggedIn_User { 29 30 /** 31 * The ID of the logged-in user. 32 * 33 * @since 14.0.0 34 * @var int 35 */ 36 protected int $id; 37 38 /** 39 * The logged-in user's data from the matching wp_users row. 40 * 41 * @since 14.0.0 42 * @var array 43 */ 44 protected $userdata = array(); 45 46 /** 47 * Whether the logged-in user is a network admin or not. 48 * 49 * @since 14.0.0 50 * @var bool 51 */ 52 protected $is_super_admin = false; 53 54 /** 55 * Whether the logged-in user is a site admin or not. 56 * 57 * @since 14.0.0 58 * @var bool 59 */ 60 protected $is_site_admin = false; 61 62 /** 63 * The logged-in user's display name. 64 * 65 * @since 14.0.0 66 * @var string 67 */ 68 public $fullname = ''; 69 70 /** 71 * The logged-in user's profile URL. 72 * 73 * @since 14.0.0 74 * @var string 75 */ 76 public $domain = ''; 77 78 /** 79 * Constructor. 80 * 81 * Retrieves data for the currently logged-in user. 82 * 83 * @since 14.0.0 84 */ 85 public function __construct() { 86 $this->id = get_current_user_id(); 87 } 88 89 /** 90 * Magic getter. 91 * Provides custom logic for getting protected properties. 92 * 93 * @since 14.0.0 94 * 95 * @param string $key Property name. 96 * @return mixed 97 */ 98 public function __get( $key ) { 99 switch ( $key ) { 100 case 'id': 101 return get_current_user_id(); 102 103 case 'userdata': 104 return WP_User::get_data_by( 'id', get_current_user_id() ); 105 106 // case 'fullname': 107 // // @TODO: This is a departure from the current logic, but maybe is a good idea. 108 // return bp_core_get_user_displayname( get_current_user_id() ); 109 110 case 'is_super_admin': 111 case 'is_site_admin': 112 return is_super_admin( get_current_user_id() ); 113 114 default : 115 return isset( $this->{$key} ) ? $this->{$key} : null; 116 } 117 } 118 119 /** 120 * Magic issetter. 121 * 122 * Used to maintain backward compatibility for properties that are now 123 * accessible only via magic method. 124 * 125 * @since 14.0.0 126 * 127 * @param string $key Property name. 128 * @return bool 129 */ 130 public function __isset( $key ) { 131 switch ( $key ) { 132 case 'id' : 133 case 'userdata' : 134 // case 'fullname' : 135 case 'is_super_admin' : 136 case 'is_site_admin' : 137 return true; 138 139 default : 140 return isset( $this->{$key} ); 141 } 142 } 143 } 144 No newline at end of file -
src/bp-members/classes/class-bp-members-component.php
diff --git src/bp-members/classes/class-bp-members-component.php src/bp-members/classes/class-bp-members-component.php index 9da16b1a6..1b6c641fb 100644
class BP_Members_Component extends BP_Component { 236 236 /** Logged in user *************************************************** 237 237 */ 238 238 239 // The core userdata of the user who is currently logged in.240 $bp->loggedin_user->userdata = bp_core_get_core_userdata( $user_id );241 242 239 // Fetch the full name for the logged in user. 243 240 $bp->loggedin_user->fullname = isset( $bp->loggedin_user->userdata->display_name ) ? $bp->loggedin_user->userdata->display_name : ''; 244 241 245 // Hits the DB on single WP installs so get this separately.246 $bp->loggedin_user->is_super_admin = $bp->loggedin_user->is_site_admin = is_super_admin( $user_id );247 248 242 // The domain for the user currently logged in. eg: http://example.com/members/andy. 249 243 $bp->loggedin_user->domain = bp_members_get_user_url( $user_id ); 250 244 -
src/class-buddypress.php
diff --git src/class-buddypress.php src/class-buddypress.php index dfd3ea893..8b3bfa760 100644
class BuddyPress { 726 726 'BP_Recursive_Query' => 'core', 727 727 'BP_Suggestions' => 'core', 728 728 'BP_Theme_Compat' => 'core', 729 'BP_LoggedIn_User' => 'core', 729 730 'BP_User_Query' => 'core', 730 731 'BP_Walker_Category_Checklist' => 'core', 731 732 /** -
tests/phpunit/includes/testcase.php
diff --git tests/phpunit/includes/testcase.php tests/phpunit/includes/testcase.php index 676e64246..478282255 100644
class BP_UnitTestCase extends WP_UnitTestCase { 132 132 buddypress()->is_single_item = false; 133 133 buddypress()->current_user = new stdClass(); 134 134 buddypress()->displayed_user = new stdClass(); 135 buddypress()->loggedin_user = new stdClass();135 buddypress()->loggedin_user = new BP_LoggedIn_User; 136 136 buddypress()->pages = array(); 137 137 buddypress()->groups->types = array(); 138 138 … … class BP_UnitTestCase extends WP_UnitTestCase { 220 220 public static function set_current_user( $user_id ) { 221 221 $bp = buddypress(); 222 222 223 $bp->loggedin_user->id = $user_id;224 $bp->loggedin_user->fullname = bp_core_get_user_displayname( $user_id );225 $bp->loggedin_user->is_super_admin = $bp->loggedin_user->is_site_admin = is_super_admin( $user_id );226 $bp->loggedin_user->domain = bp_members_get_user_url( $user_id );227 $bp->loggedin_user->userdata = bp_core_get_core_userdata( $user_id );228 229 223 wp_set_current_user( $user_id ); 224 225 $bp->loggedin_user = new BP_LoggedIn_User(); 226 // Set the logged-in user parameters that aren't dynamic. 227 $bp->loggedin_user->domain = bp_members_get_user_url( $user_id ); 228 $bp->loggedin_user->fullname = bp_core_get_user_displayname( $user_id );; 230 229 } 231 230 232 231 public static function add_user_to_group( $user_id, $group_id, $args = array() ) {