Skip to:
Content

BuddyPress.org

Changeset 5931


Ignore:
Timestamp:
03/16/2012 02:57:03 AM (15 years ago)
Author:
johnjamesjacoby
Message:

Add the ability to cancel a pending friendship request. Props ddean. Fixes #3897.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-friends/bp-friends-classes.php

    r5729 r5931  
    208208        }
    209209
     210        public static function withdraw($friendship_id) {
     211                global $wpdb, $bp;
     212
     213                return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->friends->table_name} WHERE id = %d AND initiator_user_id = %d", $friendship_id, bp_loggedin_user_id() ) );
     214        }
     215
    210216        public static function reject($friendship_id) {
    211217                global $wpdb, $bp;
  • trunk/bp-friends/bp-friends-functions.php

    r5729 r5931  
    134134
    135135                do_action_ref_array( 'friends_friendship_rejected', array( $friendship_id, &$friendship ) );
     136                return true;
     137        }
     138
     139        return false;
     140}
     141
     142function friends_withdraw_friendship( $initiator_userid, $friend_userid ) {
     143        global $bp;
     144
     145        $friendship_id = BP_Friends_Friendship::get_friendship_id( $initiator_userid, $friend_userid );
     146        $friendship    = new BP_Friends_Friendship( $friendship_id, true, false );
     147       
     148        if ( !$friendship->is_confirmed && BP_Friends_Friendship::withdraw( $friendship_id ) ) {
     149                // Remove the friend request notice
     150                bp_core_delete_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, $bp->friends->id, 'friendship_request' );
     151
     152                do_action_ref_array( 'friends_friendship_whithdrawn', array( $friendship_id, &$friendship ) );
    136153                return true;
    137154        }
  • trunk/bp-friends/bp-friends-screens.php

    r5712 r5931  
    4646                else
    4747                        bp_core_add_message( __( 'Friendship could not be rejected', 'buddypress' ), 'error' );
     48
     49                bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) );
     50               
     51        } elseif ( bp_is_action_variable( 'cancel', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) {
     52                // Check the nonce
     53                check_admin_referer( 'friends_withdraw_friendship' );
     54
     55                if ( friends_withdraw_friendship( bp_loggedin_user_id(), bp_action_variable( 1 ) ) )
     56                        bp_core_add_message( __( 'Friendship request withdrawn', 'buddypress' ) );
     57                else
     58                        bp_core_add_message( __( 'Friendship request could not be withdrawn', 'buddypress' ), 'error' );
    4859
    4960                bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) );
  • trunk/bp-friends/bp-friends-template.php

    r5927 r5931  
    319319                                        'must_be_logged_in' => true,
    320320                                        'block_self'        => true,
    321                                         'wrapper_class'     => 'friendship-button pending',
     321                                        'wrapper_class'     => 'friendship-button pending_friend',
    322322                                        'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
    323                                         'link_href'         => trailingslashit( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests' ),
    324                                         'link_text'         => __( 'Friendship Requested', 'buddypress' ),
    325                                         'link_title'        => __( 'Friendship Requested', 'buddypress' ),
    326                                         'link_class'        => 'friendship-button pending requested'
     323                                        'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . $potential_friend_id . '/', 'friends_withdraw_friendship' ),
     324                                        'link_text'         => __( 'Cancel Friendship Request', 'buddypress' ),
     325                                        'link_title'        => __( 'Cancel Friendship Requested', 'buddypress' ),
     326                                        'link_id'                       => 'friend-' . $potential_friend_id,
     327                                        'link_rel'                      => 'remove',
     328                                        'link_class'        => 'friendship-button pending_friend requested'
    327329                                );
    328330                                break;
  • trunk/bp-themes/bp-default/_inc/ajax.php

    r5927 r5931  
    526526                        echo __("Friendship could not be requested.", 'buddypress');
    527527                } else {
    528                         echo '<a href="' . bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests" class="requested">' . __( 'Friendship Requested', 'buddypress' ) . '</a>';
     528                        echo '<a id="friend-' . $_POST['fid'] . '" class="remove" rel="remove" title="' . __( 'Cancel Friendship Request', 'buddypress' ) . '" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . (int)$_POST['fid'] . '/', 'friends_withdraw_friendship' ) . '" class="requested">' . __( 'Cancel Friendship Request', 'buddypress' ) . '</a>';
     529                }
     530        } else if( 'pending' == BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), (int)$_POST['fid'] ) ) {
     531               
     532                check_ajax_referer('friends_withdraw_friendship');
     533               
     534                if ( friends_withdraw_friendship( bp_loggedin_user_id(), (int)$_POST['fid'] ) ) {
     535                        echo '<a id="friend-' . $_POST['fid'] . '" class="add" rel="add" title="' . __( 'Add Friend', 'buddypress' ) . '" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $_POST['fid'], 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>';
     536                } else {
     537                        echo __("Friendship request could not be cancelled.", 'buddypress');
    529538                }
    530539        } else {
  • trunk/bp-themes/bp-default/_inc/global.js

    r5868 r5931  
    918918                                                parentdiv.removeClass('add_friend');
    919919                                                parentdiv.removeClass('loading');
    920                                                 parentdiv.addClass('pending');
     920                                                parentdiv.addClass('pending_friend');
    921921                                                parentdiv.fadeIn(200).html(response);
    922922                                        }
Note: See TracChangeset for help on using the changeset viewer.