Skip to:
Content

BuddyPress.org

Changeset 12430


Ignore:
Timestamp:
08/12/2019 08:43:10 PM (6 years ago)
Author:
dcavins
Message:

Update BP_Groups_Group for Invitation API compatibility.

  • Update logic in BP_Groups_Group to avoid direct table lookups and instead use request and invitation functions to fetch and delete invitations.

See #6210.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/classes/class-bp-groups-group.php

    r12426 r12430  
    772772     */
    773773    public static function get_invites( $user_id, $group_id, $sent = null ) {
    774         global $wpdb;
    775 
    776         $bp  = buddypress();
    777         $sql = $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d and is_confirmed = 0 AND inviter_id = %d", $group_id, $user_id );
    778 
    779         // Query for a specific invite sent status.
    780         if ( ! is_null( $sent ) ) {
    781             $sql .= $wpdb->prepare( ' AND invite_sent = %d', $sent );
    782         }
    783 
    784         return $wpdb->get_col( $sql );
     774        if ( 0 === $sent ) {
     775            $sent_arg = 'draft';
     776        } else if ( 1 === $sent ) {
     777            $sent_arg = 'sent';
     778        } else {
     779            $sent_arg = 'all';
     780        }
     781
     782        return groups_get_invites( array(
     783            'item_id'     => $group_id,
     784            'inviter_id'  => $user_id,
     785            'invite_sent' => $sent_arg,
     786            'fields'      => 'user_ids',
     787        ) );
    785788    }
    786789
     
    960963     */
    961964    public static function get_membership_requests( $group_id, $limit = null, $page = null ) {
    962         global $wpdb;
    963 
    964         if ( !empty( $limit ) && !empty( $page ) ) {
    965             $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
    966         }
    967 
    968         $bp = buddypress();
    969 
    970         $paged_requests = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0{$pag_sql}", $group_id ) );
    971         $total_requests = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) );
    972 
    973         return array( 'requests' => $paged_requests, 'total' => $total_requests );
     965        $args = array(
     966            'item_id' => $group_id
     967        );
     968        if ( $limit ) {
     969            $args['per_page'] = $limit;
     970        }
     971        if ( $page ) {
     972            $args['page'] = $page;
     973        }
     974
     975        $requests = groups_get_requests( $args );
     976        $total    = count( groups_get_membership_requested_user_ids( $group_id ) );
     977
     978        return array( 'requests' => $requests, 'total' => $total );
    974979    }
    975980
     
    16381643     */
    16391644    public static function delete_all_invites( $group_id ) {
    1640         global $wpdb;
    1641 
    1642         $bp = buddypress();
    1643 
    1644         return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE group_id = %d AND invite_sent = 1", $group_id ) );
     1645        if ( empty( $group_id ) ) {
     1646            return false;
     1647        }
     1648
     1649        $invites_class = new BP_Groups_Invitation_Manager();
     1650
     1651        return $invites_class->delete( array(
     1652            'item_id' => $group_id,
     1653        ) );
    16451654    }
    16461655
  • trunk/tests/phpunit/testcases/groups/class-bp-groups-group.php

    r12328 r12430  
    13731373    public function test_get_group_extras_invited() {
    13741374        $u = self::factory()->user->create();
    1375         $g = self::factory()->group->create();
    1376 
    1377         $invite                = new BP_Groups_Member;
    1378         $invite->group_id      = $g;
    1379         $invite->user_id       = $u;
    1380         $invite->date_modified = bp_core_current_time();
    1381         $invite->invite_sent   = true;
    1382         $invite->is_confirmed  = false;
    1383         $invite->save();
     1375        $u2 = self::factory()->user->create();
     1376        $g = self::factory()->group->create( array( 'creator_id' => $u2, 'status' => 'private' ) );
     1377
     1378        // Outstanding invitations should be left intact.
     1379        groups_invite_user( array(
     1380            'user_id' => $u,
     1381            'group_id' => $g,
     1382            'inviter_id' => $u2,
     1383            'send_invite' => 1,
     1384        ) );
    13841385
    13851386        $paged_groups = array();
     
    14121413    public function test_get_group_extras_pending() {
    14131414        $u = self::factory()->user->create();
    1414         $g = self::factory()->group->create();
    1415 
    1416         $invite                = new BP_Groups_Member;
    1417         $invite->group_id      = $g;
    1418         $invite->user_id       = $u;
    1419         $invite->date_modified = bp_core_current_time();
    1420         $invite->invite_sent   = false;
    1421         $invite->is_confirmed  = false;
    1422         $invite->save();
     1415        $g = self::factory()->group->create( array( 'status' => 'private' ) );
     1416
     1417        // Create membership request
     1418        groups_send_membership_request( array(
     1419            'user_id'       => $u,
     1420            'group_id'      => $g,
     1421        ) );
    14231422
    14241423        $paged_groups = array();
     
    16071606        $this->assertFalse( $group_a->is_invited );
    16081607
    1609         $this->add_user_to_group( $users[1], $g, array(
    1610             'invite_sent' => 1,
     1608        groups_invite_user( array(
     1609            'user_id'    => $users[1],
     1610            'group_id'   => $g,
    16111611            'inviter_id' => $users[0],
    1612             'is_confirmed' => 0,
    1613         ) );
     1612            'send_invite' => 1
     1613        ) );
     1614
    16141615        $group_b = new BP_Groups_Group( $g );
    16151616        $this->assertFalse( $group_b->is_invited );
     
    16311632        $this->assertFalse( $group_a->is_pending );
    16321633
    1633         $this->add_user_to_group( $users[1], $g, array(
    1634             'is_confirmed' => 0,
    1635             'invite_sent' => 0,
    1636             'inviter_id' => 0,
    1637         ) );
     1634        groups_send_membership_request( array(
     1635            'user_id' => $users[1],
     1636            'group_id' => $g
     1637        ) );
     1638
    16381639        $group_b = new BP_Groups_Group( $g );
    16391640        $this->assertFalse( $group_b->is_pending );
Note: See TracChangeset for help on using the changeset viewer.