Changeset 11089
- Timestamp:
- 09/13/2016 05:35:42 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/classes/class-bp-groups-component.php
r11080 r11089 252 252 } else { 253 253 $this->current_group->is_visible = false; 254 }255 256 // If this is a private or hidden group, does the user have access?257 if ( 'private' == $this->current_group->status || 'hidden' == $this->current_group->status ) {258 if ( $this->current_group->is_user_member && is_user_logged_in() || bp_current_user_can( 'bp_moderate' ) ) {259 $this->current_group->user_has_access = true;260 } else {261 $this->current_group->user_has_access = false;262 }263 } else {264 $this->current_group->user_has_access = true;265 254 } 266 255 -
trunk/src/bp-groups/classes/class-bp-groups-group.php
r11087 r11089 114 114 * @var bool 115 115 */ 116 p ublic$is_member;116 protected $is_member; 117 117 118 118 /** … … 122 122 * @var bool 123 123 */ 124 p ublic$is_invited;124 protected $is_invited; 125 125 126 126 /** … … 130 130 * @var bool 131 131 */ 132 p ublic$is_pending;132 protected $is_pending; 133 133 134 134 /** … … 146 146 * @var bool 147 147 */ 148 p ublic$user_has_access;148 protected $user_has_access; 149 149 150 150 /** … … 165 165 * @param array $args { 166 166 * Array of optional arguments. 167 * @type bool $populate_extras Whether to fetch "extra" data about the group 168 * (group admins/mods, access for the current user). 169 * Default: false. 167 * @type bool $populate_extras Deprecated. 170 168 * } 171 169 */ 172 170 public function __construct( $id = null, $args = array() ) { 173 $this->args = wp_parse_args( $args, array(174 'populate_extras' => false,175 ) );176 177 171 if ( !empty( $id ) ) { 178 172 $this->id = (int) $id; … … 217 211 $this->enable_forum = (int) $group->enable_forum; 218 212 $this->date_created = $group->date_created; 219 220 // Are we getting extra group data?221 if ( ! empty( $this->args['populate_extras'] ) ) {222 223 // Set user-specific data.224 $user_id = bp_loggedin_user_id();225 $this->is_member = groups_is_user_member( $user_id, $this->id );226 $this->is_invited = groups_check_user_has_invite( $user_id, $this->id );227 $this->is_pending = groups_check_for_membership_request( $user_id, $this->id );228 229 // If this is a private or hidden group, does the current user have access?230 if ( ( 'private' === $this->status ) || ( 'hidden' === $this->status ) ) {231 232 // Assume user does not have access to hidden/private groups.233 $this->user_has_access = false;234 235 // Group members or community moderators have access.236 if ( ( $this->is_member && is_user_logged_in() ) || bp_current_user_can( 'bp_moderate' ) ) {237 $this->user_has_access = true;238 }239 } else {240 $this->user_has_access = true;241 }242 }243 213 } 244 214 … … 425 395 return $this->get_mods(); 426 396 397 case 'is_member' : 398 return $this->get_is_member(); 399 400 case 'is_invited' : 401 return groups_check_user_has_invite( bp_loggedin_user_id(), $this->id ); 402 403 case 'is_pending' : 404 return groups_check_for_membership_request( bp_loggedin_user_id(), $this->id ); 405 406 case 'user_has_access' : 407 return $this->get_user_has_access(); 408 427 409 default : 428 410 break; … … 445 427 case 'last_activity' : 446 428 case 'total_member_count' : 429 case 'admins' : 430 case 'mods' : 447 431 return true; 448 432 449 433 default : 450 434 return false; 435 } 436 } 437 438 /** 439 * Magic setter. 440 * 441 * Used to maintain backward compatibility for properties that are now 442 * accessible only via magic method. 443 * 444 * @since 2.7.0 445 * 446 * @param string $key Property name. 447 */ 448 public function __set( $key, $value ) { 449 switch ( $key ) { 450 case 'user_has_access' : 451 return $this->user_has_access = (bool) $value; 451 452 } 452 453 } … … 529 530 $this->admins = $admin_objects; 530 531 $this->mods = $mod_objects; 532 } 533 534 /** 535 * Checks whether the logged-in user is a member of the group. 536 * 537 * @since 2.7.0 538 * 539 * @return bool 540 */ 541 protected function get_is_member() { 542 if ( isset( $this->is_member ) ) { 543 return $this->is_member; 544 } 545 546 $this->is_member = groups_is_user_member( bp_loggedin_user_id(), $this->id ); 547 return $this->is_member; 548 } 549 550 /** 551 * Checks whether the logged-in user has access to the group. 552 * 553 * @since 2.7.0 554 * 555 * @return bool 556 */ 557 protected function get_user_has_access() { 558 if ( isset( $this->user_has_access ) ) { 559 return $this->user_has_access; 560 } 561 562 if ( ( 'private' === $this->status ) || ( 'hidden' === $this->status ) ) { 563 564 // Assume user does not have access to hidden/private groups. 565 $this->user_has_access = false; 566 567 // Group members or community moderators have access. 568 if ( ( is_user_logged_in() && $this->get_is_member() ) || bp_current_user_can( 'bp_moderate' ) ) { 569 $this->user_has_access = true; 570 } 571 } else { 572 $this->user_has_access = true; 573 } 574 575 return $this->user_has_access; 531 576 } 532 577 -
trunk/tests/phpunit/testcases/groups/class-bp-groups-group.php
r11087 r11089 1300 1300 1301 1301 /** 1302 * @ticket BP5451 1303 */ 1304 public function test_is_member_property() { 1305 $users = $this->factory->user->create_many( 2 ); 1306 1307 $g = $this->factory->group->create( array( 1308 'creator_id' => $users[0], 1309 ) ); 1310 1311 wp_set_current_user( $users[1] ); 1312 1313 $group_a = new BP_Groups_Group( $g ); 1314 $this->assertFalse( $group_a->is_member ); 1315 1316 $this->add_user_to_group( $users[1], $g ); 1317 $group_b = new BP_Groups_Group( $g ); 1318 $this->assertFalse( $group_b->is_member ); 1319 } 1320 1321 /** 1322 * @ticket BP5451 1323 */ 1324 public function test_is_invited_property() { 1325 $users = $this->factory->user->create_many( 2 ); 1326 1327 $g = $this->factory->group->create( array( 1328 'creator_id' => $users[0], 1329 ) ); 1330 1331 wp_set_current_user( $users[1] ); 1332 1333 $group_a = new BP_Groups_Group( $g ); 1334 $this->assertFalse( $group_a->is_invited ); 1335 1336 $this->add_user_to_group( $users[1], $g, array( 1337 'invite_sent' => 1, 1338 'inviter_id' => $users[0], 1339 'is_confirmed' => 0, 1340 ) ); 1341 $group_b = new BP_Groups_Group( $g ); 1342 $this->assertFalse( $group_b->is_invited ); 1343 } 1344 1345 /** 1346 * @ticket BP5451 1347 */ 1348 public function test_is_pending_property() { 1349 $users = $this->factory->user->create_many( 2 ); 1350 1351 $g = $this->factory->group->create( array( 1352 'creator_id' => $users[0], 1353 ) ); 1354 1355 wp_set_current_user( $users[1] ); 1356 1357 $group_a = new BP_Groups_Group( $g ); 1358 $this->assertFalse( $group_a->is_pending ); 1359 1360 $this->add_user_to_group( $users[1], $g, array( 1361 'is_confirmed' => 0, 1362 'invite_sent' => 0, 1363 'inviter_id' => 0, 1364 ) ); 1365 $group_b = new BP_Groups_Group( $g ); 1366 $this->assertFalse( $group_b->is_pending ); 1367 } 1368 1369 1370 /** 1302 1371 * @group group_types 1303 1372 */ -
trunk/tests/phpunit/testcases/groups/functions.php
r9819 r11089 614 614 615 615 /** 616 * @group groups_get_group617 * @group cache618 */619 public function test_groups_get_group_cache_different_users() {620 $g = $this->factory->group->create();621 $u1 = $this->factory->user->create();622 $u2 = $this->factory->user->create();623 $this->add_user_to_group( $u1, $g );624 625 $old_user = get_current_user_id();626 $this->set_current_user( $u1 );627 628 $group1 = groups_get_group( array( 'group_id' => $g, 'populate_extras' => true ) );629 630 $this->set_current_user( $u2 );631 632 $group2 = groups_get_group( array( 'group_id' => $g, 'populate_extras' => true ) );633 634 $this->assertNotEquals( $group1, $group2 );635 636 $this->set_current_user( $old_user );637 }638 639 /**640 616 * @group counts 641 617 */
Note: See TracChangeset
for help on using the changeset viewer.