Skip to:
Content

BuddyPress.org

Changeset 511 for trunk/bp-groups.php


Ignore:
Timestamp:
11/07/2008 06:01:12 PM (18 years ago)
Author:
apeatling
Message:

Added wp_redirect() to all confirmation messages to stop double posting
Added group delete option for group administrators

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups.php

    r508 r511  
    260260
    261261                if ( $member->save() ) {
    262                         $bp['message'] = __('Group invite accepted', 'buddypress');
    263                         $bp['message_type'] = 'success';
     262                        bp_core_add_message( __('Group invite accepted', 'buddypress') );
    264263                } else {
    265                         $bp['message'] = __('Group invite could not be accepted', 'buddypress');
    266                         $bp['message_type'] = 'error';                                 
     264                        bp_core_add_message( __('Group invite could not be accepted', 'buddypress'), 'error' );                 
    267265                }
    268                 add_action( 'template_notices', 'bp_core_render_notice' );
     266                wp_redirect( $_SERVER['HTTP_REFERER'] );
     267               
    269268        } else if ( isset($bp['action_variables']) && in_array( 'reject', $bp['action_variables'] ) && is_numeric($bp['action_variables'][1]) ) {
    270269                if ( BP_Groups_Member::delete( $bp['loggedin_userid'], $bp['action_variables'][1] ) ) {
    271                         $bp['message'] = __('Group invite rejected', 'buddypress');
    272                         $bp['message_type'] = 'success';
     270                        bp_core_add_message( __('Group invite rejected', 'buddypress') );
    273271                } else {
    274                         $bp['message'] = __('Group invite could not be rejected', 'buddypress');
    275                         $bp['message_type'] = 'error';                         
     272                        bp_core_add_message( __('Group invite could not be rejected', 'buddypress'), 'error' );                 
    276273                }
    277                 add_action( 'template_notices', 'bp_core_render_notice' );
    278         }
     274                wp_redirect( $_SERVER['HTTP_REFERER'] );
     275        }
     276       
    279277        bp_catch_uri( 'groups/list-invites' ); 
    280278}
     
    308306                        //var_dump($create_group_step, $_COOKIE['group_obj_id']);
    309307                        if ( !$group_obj_id = &groups_manage_group( $create_group_step, $_COOKIE['group_obj_id'] ) ) {
    310                                 $bp['message'] = __('There was an error saving group details. Please try again.', 'buddypress');
    311                                 $bp['message_type'] = 'error';
    312                
    313                                 add_action( 'template_notices', 'bp_core_render_notice' );
     308                                bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' );
     309                                wp_redirect( $_SERVER['HTTP_REFERER'] );
    314310                        } else {
    315311                                $create_group_step++;
     
    364360                                bp_catch_uri( 'groups/group-home' );
    365361                        } else {
    366                                 $bp['message'] = __('Wire message successfully posted.', 'buddypress');
    367                                 $bp['message_type'] = 'success';
    368 
    369                                 add_action( 'template_notices', 'bp_core_render_notice' );
    370                                 if ( !strpos( $_SERVER['HTTP_REFERER'], 'wire' ) ) {
    371                                         bp_catch_uri( 'groups/group-home' );
     362                                bp_core_add_message( __('Wire message successfully posted.', 'buddypress') );
     363                               
     364                                if ( !strpos( $_SERVER['HTTP_REFERER'], $bp['wire']['slug'] ) ) {
     365                                        wp_redirect( bp_group_permalink( $group_obj, false ) );
    372366                                } else {
    373                                         bp_catch_uri( 'groups/wire' );
     367                                        wp_redirect( bp_group_permalink( $group_obj, false ) . '/' . $bp['wire']['slug'] );
    374368                                }
    375369                        }
     
    381375                                bp_catch_uri( 'groups/group-home' );
    382376                        } else {
    383                                 $bp['message'] = __('Wire message successfully deleted.', 'buddypress');
    384                                 $bp['message_type'] = 'success';
    385 
    386                                 add_action( 'template_notices', 'bp_core_render_notice' );
    387 
    388                                 if ( !strpos( $_SERVER['HTTP_REFERER'], 'wire' ) ) {
    389                                         bp_catch_uri( 'groups/group-home' );
     377                                bp_core_add_message( __('Wire message successfully deleted.', 'buddypress') );
     378                               
     379                                if ( !strpos( $_SERVER['HTTP_REFERER'], $bp['wire']['slug'] ) ) {
     380                                        wp_redirect( bp_group_permalink( $group_obj, false ) );
    390381                                } else {
    391                                         bp_catch_uri( 'groups/wire' );
    392                                 }                                                                       
     382                                        wp_redirect( bp_group_permalink( $group_obj, false ) . '/' . $bp['wire']['slug'] );
     383                                }
    393384                        }
    394385               
     
    429420                        groups_send_invites($group_obj);
    430421                       
    431                         $bp['message'] = __('Group invites sent.', 'buddypress');
    432                         $bp['message_type'] = 'success';
    433                        
    434                         add_action( 'template_notices', 'bp_core_render_notice' );
    435                         bp_catch_uri( 'groups/group-home' );
     422                        bp_core_add_message( __('Group invites sent.', 'buddypress') );
     423                        wp_redirect( bp_group_permalink( $group_obj, false ) );
    436424                } else {
    437425                        // Show send invite page
     
    449437                        // remove the user from the group.
    450438                        if ( !groups_leave_group( $group_obj->id ) ) {
    451                                 $bp['message'] = __('There was an error leaving the group. Please try again.', 'buddypress');
    452                                 $bp['message_type'] = 'error';                                                                         
     439                                bp_core_add_message(  __('There was an error leaving the group. Please try again.', 'buddypress'), 'error' );
     440                                wp_redirect( bp_group_permalink( $group_obj, false) );
    453441                        } else {
    454                                 $bp['message'] = __('You left the group successfully.', 'buddypress');
    455                                 $bp['message_type'] = 'success';       
     442                                bp_core_add_message( __('You left the group successfully.', 'buddypress') );
     443                                wp_redirect( $bp['loggedin_domain'] . $bp['groups']['slug'] );
    456444                        }
    457                         add_action( 'template_notices', 'bp_core_render_notice' );
    458                
    459                         $bp['current_action'] = 'group-home';
    460                         bp_catch_uri( 'groups/group-home' );
    461                
    462445                } else if ( isset($bp['action_variables']) && $bp['action_variables'][0] == 'no' ) {
    463                         bp_catch_uri( 'groups/group-home' );
     446                        wp_redirect( bp_group_permalink( $group_obj, false) );
    464447                } else {
    465448                        // Show leave group page
     
    476459       
    477460        if ( $group_obj->status == 'private' ) {
    478                
    479461                // If the user has submitted a request, send it.
    480462                if ( isset( $_POST['group-request-send']) ) {
    481463                        if ( !groups_send_membership_request( $bp['loggedin_userid'], $group_obj->id ) ) {
    482                                 $bp['message'] = __( 'There was an error sending your group membership request, please try again.', 'buddypress' );
    483                                 $bp['message_type'] = 'error';
     464                                bp_core_add_message( __( 'There was an error sending your group membership request, please try again.', 'buddypress' ), 'error' );
    484465                        } else {
    485                                 $bp['message'] = __( 'Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request.', 'buddypress' );
    486                                 $bp['message_type'] = 'success';
     466                                bp_core_add_message( __( 'Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request.', 'buddypress' ) );
    487467                        }
    488                         add_action( 'template_notices', 'bp_core_render_notice' );
    489 
    490468                }
    491469                bp_catch_uri( 'groups/request-membership' );
     
    501479
    502480function groups_screen_group_admin_edit_details() {
    503         global $bp;
     481        global $bp, $group_obj;
    504482       
    505483        if ( $bp['current_component'] == $bp['groups']['slug'] && $bp['action_variables'][0] == 'edit-details' ) {
     
    507485                if ( !$bp['is_item_admin'] )
    508486                        return false;
    509                        
     487               
    510488                // If the edit form has been submitted, save the edited details
    511489                if ( isset( $_POST['save'] ) ) {
    512490                        if ( !groups_edit_base_group_details( $_POST['group-id'], $_POST['group-name'], $_POST['group-desc'], $_POST['group-news'], (int)$_POST['group-notify-members'] ) ) {
    513                                 $bp['message'] = __( 'There was an error updating group details, please try again.', 'buddypress' );
    514                                 $bp['message_type'] = 'error';
     491                                bp_core_add_message( __( 'There was an error updating group details, please try again.', 'buddypress' ), 'error' );
    515492                        } else {
    516                                 $bp['message'] = __( 'Group details were successfully updated.', 'buddypress' );
    517                                 $bp['message_type'] = 'success';
     493                                bp_core_add_message( __( 'Group details were successfully updated.', 'buddypress' ) );
    518494                        }
    519                         add_action( 'template_notices', 'bp_core_render_notice' );
     495                        wp_redirect( $_SERVER['HTTP_REFERER'] );
    520496                }
    521497
     
    523499        }
    524500}
    525 add_action( 'wp', 'groups_screen_group_admin_edit_details', 3 );
     501add_action( 'wp', 'groups_screen_group_admin_edit_details', 4 );
    526502
    527503
     
    543519                       
    544520                        if ( !groups_edit_group_settings( $_POST['group-id'], $enable_wire, $enable_forum, $enable_photos, $photos_admin_only, $status ) ) {
    545                                 $bp['message'] = __( 'There was an error updating group settings, please try again.', 'buddypress' );
    546                                 $bp['message_type'] = 'error';
     521                                bp_core_add_message( __( 'There was an error updating group settings, please try again.', 'buddypress' ), 'error' );
    547522                        } else {
    548                                 $bp['message'] = __( 'Group settings were successfully updated.', 'buddypress' );
    549                                 $bp['message_type'] = 'success';
     523                                bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) );
    550524                        }
    551                         add_action( 'template_notices', 'bp_core_render_notice' );
     525                       
     526                        wp_redirect( $_SERVER['HTTP_REFERER'] );
    552527                }
    553528               
     
    555530        }
    556531}
    557 add_action( 'wp', 'groups_screen_group_admin_settings', 3 );
     532add_action( 'wp', 'groups_screen_group_admin_settings', 4 );
    558533
    559534
     
    576551                                // Accept the membership request
    577552                                if ( !groups_accept_membership_request( $membership_id ) ) {
    578                                         $bp['message'] = __( 'There was an error accepting the membership request, please try again.', 'buddypress' );
    579                                         $bp['message_type'] = 'error';
     553                                        bp_core_add_message( __( 'There was an error accepting the membership request, please try again.', 'buddypress' ), 'error' );
    580554                                } else {
    581                                         $bp['message'] = __( 'Group membership request accepted', 'buddypress' );
    582                                         $bp['message_type'] = 'success';
     555                                        bp_core_add_message( __( 'Group membership request accepted', 'buddypress' ) );
    583556                                }
    584557                        } else if ( $request_action == 'reject' && is_numeric($membership_id) ) {
    585558                                // Reject the membership request
    586559                                if ( !groups_reject_membership_request( $membership_id ) ) {
    587                                         $bp['message'] = __( 'There was an error rejecting the membership request, please try again.', 'buddypress' );
    588                                         $bp['message_type'] = 'error';
     560                                        bp_core_add_message( __( 'There was an error rejecting the membership request, please try again.', 'buddypress' ), 'error' );
    589561                                } else {
    590                                         $bp['message'] = __( 'Group membership request rejected', 'buddypress' );
    591                                         $bp['message_type'] = 'success';
     562                                        bp_core_add_message( __( 'Group membership request rejected', 'buddypress' ) );
    592563                                }       
    593564                        }
    594                         add_action( 'template_notices', 'bp_core_render_notice' );
     565                        wp_redirect( $_SERVER['HTTP_REFERER'] );
    595566                }
    596567               
     
    598569        }
    599570}
    600 add_action( 'wp', 'groups_screen_group_admin_requests', 3 );
    601 
     571add_action( 'wp', 'groups_screen_group_admin_requests', 4 );
     572
     573function groups_screen_group_admin_delete_group() {
     574        global $bp, $group_obj;
     575       
     576        if ( $bp['current_component'] == $bp['groups']['slug'] && $bp['action_variables'][0] == 'delete-group' ) {
     577               
     578                if ( !$bp['is_item_admin'] )
     579                        return false;
     580               
     581                if ( isset( $_POST['delete-group-button'] ) && isset( $_POST['delete-group-understand'] ) ) {
     582                        // Group admin has deleted the group, now do it.
     583                        if ( !groups_delete_group( $_POST['group-id']) ) {
     584                                bp_core_add_message( __( 'There was an error deleting the group, please try again.', 'buddypress' ), 'error' );
     585                        } else {
     586                                bp_core_add_message( __( 'The group was deleted successfully', 'buddypress' ) );
     587                                wp_redirect( site_url() . '/' . $bp['groups']['slug'] . '/' );
     588                        }
     589                        wp_redirect( $_SERVER['HTTP_REFERER'] );
     590                } else {
     591                        bp_catch_uri( 'groups/admin/delete-group' );
     592                }
     593        }
     594}
     595add_action( 'wp', 'groups_screen_group_admin_delete_group', 4 );
    602596
    603597function groups_screen_notification_settings() {
     
    660654        if ( !groups_is_user_member( $bp['loggedin_userid'], $group_obj->id ) ) {
    661655                if ( !groups_join_group($group_obj->id) ) {
    662                         $bp['message'] = __('There was an error joining the group. Please try again.', 'buddypress');
    663                         $bp['message_type'] = 'error';
     656                        bp_core_add_message( __('There was an error joining the group. Please try again.', 'buddypress'), 'error' );
    664657                } else {
    665                         $bp['message'] = __('You joined the group!', 'buddypress');
    666                         $bp['message_type'] = 'success';       
     658                        bp_core_add_message( __('You joined the group!', 'buddypress') );
    667659                }
    668 
    669                 add_action( 'template_notices', 'bp_core_render_notice' );
     660                wp_redirect( $_SERVER['HTTP_REFERER'] );
    670661        }
    671662
     
    11921183}
    11931184
     1185function groups_is_group_admin( $user_id, $group_id ) {
     1186        return BP_Groups_Member::check_is_admin( $user_id, $group_id );
     1187}
     1188
    11941189function groups_new_wire_post( $group_id, $content ) {
    11951190        if ( $wire_post_id = bp_wire_new_post( $group_id, $content ) ) {
     
    12291224        if ( !$group->save() )
    12301225                return false;
    1231        
     1226
    12321227        if ( $notify_members )
    12331228                groups_notification_group_updated( $group->id );
     
    13121307}
    13131308
    1314 function groups_get_random_group() {
     1309function groups_redirect_to_random_group() {
    13151310        global $bp, $wpdb;
    13161311       
    13171312        if ( $bp['current_component'] == $bp['groups']['slug'] && isset( $_GET['random'] ) ) {
    1318                 $groups = groups_get_all();
    1319 
    1320                 wp_redirect( $bp['root_domain'] . '/' . $bp['groups']['slug'] . '/' . $groups[rand( 0, count($groups) - 1)]->slug );
    1321         }
    1322 }
    1323 add_action( 'wp', 'groups_get_random_group', 6 );
     1313                $group = groups_get_random_group();
     1314
     1315                wp_redirect( $bp['root_domain'] . '/' . $bp['groups']['slug'] . '/' . $group->slug );
     1316        }
     1317}
     1318add_action( 'wp', 'groups_redirect_to_random_group', 6 );
     1319
     1320function groups_delete_group( $group_id ) {
     1321        global $bp;
     1322       
     1323        // Check the user is the group admin.
     1324        if ( !groups_is_group_admin( $bp['loggedin_userid'], $group_id ) )
     1325                return false;
     1326       
     1327        // Get the group object
     1328        $group = new BP_Groups_Group( $group_id );
     1329       
     1330        if ( !$group->delete() )
     1331                return false;
     1332       
     1333        return true;
     1334}
    13241335
    13251336function groups_check_for_membership_request( $user_id, $group_id ) {
     
    13411352function groups_get_all() {
    13421353        return BP_Groups_Group::get_all();
     1354}
     1355
     1356function groups_get_random_group() {
     1357        return BP_Groups_Group::get_random();
    13431358}
    13441359
     
    13491364//
    13501365
    1351 function groups_delete_groupmeta( $group_id, $meta_key, $meta_value = '' ) {
     1366function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false ) {
    13521367        global $wpdb, $bp;
    13531368       
     
    13621377        $meta_value = trim( $meta_value );
    13631378
    1364         if ( !empty($meta_value) )
    1365                 $wpdb->query( $wpdb->prepare("DELETE FROM " . $bp['groups']['table_name_groupmeta'] . " WHERE groups_id = %d AND meta_key = %s AND meta_value = %s", $group_id, $meta_key, $meta_value) );
    1366         else
    1367                 $wpdb->query( $wpdb->prepare("DELETE FROM " . $bp['groups']['table_name_groupmeta'] . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key) );
    1368 
     1379        if ( !$meta_key ) {
     1380                $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp['groups']['table_name_groupmeta'] . " WHERE group_id = %d", $group_id ) );           
     1381        } else if ( !$meta_value ) {
     1382                $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp['groups']['table_name_groupmeta'] . " WHERE group_id = %d AND meta_key = %s AND meta_value = %s", $group_id, $meta_key, $meta_value ) );
     1383        } else {
     1384                $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp['groups']['table_name_groupmeta'] . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) );
     1385        }
     1386       
    13691387        // TODO need to look into using this.
    13701388        // wp_cache_delete($group_id, 'groups');
Note: See TracChangeset for help on using the changeset viewer.