Changeset 12432
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/classes/class-bp-group-member-query.php
r11805 r12432 232 232 $sql['order'] = 'first_joined' === $this->query_vars['type'] ? 'ASC' : 'DESC'; 233 233 234 $this->group_member_ids = $wpdb->get_col( "{$sql['select']} {$sql['where']} {$sql['orderby']} {$sql['order']}" ); 234 $group_member_ids = $wpdb->get_col( "{$sql['select']} {$sql['where']} {$sql['orderby']} {$sql['order']}" ); 235 236 $invited_member_ids = array(); 237 238 // If appropriate, fetch invitations and add them to the results. 239 if ( ! $is_confirmed || ! is_null( $this->query_vars['invite_sent'] ) || ! is_null( $this->query_vars['inviter_id'] ) ) { 240 $invite_args = array( 241 'item_id' => $this->query_vars['group_id'], 242 'fields' => 'user_ids', 243 'type' => 'all', 244 ); 245 246 if ( ! is_null( $this->query_vars['invite_sent'] ) ) { 247 $invite_args['invite_sent'] = ! empty( $this->query_vars['invite_sent'] ) ? 'sent' : 'draft'; 248 } 249 250 // If inviter_id. 251 if ( ! is_null( $this->query_vars['inviter_id'] ) ) { 252 $inviter_id = $this->query_vars['inviter_id']; 253 254 // Empty: inviter_id = 0. (pass false, 0, or empty array). 255 if ( empty( $inviter_id ) ) { 256 $invite_args['type'] = 'request'; 257 258 /* 259 * The string 'any' matches any non-zero value (inviter_id != 0). 260 * These are invitations, not requests. 261 */ 262 } elseif ( 'any' === $inviter_id ) { 263 $invite_args['type'] = 'invite'; 264 265 // Assume that a list of inviter IDs has been passed. 266 } else { 267 $invite_args['type'] = 'invite'; 268 // Parse and sanitize. 269 $inviter_ids = wp_parse_id_list( $inviter_id ); 270 if ( ! empty( $inviter_ids ) ) { 271 $invite_args['inviter_id'] = $inviter_ids; 272 } 273 } 274 } 275 276 /* 277 * If first_joined is the "type" of query, sort the oldest 278 * requests and invitations to the top. 279 */ 280 if ( 'first_joined' === $this->query_vars['type'] ) { 281 $invite_args['order_by'] = 'date_modified'; 282 $invite_args['sort_order'] = 'ASC'; 283 } 284 285 $invited_member_ids = groups_get_invites( $invite_args ); 286 } 287 288 $this->group_member_ids = array_merge( $group_member_ids, $invited_member_ids ); 235 289 236 290 /** … … 331 385 } 332 386 387 // Add accurate invitation info from the invitations table. 388 $invites = groups_get_invites( array( 389 'user_id' => $user_ids_sql, 390 'item_id' => $this->query_vars['group_id'], 391 'type' => 'all', 392 ) ); 393 foreach ( $invites as $invite ) { 394 if ( isset( $this->results[ $invite->user_id ] ) ) { 395 $this->results[ $invite->user_id ]->comments = $invite->content; 396 $this->results[ $invite->user_id ]->is_confirmed = 0; 397 $this->results[ $invite->user_id ]->invitation_id = $invite->id; 398 $this->results[ $invite->user_id ]->invite_sent = (int) $invite->invite_sent; 399 $this->results[ $invite->user_id ]->inviter_id = $invite->inviter_id; 400 401 // Backfill properties that are not being set above. 402 if ( ! isset( $this->results[ $invite->user_id ]->user_id ) ) { 403 $this->results[ $invite->user_id ]->user_id = $invite->user_id; 404 } 405 if ( ! isset( $this->results[ $invite->user_id ]->is_admin ) ) { 406 $this->results[ $invite->user_id ]->is_admin = 0; 407 } 408 if ( ! isset( $this->results[ $invite->user_id ]->is_mod ) ) { 409 $this->results[ $invite->user_id ]->is_mod = 0; 410 } 411 if ( ! isset( $this->results[ $invite->user_id ]->is_banned ) ) { 412 $this->results[ $invite->user_id ]->is_banned = 0; 413 } 414 if ( ! isset( $this->results[ $invite->user_id ]->date_modified ) ) { 415 $this->results[ $invite->user_id ]->date_modified = $invite->date_modified; 416 } 417 if ( ! isset( $this->results[ $invite->user_id ]->user_title ) ) { 418 $this->results[ $invite->user_id ]->user_title = ''; 419 } 420 if ( ! isset( $this->results[ $invite->user_id ]->membership_id ) ) { 421 $this->results[ $invite->user_id ]->membership_id = 0; 422 } 423 } 424 } 425 333 426 // Don't filter other BP_User_Query objects on the same page. 334 427 remove_action( 'bp_user_query_populate_extras', array( $this, 'populate_group_member_extras' ), 10 ); -
trunk/tests/phpunit/testcases/groups/class-bp-group-member-query.php
r11737 r12432 313 313 314 314 public function test_confirmed_members() { 315 $g = self::factory()->group->create(); 316 $u1 = self::factory()->user->create(); 317 $u2 = self::factory()->user->create(); 318 $time = time(); 319 320 $this->add_user_to_group( $u1, $g, array( 321 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 322 'is_confirmed' => 0, 323 ) ); 324 325 $this->add_user_to_group( $u2, $g, array( 315 $u = self::factory()->user->create(); 316 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $u ) ); 317 $u1 = self::factory()->user->create(); 318 $u2 = self::factory()->user->create(); 319 $u3 = self::factory()->user->create(); 320 $time = time(); 321 322 groups_send_membership_request( array( 323 'user_id' => $u1, 324 'group_id' => $g 325 ) ); 326 327 groups_invite_user( array( 328 'user_id' => $u2, 329 'group_id' => $g, 330 'inviter_id' => $u, 331 'send_invite' => 1 332 ) ); 333 334 $this->add_user_to_group( $u3, $g, array( 326 335 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 327 336 'is_confirmed' => 1, … … 333 342 334 343 $ids = wp_parse_id_list( array_keys( $query_members->results ) ); 335 $this->assertEquals( array( $u 2), $ids );344 $this->assertEquals( array( $u3 ), $ids ); 336 345 } 337 346 … … 595 604 */ 596 605 public function test_with_invite_sent_true() { 597 $g = self::factory()->group->create(); 598 $u1 = self::factory()->user->create(); 599 $u2 = self::factory()->user->create(); 600 $time = time(); 601 602 $this->add_user_to_group( $u1, $g, array( 603 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 604 'is_confirmed' => 0, 605 'invite_sent' => 0, 606 ) ); 607 608 $this->add_user_to_group( $u2, $g, array( 609 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 610 'is_confirmed' => 0, 611 'invite_sent' => 1, 606 $u = self::factory()->user->create(); 607 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $u ) ); 608 $u1 = self::factory()->user->create(); 609 $u2 = self::factory()->user->create(); 610 611 groups_invite_user( array( 612 'user_id' => $u1, 613 'group_id' => $g, 614 'inviter_id' => $u, 615 'send_invite' => 0 616 ) ); 617 618 groups_invite_user( array( 619 'user_id' => $u2, 620 'group_id' => $g, 621 'inviter_id' => $u, 622 'send_invite' => 1 612 623 ) ); 613 624 … … 626 637 */ 627 638 public function test_with_invite_sent_false() { 628 $g = self::factory()->group->create(); 629 $u1 = self::factory()->user->create(); 630 $u2 = self::factory()->user->create(); 631 $time = time(); 632 633 $this->add_user_to_group( $u1, $g, array( 634 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 635 'is_confirmed' => 0, 636 'invite_sent' => 0, 637 ) ); 638 639 $this->add_user_to_group( $u2, $g, array( 640 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 641 'is_confirmed' => 0, 642 'invite_sent' => 1, 639 $u = self::factory()->user->create(); 640 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $u ) ); 641 $u1 = self::factory()->user->create(); 642 $u2 = self::factory()->user->create(); 643 644 groups_invite_user( array( 645 'user_id' => $u1, 646 'group_id' => $g, 647 'inviter_id' => $u, 648 'send_invite' => 0 649 ) ); 650 651 groups_invite_user( array( 652 'user_id' => $u2, 653 'group_id' => $g, 654 'inviter_id' => $u, 655 'send_invite' => 1 643 656 ) ); 644 657 … … 657 670 */ 658 671 public function test_with_inviter_id_false() { 659 $g = self::factory()->group->create(); 660 $u1 = self::factory()->user->create(); 661 $u2 = self::factory()->user->create(); 662 $time = time(); 663 664 $this->add_user_to_group( $u1, $g, array( 665 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 666 'inviter_id' => 0, 667 ) ); 668 669 $this->add_user_to_group( $u2, $g, array( 670 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 671 'inviter_id' => 1, 672 $u = self::factory()->user->create(); 673 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $u ) ); 674 $u1 = self::factory()->user->create(); 675 $u2 = self::factory()->user->create(); 676 677 groups_send_membership_request( array( 678 'user_id' => $u1, 679 'group_id' => $g 680 ) ); 681 682 groups_invite_user( array( 683 'user_id' => $u2, 684 'group_id' => $g, 685 'inviter_id' => $u, 686 'send_invite' => 1 672 687 ) ); 673 688 … … 685 700 */ 686 701 public function test_with_inviter_id_specific() { 687 $g = self::factory()->group->create(); 702 $a1 = self::factory()->user->create(); 703 $a2 = self::factory()->user->create(); 704 $a3 = self::factory()->user->create(); 705 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $a1 ) ); 706 $this->add_user_to_group( $a2, $g, array( 'is_admin' => 1 ) ); 707 $this->add_user_to_group( $a3, $g, array( 'is_admin' => 1 ) ); 708 688 709 $u1 = self::factory()->user->create(); 689 710 $u2 = self::factory()->user->create(); 690 711 $u3 = self::factory()->user->create(); 691 712 $u4 = self::factory()->user->create(); 692 $time = time(); 693 694 $this->add_user_to_group( $u1, $g, array( 695 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 696 'inviter_id' => 0, 697 ) ); 698 699 $this->add_user_to_group( $u2, $g, array( 700 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 200 ), 701 'inviter_id' => 1, 702 ) ); 703 704 $this->add_user_to_group( $u3, $g, array( 705 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 300 ), 706 'inviter_id' => 6, 707 ) ); 708 709 $this->add_user_to_group( $u4, $g, array( 710 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 400 ), 711 'inviter_id' => 2, 712 ) ); 713 714 $query_members = new BP_Group_Member_Query( array( 715 'group_id' => $g, 716 'inviter_id' => array( 2, 6 ), 717 ) ); 718 719 $ids = wp_parse_id_list( array_keys( $query_members->results ) ); 720 $this->assertEquals( array( $u3, $u4 ), $ids ); 713 714 groups_send_membership_request( array( 715 'user_id' => $u1, 716 'group_id' => $g 717 ) ); 718 719 groups_invite_user( array( 720 'user_id' => $u2, 721 'group_id' => $g, 722 'inviter_id' => $a1, 723 'send_invite' => 1 724 ) ); 725 groups_invite_user( array( 726 'user_id' => $u3, 727 'group_id' => $g, 728 'inviter_id' => $a2, 729 'send_invite' => 1 730 ) ); 731 groups_invite_user( array( 732 'user_id' => $u4, 733 'group_id' => $g, 734 'inviter_id' => $a3, 735 'send_invite' => 1 736 ) ); 737 738 $query_members = new BP_Group_Member_Query( array( 739 'group_id' => $g, 740 'inviter_id' => array( $a1, $a3 ), 741 ) ); 742 743 $ids = wp_parse_id_list( array_keys( $query_members->results ) ); 744 $this->assertEquals( array( $u2, $u4 ), $ids ); 721 745 } 722 746 … … 725 749 */ 726 750 public function test_with_inviter_id_any() { 727 $g = self::factory()->group->create(); 751 $a1 = self::factory()->user->create(); 752 $a2 = self::factory()->user->create(); 753 $a3 = self::factory()->user->create(); 754 $g = self::factory()->group->create( array( 'status' => 'private', 'creator_id' => $a1 ) ); 755 $this->add_user_to_group( $a2, $g, array( 'is_admin' => 1 ) ); 756 $this->add_user_to_group( $a3, $g, array( 'is_admin' => 1 ) ); 757 728 758 $u1 = self::factory()->user->create(); 729 759 $u2 = self::factory()->user->create(); 730 760 $u3 = self::factory()->user->create(); 731 761 $u4 = self::factory()->user->create(); 732 $time = time(); 733 734 $this->add_user_to_group( $u1, $g, array( 735 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ), 736 'inviter_id' => 0, 737 ) ); 738 739 $this->add_user_to_group( $u2, $g, array( 740 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 200 ), 741 'inviter_id' => 1, 742 ) ); 743 744 $this->add_user_to_group( $u3, $g, array( 745 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 300 ), 746 'inviter_id' => 6, 747 ) ); 748 749 $this->add_user_to_group( $u4, $g, array( 750 'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 400 ), 751 'inviter_id' => 2, 762 763 groups_send_membership_request( array( 764 'user_id' => $u1, 765 'group_id' => $g 766 ) ); 767 768 groups_invite_user( array( 769 'user_id' => $u2, 770 'group_id' => $g, 771 'inviter_id' => $a1, 772 'send_invite' => 1 773 ) ); 774 groups_invite_user( array( 775 'user_id' => $u3, 776 'group_id' => $g, 777 'inviter_id' => $a2, 778 'send_invite' => 1 779 ) ); 780 groups_invite_user( array( 781 'user_id' => $u4, 782 'group_id' => $g, 783 'inviter_id' => $a3, 784 'send_invite' => 1 752 785 ) ); 753 786
Note: See TracChangeset
for help on using the changeset viewer.