Skip to:
Content

BuddyPress.org


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

Update BP_Groups_Member for Invitation API compatibility.

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

See #6210.

File:
1 edited

Legend:

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

    r12274 r12431  
    768768
    769769    /**
    770      * Get a user's outstanding group invitations.
     770     * Get group objects for groups that a user is currently invited to.
    771771     *
    772772     * @since 1.6.0
     
    785785     */
    786786    public static function get_invites( $user_id, $limit = false, $page = false, $exclude = false ) {
    787         global $wpdb;
    788 
    789         $pag_sql = ( !empty( $limit ) && !empty( $page ) ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ) : '';
    790 
    791         if ( !empty( $exclude ) ) {
    792             $exclude     = implode( ',', wp_parse_id_list( $exclude ) );
    793             $exclude_sql = " AND g.id NOT IN ({$exclude})";
    794         } else {
    795             $exclude_sql = '';
    796         }
    797 
    798         $bp = buddypress();
    799 
    800         $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d {$exclude_sql} ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) );
    801 
    802         return array( 'groups' => $paged_groups, 'total' => self::get_invite_count_for_user( $user_id ) );
     787        return groups_get_invites_for_user( $user_id, $limit, $page, $exclude );
    803788    }
    804789
     
    812797     */
    813798    public static function get_invite_count_for_user( $user_id = 0 ) {
    814         global $wpdb;
    815 
    816         $bp = buddypress();
    817 
    818         $count = wp_cache_get( $user_id, 'bp_group_invite_count' );
    819 
    820         if ( false === $count ) {
    821             $count = (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d", $user_id ) );
    822             wp_cache_set( $user_id, $count, 'bp_group_invite_count' );
    823         }
    824 
    825         return $count;
     799        return groups_get_invite_count_for_user( $user_id );
    826800    }
    827801
     
    863837        switch ( $r['type'] ) {
    864838            case 'pending_request' :
    865                 $sql['where'] = $wpdb->prepare( "user_id = %d AND is_confirmed = 0 AND inviter_id = 0", $user_id );
     839                return groups_get_requests( array(
     840                    'user_id'  => $user_id,
     841                    'page'     => $r['page'],
     842                    'per_page' => $r['per_page'],
     843                ) );
    866844            break;
    867845
    868846            case 'pending_received_invitation' :
    869                 $sql['where'] = $wpdb->prepare( "user_id = %d AND is_confirmed = 0 AND inviter_id != 0", $user_id );
     847                return groups_get_invites( array(
     848                    'user_id'  => $user_id,
     849                    'page'     => $r['page'],
     850                    'per_page' => $r['per_page'],
     851                ) );
    870852            break;
    871853
    872854            case 'pending_sent_invitation' :
    873                 $sql['where'] = $wpdb->prepare( "inviter_id = %d AND is_confirmed = 0", $user_id );
     855                return groups_get_invites( array(
     856                    'inviter_id'  => $user_id,
     857                    'page'        => $r['page'],
     858                    'per_page'    => $r['per_page'],
     859                ) );
    874860            break;
    875861
     
    913899     */
    914900    public static function check_has_invite( $user_id, $group_id, $type = 'sent' ) {
    915         global $wpdb;
    916 
    917         if ( empty( $user_id ) )
    918             return false;
    919 
    920         $bp  = buddypress();
    921         $sql = "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0";
    922 
    923         if ( 'sent' == $type )
    924             $sql .= " AND invite_sent = 1";
    925 
    926         $query = $wpdb->get_var( $wpdb->prepare( $sql, $user_id, $group_id ) );
    927 
    928         return is_numeric( $query ) ? (int) $query : $query;
     901        return groups_is_user_invited( $user_id, $group_id, $type );
    929902    }
    930903
     
    936909     * @global WPDB $wpdb
    937910     *
    938      * @param  int $user_id  ID of the user.
    939      * @param  int $group_id ID of the group.
     911     * @param  int $user_id    ID of the user.
     912     * @param  int $group_id   ID of the group.
     913     * @param  int $inviter_id ID of the inviter. Specify if you want to delete
     914     *                         a specific invite. Leave false if you want to
     915     *                         delete all invites to this group.
    940916     * @return int Number of records deleted.
    941917     */
    942     public static function delete_invite( $user_id, $group_id ) {
    943         global $wpdb;
    944 
    945         if ( empty( $user_id ) ) {
    946             return false;
    947         }
    948 
     918    public static function delete_invite( $user_id, $group_id, $inviter_id = false ) {
    949919        /**
    950920         * Fires before a group invitation is deleted.
    951921         *
    952922         * @since 2.6.0
     923         * @since 5.0.0 Added $inviter_id
    953924         *
    954925         * @param int $user_id  ID of the user.
    955926         * @param int $group_id ID of the group.
     927         * @param  int $inviter_id ID of the inviter.
    956928         */
    957         do_action( 'bp_groups_member_before_delete_invite', $user_id, $group_id );
    958 
    959         $table_name = buddypress()->groups->table_name_members;
    960 
    961         $sql = "DELETE FROM {$table_name}
    962                 WHERE user_id = %d
    963                     AND group_id = %d
    964                     AND is_confirmed = 0
    965                     AND inviter_id != 0";
    966 
    967         $prepared = $wpdb->prepare( $sql, $user_id, $group_id );
    968 
    969         return $wpdb->query( $prepared );
     929        do_action( 'bp_groups_member_before_delete_invite', $user_id, $group_id, $inviter_id );
     930
     931        return groups_delete_invite( $user_id, $group_id, $inviter_id );
    970932    }
    971933
     
    980942     */
    981943    public static function delete_request( $user_id, $group_id ) {
    982         global $wpdb;
    983 
    984         if ( empty( $user_id ) )
    985             return false;
    986 
    987         $bp = buddypress();
    988 
    989         return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id = 0 AND invite_sent = 0", $user_id, $group_id ) );
     944        return groups_delete_membership_request( false, $user_id, $group_id );
    990945    }
    991946
     
    11051060     */
    11061061    public static function check_for_membership_request( $user_id, $group_id ) {
    1107         global $wpdb;
    1108 
    1109         if ( empty( $user_id ) )
    1110             return false;
    1111 
    1112         $bp = buddypress();
    1113 
    1114         return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND is_banned = 0 AND inviter_id = 0", $user_id, $group_id ) );
     1062        return groups_is_user_pending( $user_id, $group_id );
    11151063    }
    11161064
     
    12931241     */
    12941242    public static function get_all_membership_request_user_ids( $group_id ) {
    1295         global $wpdb;
    1296 
    1297         $bp = buddypress();
    1298 
    1299         return array_map( 'intval', $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) ) );
     1243        return groups_get_membership_requested_user_ids( $group_id );
    13001244    }
    13011245
Note: See TracChangeset for help on using the changeset viewer.