Skip to:
Content

BuddyPress.org

Changeset 6599


Ignore:
Timestamp:
12/10/2012 12:40:23 PM (14 years ago)
Author:
johnjamesjacoby
Message:

Groups Screens:

  • Bail early instead of wrapping huge blocks of code.
  • Avatar code improvements.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups/bp-groups-screens.php

    r6411 r6599  
    2727
    2828function groups_screen_my_groups() {
    29     global $bp;
     29
     30    $bp = buddypress();
    3031
    3132    // Delete group request notifications for the user
     
    7273            return false;
    7374
    74         if ( !groups_reject_invite( bp_loggedin_user_id(), $group_id ) )
    75             bp_core_add_message( __('Group invite could not be rejected', 'buddypress'), 'error' );
    76         else
    77             bp_core_add_message( __('Group invite rejected', 'buddypress') );
     75        if ( !groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) {
     76            bp_core_add_message( __( 'Group invite could not be rejected', 'buddypress' ), 'error' );
     77        } else {
     78            bp_core_add_message( __( 'Group invite rejected', 'buddypress' ) );
     79        }
    7880
    7981        bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ) );
     
    8991
    9092function groups_screen_group_home() {
    91     global $bp;
    92 
    93     if ( bp_is_single_item() ) {
    94         if ( isset( $_GET['n'] ) ) {
    95             bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'membership_request_accepted' );
    96             bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'membership_request_rejected' );
    97             bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'member_promoted_to_mod'      );
    98             bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'member_promoted_to_admin'    );
    99         }
    100 
    101         do_action( 'groups_screen_group_home' );
    102 
    103         bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) );
    104     }
     93
     94    if ( ! bp_is_single_item() )
     95        return false;
     96
     97    $bp = buddypress();
     98
     99    if ( isset( $_GET['n'] ) ) {
     100        bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'membership_request_accepted' );
     101        bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'membership_request_rejected' );
     102        bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'member_promoted_to_mod'      );
     103        bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'member_promoted_to_admin'    );
     104    }
     105
     106    do_action( 'groups_screen_group_home' );
     107
     108    bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) );
    105109}
    106110
     
    111115 */
    112116function groups_screen_group_forum() {
    113     global $bp;
    114117
    115118    if ( !bp_is_active( 'forums' ) || !bp_forums_is_installed_correctly() )
     
    121124    }
    122125
     126    $bp = buddypress();
     127
    123128    if ( !$bp->groups->current_group->user_has_access ) {
    124129        bp_core_no_access();
     
    126131    }
    127132
    128     if ( bp_is_single_item() ) {
    129 
    130         // Fetch the details we need
    131         $topic_slug = (string)bp_action_variable( 1 );
    132         $topic_id       = bp_forums_get_topic_id_from_slug( $topic_slug );
    133         $forum_id       = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' );
    134         $user_is_banned = false;
    135 
    136         if ( !bp_current_user_can( 'bp_moderate' ) && groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) )
    137             $user_is_banned = true;
    138 
    139         if ( !empty( $topic_slug ) && !empty( $topic_id ) ) {
    140 
    141             // Posting a reply
    142             if ( !$user_is_banned && !bp_action_variable( 2 ) && isset( $_POST['submit_reply'] ) ) {
     133    if ( ! bp_is_single_item() )
     134        return false;
     135
     136    // Fetch the details we need
     137    $topic_slug = (string)bp_action_variable( 1 );
     138    $topic_id       = bp_forums_get_topic_id_from_slug( $topic_slug );
     139    $forum_id       = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' );
     140    $user_is_banned = false;
     141
     142    if ( !bp_current_user_can( 'bp_moderate' ) && groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) )
     143        $user_is_banned = true;
     144
     145    if ( !empty( $topic_slug ) && !empty( $topic_id ) ) {
     146
     147        // Posting a reply
     148        if ( !$user_is_banned && !bp_action_variable( 2 ) && isset( $_POST['submit_reply'] ) ) {
     149            // Check the nonce
     150            check_admin_referer( 'bp_forums_new_reply' );
     151
     152            // Auto join this user if they are not yet a member of this group
     153            if ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
     154                groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
     155            }
     156
     157            $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false;
     158
     159            // Don't allow reply flooding
     160            if ( bp_forums_reply_exists( $_POST['reply_text'], $topic_id, bp_loggedin_user_id() ) ) {
     161                bp_core_add_message( __( 'It looks like you\'ve already said that!', 'buddypress' ), 'error' );
     162            } else {
     163                if ( !$post_id = groups_new_group_forum_post( $_POST['reply_text'], $topic_id, $topic_page ) ) {
     164                    bp_core_add_message( __( 'There was an error when replying to that topic', 'buddypress'), 'error' );
     165                } else {
     166                    bp_core_add_message( __( 'Your reply was posted successfully', 'buddypress') );
     167                }
     168            }
     169
     170            $query_vars = isset( $_SERVER['QUERY_STRING'] ) ? '?' . $_SERVER['QUERY_STRING'] : '';
     171
     172            $redirect = bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' . $query_vars;
     173
     174            if ( !empty( $post_id ) ) {
     175                $redirect .= '#post-' . $post_id;
     176            }
     177
     178            bp_core_redirect( $redirect );
     179        }
     180
     181        // Sticky a topic
     182        else if ( bp_is_action_variable( 'stick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
     183            // Check the nonce
     184            check_admin_referer( 'bp_forums_stick_topic' );
     185
     186            if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id ) ) ) {
     187                bp_core_add_message( __( 'There was an error when making that topic a sticky', 'buddypress' ), 'error' );
     188            } else {
     189                bp_core_add_message( __( 'The topic was made sticky successfully', 'buddypress' ) );
     190            }
     191
     192            do_action( 'groups_stick_forum_topic', $topic_id );
     193            bp_core_redirect( wp_get_referer() );
     194        }
     195
     196        // Un-Sticky a topic
     197        else if ( bp_is_action_variable( 'unstick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
     198            // Check the nonce
     199            check_admin_referer( 'bp_forums_unstick_topic' );
     200
     201            if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id, 'mode' => 'unstick' ) ) ) {
     202                bp_core_add_message( __( 'There was an error when unsticking that topic', 'buddypress'), 'error' );
     203            } else {
     204                bp_core_add_message( __( 'The topic was unstuck successfully', 'buddypress') );
     205            }
     206
     207            do_action( 'groups_unstick_forum_topic', $topic_id );
     208            bp_core_redirect( wp_get_referer() );
     209        }
     210
     211        // Close a topic
     212        else if ( bp_is_action_variable( 'close', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
     213            // Check the nonce
     214            check_admin_referer( 'bp_forums_close_topic' );
     215
     216            if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id ) ) ) {
     217                bp_core_add_message( __( 'There was an error when closing that topic', 'buddypress'), 'error' );
     218            } else {
     219                bp_core_add_message( __( 'The topic was closed successfully', 'buddypress') );
     220            }
     221
     222            do_action( 'groups_close_forum_topic', $topic_id );
     223            bp_core_redirect( wp_get_referer() );
     224        }
     225
     226        // Open a topic
     227        else if ( bp_is_action_variable( 'open', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
     228            // Check the nonce
     229            check_admin_referer( 'bp_forums_open_topic' );
     230
     231            if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id, 'mode' => 'open' ) ) ) {
     232                bp_core_add_message( __( 'There was an error when opening that topic', 'buddypress'), 'error' );
     233            } else {
     234                bp_core_add_message( __( 'The topic was opened successfully', 'buddypress') );
     235            }
     236
     237            do_action( 'groups_open_forum_topic', $topic_id );
     238            bp_core_redirect( wp_get_referer() );
     239        }
     240
     241        // Delete a topic
     242        else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && !bp_action_variable( 3 ) ) {
     243            // Fetch the topic
     244            $topic = bp_forums_get_topic_details( $topic_id );
     245
     246            /* Check the logged in user can delete this topic */
     247            if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) ) {
     248                bp_core_redirect( wp_get_referer() );
     249            }
     250
     251            // Check the nonce
     252            check_admin_referer( 'bp_forums_delete_topic' );
     253
     254            do_action( 'groups_before_delete_forum_topic', $topic_id );
     255
     256            if ( !groups_delete_group_forum_topic( $topic_id ) ) {
     257                bp_core_add_message( __( 'There was an error deleting the topic', 'buddypress' ), 'error' );
     258            } else {
     259                bp_core_add_message( __( 'The topic was deleted successfully', 'buddypress' ) );
     260            }
     261
     262            do_action( 'groups_delete_forum_topic', $topic_id );
     263            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/' );
     264        }
     265
     266        // Editing a topic
     267        else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && !bp_action_variable( 3 ) ) {
     268            // Fetch the topic
     269            $topic = bp_forums_get_topic_details( $topic_id );
     270
     271            // Check the logged in user can edit this topic
     272            if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) ) {
     273                bp_core_redirect( wp_get_referer() );
     274            }
     275
     276            if ( isset( $_POST['save_changes'] ) ) {
    143277                // Check the nonce
    144                 check_admin_referer( 'bp_forums_new_reply' );
    145 
     278                check_admin_referer( 'bp_forums_edit_topic' );
     279
     280                $topic_tags = !empty( $_POST['topic_tags'] ) ? $_POST['topic_tags'] : false;
     281
     282                if ( !groups_update_group_forum_topic( $topic_id, $_POST['topic_title'], $_POST['topic_text'], $topic_tags ) ) {
     283                    bp_core_add_message( __( 'There was an error when editing that topic', 'buddypress'), 'error' );
     284                } else {
     285                    bp_core_add_message( __( 'The topic was edited successfully', 'buddypress') );
     286                }
     287
     288                do_action( 'groups_edit_forum_topic', $topic_id );
     289                bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' );
     290            }
     291
     292            bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) );
     293
     294        // Delete a post
     295        } else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && $post_id = bp_action_variable( 4 ) ) {
     296            // Fetch the post
     297            $post = bp_forums_get_post( $post_id );
     298
     299            // Check the logged in user can edit this topic
     300            if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) ) {
     301                bp_core_redirect( wp_get_referer() );
     302            }
     303
     304            // Check the nonce
     305            check_admin_referer( 'bp_forums_delete_post' );
     306
     307            do_action( 'groups_before_delete_forum_post', $post_id );
     308
     309            if ( !groups_delete_group_forum_post( $post_id ) ) {
     310                bp_core_add_message( __( 'There was an error deleting that post', 'buddypress'), 'error' );
     311            } else {
     312                bp_core_add_message( __( 'The post was deleted successfully', 'buddypress') );
     313            }
     314
     315            do_action( 'groups_delete_forum_post', $post_id );
     316            bp_core_redirect( wp_get_referer() );
     317
     318        // Editing a post
     319        } else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && $post_id = bp_action_variable( 4 ) ) {
     320
     321            // Fetch the post
     322            $post = bp_forums_get_post( $post_id );
     323
     324            // Check the logged in user can edit this topic
     325            if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) ) {
     326                bp_core_redirect( wp_get_referer() );
     327            }
     328
     329            if ( isset( $_POST['save_changes'] ) ) {
     330                // Check the nonce
     331                check_admin_referer( 'bp_forums_edit_post' );
     332
     333                $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false;
     334
     335                if ( !$post_id = groups_update_group_forum_post( $post_id, $_POST['post_text'], $topic_id, $topic_page ) ) {
     336                    bp_core_add_message( __( 'There was an error when editing that post', 'buddypress'), 'error' );
     337                } else {
     338                    bp_core_add_message( __( 'The post was edited successfully', 'buddypress') );
     339                }
     340
     341                if ( $_SERVER['QUERY_STRING'] ) {
     342                    $query_vars = '?' . $_SERVER['QUERY_STRING'];
     343                }
     344
     345                do_action( 'groups_edit_forum_post', $post_id );
     346                bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id );
     347            }
     348
     349            bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) );
     350
     351        // Standard topic display
     352        } else {
     353            if ( !empty( $user_is_banned ) ) {
     354                bp_core_add_message( __( "You have been banned from this group.", 'buddypress' ) );
     355            }
     356
     357            bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/home' ) );
     358        }
     359
     360    // Forum topic does not exist
     361    } elseif ( !empty( $topic_slug ) && empty( $topic_id ) ) {
     362        bp_do_404();
     363        return;
     364
     365    } else {
     366        // Posting a topic
     367        if ( isset( $_POST['submit_topic'] ) && bp_is_active( 'forums' ) ) {
     368
     369            // Check the nonce
     370            check_admin_referer( 'bp_forums_new_topic' );
     371
     372            if ( $user_is_banned ) {
     373                $error_message = __( "You have been banned from this group.", 'buddypress' );
     374
     375            } elseif ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    146376                // Auto join this user if they are not yet a member of this group
    147                 if ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) )
    148                     groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
    149 
    150                 $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false;
    151 
    152                 // Don't allow reply flooding
    153                 if ( bp_forums_reply_exists( $_POST['reply_text'], $topic_id, bp_loggedin_user_id() ) ) {
    154                     bp_core_add_message( __( 'It looks like you\'ve already said that!', 'buddypress' ), 'error' );
    155                 } else {
    156                     if ( !$post_id = groups_new_group_forum_post( $_POST['reply_text'], $topic_id, $topic_page ) )
    157                         bp_core_add_message( __( 'There was an error when replying to that topic', 'buddypress'), 'error' );
    158                     else
    159                         bp_core_add_message( __( 'Your reply was posted successfully', 'buddypress') );
    160                 }
    161 
    162                 $query_vars = isset( $_SERVER['QUERY_STRING'] ) ? '?' . $_SERVER['QUERY_STRING'] : '';
    163 
    164                 $redirect = bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' . $query_vars;
    165 
    166                 if ( !empty( $post_id ) ) {
    167                     $redirect .= '#post-' . $post_id;
    168                 }
    169 
    170                 bp_core_redirect( $redirect );
    171             }
    172 
    173             // Sticky a topic
    174             else if ( bp_is_action_variable( 'stick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
    175                 // Check the nonce
    176                 check_admin_referer( 'bp_forums_stick_topic' );
    177 
    178                 if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id ) ) )
    179                     bp_core_add_message( __( 'There was an error when making that topic a sticky', 'buddypress' ), 'error' );
    180                 else
    181                     bp_core_add_message( __( 'The topic was made sticky successfully', 'buddypress' ) );
    182 
    183                 do_action( 'groups_stick_forum_topic', $topic_id );
    184                 bp_core_redirect( wp_get_referer() );
    185             }
    186 
    187             // Un-Sticky a topic
    188             else if ( bp_is_action_variable( 'unstick', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
    189                 // Check the nonce
    190                 check_admin_referer( 'bp_forums_unstick_topic' );
    191 
    192                 if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id, 'mode' => 'unstick' ) ) )
    193                     bp_core_add_message( __( 'There was an error when unsticking that topic', 'buddypress'), 'error' );
    194                 else
    195                     bp_core_add_message( __( 'The topic was unstuck successfully', 'buddypress') );
    196 
    197                 do_action( 'groups_unstick_forum_topic', $topic_id );
    198                 bp_core_redirect( wp_get_referer() );
    199             }
    200 
    201             // Close a topic
    202             else if ( bp_is_action_variable( 'close', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
    203                 // Check the nonce
    204                 check_admin_referer( 'bp_forums_close_topic' );
    205 
    206                 if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id ) ) )
    207                     bp_core_add_message( __( 'There was an error when closing that topic', 'buddypress'), 'error' );
    208                 else
    209                     bp_core_add_message( __( 'The topic was closed successfully', 'buddypress') );
    210 
    211                 do_action( 'groups_close_forum_topic', $topic_id );
    212                 bp_core_redirect( wp_get_referer() );
    213             }
    214 
    215             // Open a topic
    216             else if ( bp_is_action_variable( 'open', 2 ) && ( bp_is_item_admin() || bp_is_item_mod() ) ) {
    217                 // Check the nonce
    218                 check_admin_referer( 'bp_forums_open_topic' );
    219 
    220                 if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id, 'mode' => 'open' ) ) )
    221                     bp_core_add_message( __( 'There was an error when opening that topic', 'buddypress'), 'error' );
    222                 else
    223                     bp_core_add_message( __( 'The topic was opened successfully', 'buddypress') );
    224 
    225                 do_action( 'groups_open_forum_topic', $topic_id );
    226                 bp_core_redirect( wp_get_referer() );
    227             }
    228 
    229             // Delete a topic
    230             else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && !bp_action_variable( 3 ) ) {
    231                 // Fetch the topic
    232                 $topic = bp_forums_get_topic_details( $topic_id );
    233 
    234                 /* Check the logged in user can delete this topic */
    235                 if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) )
    236                     bp_core_redirect( wp_get_referer() );
    237 
    238                 // Check the nonce
    239                 check_admin_referer( 'bp_forums_delete_topic' );
    240 
    241                 do_action( 'groups_before_delete_forum_topic', $topic_id );
    242 
    243                 if ( !groups_delete_group_forum_topic( $topic_id ) )
    244                     bp_core_add_message( __( 'There was an error deleting the topic', 'buddypress' ), 'error' );
    245                 else
    246                     bp_core_add_message( __( 'The topic was deleted successfully', 'buddypress' ) );
    247 
    248                 do_action( 'groups_delete_forum_topic', $topic_id );
    249                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/' );
    250             }
    251 
    252             // Editing a topic
    253             else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && !bp_action_variable( 3 ) ) {
    254                 // Fetch the topic
    255                 $topic = bp_forums_get_topic_details( $topic_id );
    256 
    257                 // Check the logged in user can edit this topic
    258                 if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $topic->topic_poster ) )
    259                     bp_core_redirect( wp_get_referer() );
    260 
    261                 if ( isset( $_POST['save_changes'] ) ) {
    262                     // Check the nonce
    263                     check_admin_referer( 'bp_forums_edit_topic' );
    264 
    265                     $topic_tags = !empty( $_POST['topic_tags'] ) ? $_POST['topic_tags'] : false;
    266 
    267                     if ( !groups_update_group_forum_topic( $topic_id, $_POST['topic_title'], $_POST['topic_text'], $topic_tags ) )
    268                         bp_core_add_message( __( 'There was an error when editing that topic', 'buddypress'), 'error' );
    269                     else
    270                         bp_core_add_message( __( 'The topic was edited successfully', 'buddypress') );
    271 
    272                     do_action( 'groups_edit_forum_topic', $topic_id );
    273                     bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' );
    274                 }
    275 
    276                 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) );
    277             }
    278 
    279             // Delete a post
    280             else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && $post_id = bp_action_variable( 4 ) ) {
    281                 // Fetch the post
    282                 $post = bp_forums_get_post( $post_id );
    283 
    284                 // Check the logged in user can edit this topic
    285                 if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) )
    286                     bp_core_redirect( wp_get_referer() );
    287 
    288                 // Check the nonce
    289                 check_admin_referer( 'bp_forums_delete_post' );
    290 
    291                 do_action( 'groups_before_delete_forum_post', $post_id );
    292 
    293                 if ( !groups_delete_group_forum_post( $post_id ) )
    294                     bp_core_add_message( __( 'There was an error deleting that post', 'buddypress'), 'error' );
    295                 else
    296                     bp_core_add_message( __( 'The post was deleted successfully', 'buddypress') );
    297 
    298                 do_action( 'groups_delete_forum_post', $post_id );
    299                 bp_core_redirect( wp_get_referer() );
    300             }
    301 
    302             // Editing a post
    303             else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && $post_id = bp_action_variable( 4 ) ) {
    304                 // Fetch the post
    305                 $post = bp_forums_get_post( $post_id );
    306 
    307                 // Check the logged in user can edit this topic
    308                 if ( ! bp_is_item_admin() && ! bp_is_item_mod() && ( (int) bp_loggedin_user_id() != (int) $post->poster_id ) )
    309                     bp_core_redirect( wp_get_referer() );
    310 
    311                 if ( isset( $_POST['save_changes'] ) ) {
    312                     // Check the nonce
    313                     check_admin_referer( 'bp_forums_edit_post' );
    314 
    315                     $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false;
    316 
    317                     if ( !$post_id = groups_update_group_forum_post( $post_id, $_POST['post_text'], $topic_id, $topic_page ) )
    318                         bp_core_add_message( __( 'There was an error when editing that post', 'buddypress'), 'error' );
    319                     else
    320                         bp_core_add_message( __( 'The post was edited successfully', 'buddypress') );
    321 
    322                     if ( $_SERVER['QUERY_STRING'] )
    323                         $query_vars = '?' . $_SERVER['QUERY_STRING'];
    324 
    325                     do_action( 'groups_edit_forum_post', $post_id );
    326                     bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id );
    327                 }
    328 
    329                 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) );
    330             }
    331 
    332             // Standard topic display
    333             else {
    334                 if ( !empty( $user_is_banned ) )
    335                     bp_core_add_message( __( "You have been banned from this group.", 'buddypress' ) );
    336 
    337                 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/home' ) );
    338             }
    339 
    340         // Forum topic does not exist
    341         } elseif ( !empty( $topic_slug ) && empty( $topic_id ) ) {
    342             bp_do_404();
    343             return;
    344 
    345         } else {
    346             // Posting a topic
    347             if ( isset( $_POST['submit_topic'] ) && bp_is_active( 'forums' ) ) {
    348                 // Check the nonce
    349                 check_admin_referer( 'bp_forums_new_topic' );
    350 
    351                 if ( $user_is_banned ) {
    352                     $error_message = __( "You have been banned from this group.", 'buddypress' );
    353 
    354                 } elseif ( bp_groups_auto_join() && !bp_current_user_can( 'bp_moderate' ) && 'public' == $bp->groups->current_group->status && !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    355                     // Auto join this user if they are not yet a member of this group
    356                     groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
    357                 }
    358 
    359                 if ( empty( $_POST['topic_title'] ) )
    360                     $error_message = __( 'Please provide a title for your forum topic.', 'buddypress' );
    361                 else if ( empty( $_POST['topic_text'] ) )
    362                     $error_message = __( 'Forum posts cannot be empty. Please enter some text.', 'buddypress' );
    363 
    364                 if ( empty( $forum_id ) )
    365                     $error_message = __( 'This group does not have a forum setup yet.', 'buddypress' );
    366 
    367                 if ( isset( $error_message ) ) {
    368                     bp_core_add_message( $error_message, 'error' );
     377                groups_join_group( $bp->groups->current_group->id, bp_loggedin_user_id() );
     378            }
     379
     380            if ( empty( $_POST['topic_title'] ) ) {
     381                $error_message = __( 'Please provide a title for your forum topic.', 'buddypress' );
     382            } else if ( empty( $_POST['topic_text'] ) ) {
     383                $error_message = __( 'Forum posts cannot be empty. Please enter some text.', 'buddypress' );
     384            }
     385
     386            if ( empty( $forum_id ) ) {
     387                $error_message = __( 'This group does not have a forum setup yet.', 'buddypress' );
     388            }
     389
     390            if ( isset( $error_message ) ) {
     391                bp_core_add_message( $error_message, 'error' );
     392                $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum';
     393            } else {
     394                if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) {
     395                    bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' );
    369396                    $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum';
    370397                } else {
    371                     if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) {
    372                         bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' );
    373                         $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum';
    374                     } else {
    375                         bp_core_add_message( __( 'The topic was created successfully', 'buddypress') );
    376                         $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/';
    377                     }
     398                    bp_core_add_message( __( 'The topic was created successfully', 'buddypress') );
     399                    $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/';
    378400                }
    379 
    380                 bp_core_redirect( $redirect );
    381             }
    382 
    383             do_action( 'groups_screen_group_forum', $topic_id, $forum_id );
    384 
    385             bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/home' ) );
    386         }
     401            }
     402
     403            bp_core_redirect( $redirect );
     404        }
     405
     406        do_action( 'groups_screen_group_forum', $topic_id, $forum_id );
     407
     408        bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/home' ) );
    387409    }
    388410}
    389411
    390412function groups_screen_group_members() {
    391     global $bp;
    392 
    393     if ( $bp->is_single_item ) {
    394         // Refresh the group member count meta
    395         groups_update_groupmeta( $bp->groups->current_group->id, 'total_member_count', groups_get_total_member_count( $bp->groups->current_group->id ) );
    396 
    397         do_action( 'groups_screen_group_members', $bp->groups->current_group->id );
    398         bp_core_load_template( apply_filters( 'groups_template_group_members', 'groups/single/home' ) );
    399     }
     413
     414    if ( !bp_is_single_item() )
     415        return false;
     416
     417    $bp = buddypress();
     418
     419    // Refresh the group member count meta
     420    groups_update_groupmeta( $bp->groups->current_group->id, 'total_member_count', groups_get_total_member_count( $bp->groups->current_group->id ) );
     421
     422    do_action( 'groups_screen_group_members', $bp->groups->current_group->id );
     423    bp_core_load_template( apply_filters( 'groups_template_group_members', 'groups/single/home' ) );
    400424}
    401425
    402426function groups_screen_group_invite() {
    403     global $bp;
    404 
    405     if ( $bp->is_single_item ) {
    406         if ( bp_is_action_variable( 'send', 0 ) ) {
    407 
    408             if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) )
    409                 return false;
    410 
    411             if ( !empty( $_POST['friends'] ) ) {
    412                 foreach( (array) $_POST['friends'] as $friend ) {
    413                     groups_invite_user( array( 'user_id' => $friend, 'group_id' => $bp->groups->current_group->id ) );
    414                 }
    415             }
    416 
    417             // Send the invites.
    418             groups_send_invites( bp_loggedin_user_id(), $bp->groups->current_group->id );
    419             bp_core_add_message( __('Group invites sent.', 'buddypress') );
    420             do_action( 'groups_screen_group_invite', $bp->groups->current_group->id );
    421             bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
    422 
    423         } elseif ( !bp_action_variable( 0 ) ) {
    424             // Show send invite page
    425             bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/home' ) );
    426 
    427         } else {
    428             bp_do_404();
    429         }
     427
     428    if ( !bp_is_single_item() )
     429        return false;
     430
     431    $bp = buddypress();
     432
     433    if ( bp_is_action_variable( 'send', 0 ) ) {
     434
     435        if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) )
     436            return false;
     437
     438        if ( !empty( $_POST['friends'] ) ) {
     439            foreach( (array) $_POST['friends'] as $friend ) {
     440                groups_invite_user( array( 'user_id' => $friend, 'group_id' => $bp->groups->current_group->id ) );
     441            }
     442        }
     443
     444        // Send the invites.
     445        groups_send_invites( bp_loggedin_user_id(), $bp->groups->current_group->id );
     446        bp_core_add_message( __('Group invites sent.', 'buddypress') );
     447        do_action( 'groups_screen_group_invite', $bp->groups->current_group->id );
     448        bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
     449
     450    } elseif ( !bp_action_variable( 0 ) ) {
     451        // Show send invite page
     452        bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/home' ) );
     453
     454    } else {
     455        bp_do_404();
    430456    }
    431457}
     
    437463        return false;
    438464
    439     if ( 'private' == $bp->groups->current_group->status ) {
    440         // If the user has submitted a request, send it.
    441         if ( isset( $_POST['group-request-send']) ) {
    442             // Check the nonce
    443             if ( !check_admin_referer( 'groups_request_membership' ) )
    444                 return false;
    445 
    446             if ( !groups_send_membership_request( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
    447                 bp_core_add_message( __( 'There was an error sending your group membership request, please try again.', 'buddypress' ), 'error' );
    448             } else {
    449                 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' ) );
    450             }
    451             bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
    452         }
    453 
    454         do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id );
    455 
    456         bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/home' ) );
    457     }
     465    $bp = buddypress();
     466
     467    if ( 'private' != $bp->groups->current_group->status )
     468        return false;
     469   
     470    // If the user has submitted a request, send it.
     471    if ( isset( $_POST['group-request-send']) ) {
     472
     473        // Check the nonce
     474        if ( !check_admin_referer( 'groups_request_membership' ) )
     475            return false;
     476
     477        if ( !groups_send_membership_request( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) {
     478            bp_core_add_message( __( 'There was an error sending your group membership request, please try again.', 'buddypress' ), 'error' );
     479        } else {
     480            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' ) );
     481        }
     482        bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
     483    }
     484
     485    do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id );
     486
     487    bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/home' ) );
    458488}
    459489
    460490function groups_screen_group_activity_permalink() {
    461     global $bp;
    462491
    463492    if ( !bp_is_groups_component() || !bp_is_active( 'activity' ) || ( bp_is_active( 'activity' ) && !bp_is_current_action( bp_get_activity_slug() ) ) || !bp_action_variable( 0 ) )
    464493        return false;
    465494
    466     $bp->is_single_item = true;
     495    buddypress()->is_single_item = true;
    467496
    468497    bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) );
     
    481510
    482511function groups_screen_group_admin_edit_details() {
    483     global $bp;
    484 
    485     if ( 'edit-details' == bp_get_group_current_admin_tab() ) {
    486 
    487         if ( bp_is_item_admin() || bp_is_item_mod() ) {
    488 
    489             // If the edit form has been submitted, save the edited details
    490             if ( isset( $_POST['save'] ) ) {
    491                 // Check the nonce
    492                 if ( !check_admin_referer( 'groups_edit_group_details' ) )
    493                     return false;
    494 
    495                 if ( !groups_edit_base_group_details( $_POST['group-id'], $_POST['group-name'], $_POST['group-desc'], (int) $_POST['group-notify-members'] ) ) {
    496                     bp_core_add_message( __( 'There was an error updating group details, please try again.', 'buddypress' ), 'error' );
    497                 } else {
    498                     bp_core_add_message( __( 'Group details were successfully updated.', 'buddypress' ) );
    499                 }
    500 
    501                 do_action( 'groups_group_details_edited', $bp->groups->current_group->id );
    502 
    503                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' );
    504             }
    505 
    506             do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id );
    507 
    508             bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/home' ) );
    509         }
    510     }
    511 }
    512 add_action( 'bp_screens', 'groups_screen_group_admin_edit_details' );
    513 
    514 function groups_screen_group_admin_settings() {
    515     global $bp;
    516 
    517     if ( 'group-settings' == bp_get_group_current_admin_tab() ) {
    518 
    519         if ( ! bp_is_item_admin() )
    520             return false;
     512
     513    if ( 'edit-details' != bp_get_group_current_admin_tab() )
     514        return false;
     515
     516    if ( bp_is_item_admin() || bp_is_item_mod() ) {
     517
     518        $bp = buddypress();
    521519
    522520        // If the edit form has been submitted, save the edited details
    523521        if ( isset( $_POST['save'] ) ) {
    524             $enable_forum   = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;
    525 
    526             // Checked against a whitelist for security
    527             $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) );
    528             $status         = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public';
    529 
    530             // Checked against a whitelist for security
    531             $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) );
    532             $invite_status         = in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members';
    533 
    534522            // Check the nonce
    535             if ( !check_admin_referer( 'groups_edit_group_settings' ) )
     523            if ( !check_admin_referer( 'groups_edit_group_details' ) )
    536524                return false;
    537525
    538             if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) {
    539                 bp_core_add_message( __( 'There was an error updating group settings, please try again.', 'buddypress' ), 'error' );
     526            if ( !groups_edit_base_group_details( $_POST['group-id'], $_POST['group-name'], $_POST['group-desc'], (int) $_POST['group-notify-members'] ) ) {
     527                bp_core_add_message( __( 'There was an error updating group details, please try again.', 'buddypress' ), 'error' );
    540528            } else {
    541                 bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) );
    542             }
    543 
    544             do_action( 'groups_group_settings_edited', $bp->groups->current_group->id );
    545 
    546             bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/group-settings/' );
    547         }
    548 
    549         do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id );
    550 
    551         bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) );
    552     }
     529                bp_core_add_message( __( 'Group details were successfully updated.', 'buddypress' ) );
     530            }
     531
     532            do_action( 'groups_group_details_edited', $bp->groups->current_group->id );
     533
     534            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' );
     535        }
     536
     537        do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id );
     538
     539        bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/home' ) );
     540    }
     541}
     542add_action( 'bp_screens', 'groups_screen_group_admin_edit_details' );
     543
     544function groups_screen_group_admin_settings() {
     545
     546    if ( 'group-settings' != bp_get_group_current_admin_tab() )
     547        return false;
     548
     549    if ( ! bp_is_item_admin() )
     550        return false;
     551
     552    $bp = buddypress();
     553
     554    // If the edit form has been submitted, save the edited details
     555    if ( isset( $_POST['save'] ) ) {
     556        $enable_forum   = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;
     557
     558        // Checked against a whitelist for security
     559        $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) );
     560        $status         = ( in_array( $_POST['group-status'], (array) $allowed_status ) ) ? $_POST['group-status'] : 'public';
     561
     562        // Checked against a whitelist for security
     563        $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) );
     564        $invite_status         = in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members';
     565
     566        // Check the nonce
     567        if ( !check_admin_referer( 'groups_edit_group_settings' ) )
     568            return false;
     569
     570        if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) {
     571            bp_core_add_message( __( 'There was an error updating group settings, please try again.', 'buddypress' ), 'error' );
     572        } else {
     573            bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) );
     574        }
     575
     576        do_action( 'groups_group_settings_edited', $bp->groups->current_group->id );
     577
     578        bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/group-settings/' );
     579    }
     580
     581    do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id );
     582
     583    bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) );
    553584}
    554585add_action( 'bp_screens', 'groups_screen_group_admin_settings' );
    555586
    556587function groups_screen_group_admin_avatar() {
    557     global $bp;
    558 
    559     if ( 'group-avatar' == bp_get_group_current_admin_tab() ) {
    560 
    561         // If the logged-in user doesn't have permission or if avatar uploads are disabled, then stop here
    562         if ( ! bp_is_item_admin() || (int) bp_get_option( 'bp-disable-avatar-uploads' ) )
    563             return false;
    564 
    565         // If the group admin has deleted the admin avatar
    566         if ( bp_is_action_variable( 'delete', 1 ) ) {
    567 
    568             // Check the nonce
    569             check_admin_referer( 'bp_group_avatar_delete' );
    570 
    571             if ( bp_core_delete_existing_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group' ) ) )
    572                 bp_core_add_message( __( 'Your avatar was deleted successfully!', 'buddypress' ) );
    573             else
    574                 bp_core_add_message( __( 'There was a problem deleting that avatar, please try again.', 'buddypress' ), 'error' );
    575 
    576         }
    577 
    578         if ( ! isset( $bp->avatar_admin ) ) {
    579             $bp->avatar_admin = new stdClass();
    580         }
    581 
    582         $bp->avatar_admin->step = 'upload-image';
    583 
    584         if ( !empty( $_FILES ) ) {
    585 
    586             // Check the nonce
    587             check_admin_referer( 'bp_avatar_upload' );
    588 
    589             // Pass the file to the avatar upload handler
    590             if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) {
    591                 $bp->avatar_admin->step = 'crop-image';
    592 
    593                 // Make sure we include the jQuery jCrop file for image cropping
    594                 add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' );
    595             }
    596 
    597         }
    598 
    599         // If the image cropping is done, crop the image and save a full/thumb version
    600         if ( isset( $_POST['avatar-crop-submit'] ) ) {
    601 
    602             // Check the nonce
    603             check_admin_referer( 'bp_avatar_cropstore' );
    604 
    605             if ( !bp_core_avatar_handle_crop( array( 'object' => 'group', 'avatar_dir' => 'group-avatars', 'item_id' => $bp->groups->current_group->id, 'original_file' => $_POST['image_src'], 'crop_x' => $_POST['x'], 'crop_y' => $_POST['y'], 'crop_w' => $_POST['w'], 'crop_h' => $_POST['h'] ) ) )
    606                 bp_core_add_message( __( 'There was a problem cropping the avatar, please try uploading it again', 'buddypress' ) );
    607             else
    608                 bp_core_add_message( __( 'The new group avatar was uploaded successfully!', 'buddypress' ) );
    609 
    610         }
    611 
    612         do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id );
    613 
    614         bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) );
    615     }
     588
     589    if ( 'group-avatar' != bp_get_group_current_admin_tab() )
     590        return false;
     591
     592    // If the logged-in user doesn't have permission or if avatar uploads are disabled, then stop here
     593    if ( ! bp_is_item_admin() || (int) bp_get_option( 'bp-disable-avatar-uploads' ) )
     594        return false;
     595
     596    $bp = buddypress();
     597
     598    // If the group admin has deleted the admin avatar
     599    if ( bp_is_action_variable( 'delete', 1 ) ) {
     600
     601        // Check the nonce
     602        check_admin_referer( 'bp_group_avatar_delete' );
     603
     604        if ( bp_core_delete_existing_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group' ) ) ) {
     605            bp_core_add_message( __( 'Your avatar was deleted successfully!', 'buddypress' ) );
     606        } else {
     607            bp_core_add_message( __( 'There was a problem deleting that avatar, please try again.', 'buddypress' ), 'error' );
     608        }
     609    }
     610
     611    if ( ! isset( $bp->avatar_admin ) ) {
     612        $bp->avatar_admin = new stdClass();
     613    }
     614
     615    $bp->avatar_admin->step = 'upload-image';
     616
     617    if ( !empty( $_FILES ) ) {
     618
     619        // Check the nonce
     620        check_admin_referer( 'bp_avatar_upload' );
     621
     622        // Pass the file to the avatar upload handler
     623        if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) {
     624            $bp->avatar_admin->step = 'crop-image';
     625
     626            // Make sure we include the jQuery jCrop file for image cropping
     627            add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' );
     628        }
     629
     630    }
     631
     632    // If the image cropping is done, crop the image and save a full/thumb version
     633    if ( isset( $_POST['avatar-crop-submit'] ) ) {
     634
     635        // Check the nonce
     636        check_admin_referer( 'bp_avatar_cropstore' );
     637
     638        $args = array(
     639            'object'        => 'group',
     640            'avatar_dir'    => 'group-avatars',
     641            'item_id'       => $bp->groups->current_group->id,
     642            'original_file' => $_POST['image_src'],
     643            'crop_x'        => $_POST['x'],
     644            'crop_y'        => $_POST['y'],
     645            'crop_w'        => $_POST['w'],
     646            'crop_h'        => $_POST['h']
     647        );
     648
     649        if ( !bp_core_avatar_handle_crop( $args ) ) {
     650            bp_core_add_message( __( 'There was a problem cropping the avatar.', '       buddypress' ), 'error' );
     651        } else {
     652            bp_core_add_message( __( 'The new group avatar was uploaded successfully.', 'buddypress' )          );
     653        }
     654    }
     655
     656    do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id );
     657
     658    bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) );
    616659}
    617660add_action( 'bp_screens', 'groups_screen_group_admin_avatar' );
     
    623666 */
    624667function groups_screen_group_admin_manage_members() {
    625     global $bp;
    626 
    627     if ( 'manage-members' == bp_get_group_current_admin_tab() ) {
    628 
    629         if ( ! bp_is_item_admin() )
    630             return false;
    631 
    632         if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) && bp_action_variable( 3 ) ) {
    633             if ( bp_is_action_variable( 'promote', 1 ) && ( bp_is_action_variable( 'mod', 2 ) || bp_is_action_variable( 'admin', 2 ) ) && is_numeric( bp_action_variable( 3 ) ) ) {
    634                 $user_id = bp_action_variable( 3 );
    635                 $status  = bp_action_variable( 2 );
    636 
    637                 // Check the nonce first.
    638                 if ( !check_admin_referer( 'groups_promote_member' ) )
    639                     return false;
    640 
    641                 // Promote a user.
    642                 if ( !groups_promote_member( $user_id, $bp->groups->current_group->id, $status ) )
    643                     bp_core_add_message( __( 'There was an error when promoting that user, please try again', 'buddypress' ), 'error' );
    644                 else
    645                     bp_core_add_message( __( 'User promoted successfully', 'buddypress' ) );
    646 
    647                 do_action( 'groups_promoted_member', $user_id, $bp->groups->current_group->id );
    648 
    649                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
    650             }
    651         }
    652 
    653         if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) ) {
    654             if ( bp_is_action_variable( 'demote', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
    655                 $user_id = bp_action_variable( 2 );
    656 
    657                 // Check the nonce first.
    658                 if ( !check_admin_referer( 'groups_demote_member' ) )
    659                     return false;
    660 
    661                 // Stop sole admins from abandoning their group
    662                 $group_admins = groups_get_group_admins( $bp->groups->current_group->id );
    663                 if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $user_id )
    664                     bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' );
    665 
    666                 // Demote a user.
    667                 elseif ( !groups_demote_member( $user_id, $bp->groups->current_group->id ) )
    668                     bp_core_add_message( __( 'There was an error when demoting that user, please try again', 'buddypress' ), 'error' );
    669                 else
    670                     bp_core_add_message( __( 'User demoted successfully', 'buddypress' ) );
    671 
    672                 do_action( 'groups_demoted_member', $user_id, $bp->groups->current_group->id );
    673 
    674                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
    675             }
    676 
    677             if ( bp_is_action_variable( 'ban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
    678                 $user_id = bp_action_variable( 2 );
    679 
    680                 // Check the nonce first.
    681                 if ( !check_admin_referer( 'groups_ban_member' ) )
    682                     return false;
    683 
    684                 // Ban a user.
    685                 if ( !groups_ban_member( $user_id, $bp->groups->current_group->id ) )
    686                     bp_core_add_message( __( 'There was an error when banning that user, please try again', 'buddypress' ), 'error' );
    687                 else
    688                     bp_core_add_message( __( 'User banned successfully', 'buddypress' ) );
    689 
    690                 do_action( 'groups_banned_member', $user_id, $bp->groups->current_group->id );
    691 
    692                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
    693             }
    694 
    695             if ( bp_is_action_variable( 'unban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
    696                 $user_id = bp_action_variable( 2 );
    697 
    698                 // Check the nonce first.
    699                 if ( !check_admin_referer( 'groups_unban_member' ) )
    700                     return false;
    701 
    702                 // Remove a ban for user.
    703                 if ( !groups_unban_member( $user_id, $bp->groups->current_group->id ) )
    704                     bp_core_add_message( __( 'There was an error when unbanning that user, please try again', 'buddypress' ), 'error' );
    705                 else
    706                     bp_core_add_message( __( 'User ban removed successfully', 'buddypress' ) );
    707 
    708                 do_action( 'groups_unbanned_member', $user_id, $bp->groups->current_group->id );
    709 
    710                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
    711             }
    712 
    713             if ( bp_is_action_variable( 'remove', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
    714                 $user_id = bp_action_variable( 2 );
    715 
    716                 // Check the nonce first.
    717                 if ( !check_admin_referer( 'groups_remove_member' ) )
    718                     return false;
    719 
    720                 // Remove a user.
    721                 if ( !groups_remove_member( $user_id, $bp->groups->current_group->id ) )
    722                     bp_core_add_message( __( 'There was an error removing that user from the group, please try again', 'buddypress' ), 'error' );
    723                 else
    724                     bp_core_add_message( __( 'User removed successfully', 'buddypress' ) );
    725 
    726                 do_action( 'groups_removed_member', $user_id, $bp->groups->current_group->id );
    727 
    728                 bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
    729             }
    730         }
    731 
    732         do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id );
    733 
    734         bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/home' ) );
    735     }
     668
     669    if ( 'manage-members' != bp_get_group_current_admin_tab() )
     670        return false;
     671
     672    if ( ! bp_is_item_admin() )
     673        return false;
     674
     675    $bp = buddypress();
     676
     677    if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) && bp_action_variable( 3 ) ) {
     678        if ( bp_is_action_variable( 'promote', 1 ) && ( bp_is_action_variable( 'mod', 2 ) || bp_is_action_variable( 'admin', 2 ) ) && is_numeric( bp_action_variable( 3 ) ) ) {
     679            $user_id = bp_action_variable( 3 );
     680            $status  = bp_action_variable( 2 );
     681
     682            // Check the nonce first.
     683            if ( !check_admin_referer( 'groups_promote_member' ) )
     684                return false;
     685
     686            // Promote a user.
     687            if ( !groups_promote_member( $user_id, $bp->groups->current_group->id, $status ) )
     688                bp_core_add_message( __( 'There was an error when promoting that user, please try again', 'buddypress' ), 'error' );
     689            else
     690                bp_core_add_message( __( 'User promoted successfully', 'buddypress' ) );
     691
     692            do_action( 'groups_promoted_member', $user_id, $bp->groups->current_group->id );
     693
     694            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
     695        }
     696    }
     697
     698    if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) ) {
     699        if ( bp_is_action_variable( 'demote', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
     700            $user_id = bp_action_variable( 2 );
     701
     702            // Check the nonce first.
     703            if ( !check_admin_referer( 'groups_demote_member' ) )
     704                return false;
     705
     706            // Stop sole admins from abandoning their group
     707            $group_admins = groups_get_group_admins( $bp->groups->current_group->id );
     708            if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $user_id )
     709                bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' );
     710
     711            // Demote a user.
     712            elseif ( !groups_demote_member( $user_id, $bp->groups->current_group->id ) )
     713                bp_core_add_message( __( 'There was an error when demoting that user, please try again', 'buddypress' ), 'error' );
     714            else
     715                bp_core_add_message( __( 'User demoted successfully', 'buddypress' ) );
     716
     717            do_action( 'groups_demoted_member', $user_id, $bp->groups->current_group->id );
     718
     719            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
     720        }
     721
     722        if ( bp_is_action_variable( 'ban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
     723            $user_id = bp_action_variable( 2 );
     724
     725            // Check the nonce first.
     726            if ( !check_admin_referer( 'groups_ban_member' ) )
     727                return false;
     728
     729            // Ban a user.
     730            if ( !groups_ban_member( $user_id, $bp->groups->current_group->id ) )
     731                bp_core_add_message( __( 'There was an error when banning that user, please try again', 'buddypress' ), 'error' );
     732            else
     733                bp_core_add_message( __( 'User banned successfully', 'buddypress' ) );
     734
     735            do_action( 'groups_banned_member', $user_id, $bp->groups->current_group->id );
     736
     737            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
     738        }
     739
     740        if ( bp_is_action_variable( 'unban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
     741            $user_id = bp_action_variable( 2 );
     742
     743            // Check the nonce first.
     744            if ( !check_admin_referer( 'groups_unban_member' ) )
     745                return false;
     746
     747            // Remove a ban for user.
     748            if ( !groups_unban_member( $user_id, $bp->groups->current_group->id ) )
     749                bp_core_add_message( __( 'There was an error when unbanning that user, please try again', 'buddypress' ), 'error' );
     750            else
     751                bp_core_add_message( __( 'User ban removed successfully', 'buddypress' ) );
     752
     753            do_action( 'groups_unbanned_member', $user_id, $bp->groups->current_group->id );
     754
     755            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
     756        }
     757
     758        if ( bp_is_action_variable( 'remove', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) {
     759            $user_id = bp_action_variable( 2 );
     760
     761            // Check the nonce first.
     762            if ( !check_admin_referer( 'groups_remove_member' ) )
     763                return false;
     764
     765            // Remove a user.
     766            if ( !groups_remove_member( $user_id, $bp->groups->current_group->id ) )
     767                bp_core_add_message( __( 'There was an error removing that user from the group, please try again', 'buddypress' ), 'error' );
     768            else
     769                bp_core_add_message( __( 'User removed successfully', 'buddypress' ) );
     770
     771            do_action( 'groups_removed_member', $user_id, $bp->groups->current_group->id );
     772
     773            bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' );
     774        }
     775    }
     776
     777    do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id );
     778
     779    bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/home' ) );
    736780}
    737781add_action( 'bp_screens', 'groups_screen_group_admin_manage_members' );
     
    740784    global $bp;
    741785
    742     if ( 'membership-requests' == bp_get_group_current_admin_tab() ) {
    743 
    744         if ( ! bp_is_item_admin() || ( 'public' == $bp->groups->current_group->status ) )
    745             return false;
    746 
    747         // Remove any screen notifications
    748         bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'new_membership_request' );
    749 
    750         $request_action = (string)bp_action_variable( 1 );
    751         $membership_id  = (int)bp_action_variable( 2 );
    752 
    753         if ( !empty( $request_action ) && !empty( $membership_id ) ) {
    754             if ( 'accept' == $request_action && is_numeric( $membership_id ) ) {
    755 
    756                 // Check the nonce first.
    757                 if ( !check_admin_referer( 'groups_accept_membership_request' ) )
    758                     return false;
    759 
    760                 // Accept the membership request
    761                 if ( !groups_accept_membership_request( $membership_id ) )
    762                     bp_core_add_message( __( 'There was an error accepting the membership request, please try again.', 'buddypress' ), 'error' );
    763                 else
    764                     bp_core_add_message( __( 'Group membership request accepted', 'buddypress' ) );
    765 
    766             } elseif ( 'reject' == $request_action && is_numeric( $membership_id ) ) {
    767                 /* Check the nonce first. */
    768                 if ( !check_admin_referer( 'groups_reject_membership_request' ) )
    769                     return false;
    770 
    771                 // Reject the membership request
    772                 if ( !groups_reject_membership_request( $membership_id ) )
    773                     bp_core_add_message( __( 'There was an error rejecting the membership request, please try again.', 'buddypress' ), 'error' );
    774                 else
    775                     bp_core_add_message( __( 'Group membership request rejected', 'buddypress' ) );
    776             }
    777 
    778             do_action( 'groups_group_request_managed', $bp->groups->current_group->id, $request_action, $membership_id );
    779             bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/membership-requests/' );
    780         }
    781 
    782         do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id );
    783         bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/home' ) );
    784     }
     786    if ( 'membership-requests' != bp_get_group_current_admin_tab() )
     787        return false;
     788
     789    if ( ! bp_is_item_admin() || ( 'public' == $bp->groups->current_group->status ) )
     790        return false;
     791
     792    // Remove any screen notifications
     793    bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'new_membership_request' );
     794
     795    $request_action = (string)bp_action_variable( 1 );
     796    $membership_id  = (int)bp_action_variable( 2 );
     797
     798    if ( !empty( $request_action ) && !empty( $membership_id ) ) {
     799        if ( 'accept' == $request_action && is_numeric( $membership_id ) ) {
     800
     801            // Check the nonce first.
     802            if ( !check_admin_referer( 'groups_accept_membership_request' ) )
     803                return false;
     804
     805            // Accept the membership request
     806            if ( !groups_accept_membership_request( $membership_id ) )
     807                bp_core_add_message( __( 'There was an error accepting the membership request, please try again.', 'buddypress' ), 'error' );
     808            else
     809                bp_core_add_message( __( 'Group membership request accepted', 'buddypress' ) );
     810
     811        } elseif ( 'reject' == $request_action && is_numeric( $membership_id ) ) {
     812            /* Check the nonce first. */
     813            if ( !check_admin_referer( 'groups_reject_membership_request' ) )
     814                return false;
     815
     816            // Reject the membership request
     817            if ( !groups_reject_membership_request( $membership_id ) )
     818                bp_core_add_message( __( 'There was an error rejecting the membership request, please try again.', 'buddypress' ), 'error' );
     819            else
     820                bp_core_add_message( __( 'Group membership request rejected', 'buddypress' ) );
     821        }
     822
     823        do_action( 'groups_group_request_managed', $bp->groups->current_group->id, $request_action, $membership_id );
     824        bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/membership-requests/' );
     825    }
     826
     827    do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id );
     828    bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/home' ) );
    785829}
    786830add_action( 'bp_screens', 'groups_screen_group_admin_requests' );
     
    789833    global $bp;
    790834
    791     if ( 'delete-group' == bp_get_group_current_admin_tab() ) {
    792 
    793         if ( ! bp_is_item_admin() && !bp_current_user_can( 'bp_moderate' ) )
     835    if ( 'delete-group' != bp_get_group_current_admin_tab() )
     836        return false;
     837
     838    if ( ! bp_is_item_admin() && !bp_current_user_can( 'bp_moderate' ) )
     839        return false;
     840
     841    if ( isset( $_REQUEST['delete-group-button'] ) && isset( $_REQUEST['delete-group-understand'] ) ) {
     842
     843        // Check the nonce first.
     844        if ( !check_admin_referer( 'groups_delete_group' ) ) {
    794845            return false;
    795 
    796         if ( isset( $_REQUEST['delete-group-button'] ) && isset( $_REQUEST['delete-group-understand'] ) ) {
    797             // Check the nonce first.
    798             if ( !check_admin_referer( 'groups_delete_group' ) )
    799                 return false;
    800 
    801             do_action( 'groups_before_group_deleted', $bp->groups->current_group->id );
    802 
    803             // Group admin has deleted the group, now do it.
    804             if ( !groups_delete_group( $bp->groups->current_group->id ) ) {
    805                 bp_core_add_message( __( 'There was an error deleting the group, please try again.', 'buddypress' ), 'error' );
    806             } else {
    807                 bp_core_add_message( __( 'The group was deleted successfully', 'buddypress' ) );
    808 
    809                 do_action( 'groups_group_deleted', $bp->groups->current_group->id );
    810 
    811                 bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) );
    812             }
     846        }
     847
     848        do_action( 'groups_before_group_deleted', $bp->groups->current_group->id );
     849
     850        // Group admin has deleted the group, now do it.
     851        if ( !groups_delete_group( $bp->groups->current_group->id ) ) {
     852            bp_core_add_message( __( 'There was an error deleting the group, please try again.', 'buddypress' ), 'error' );
     853        } else {
     854            bp_core_add_message( __( 'The group was deleted successfully', 'buddypress' ) );
     855
     856            do_action( 'groups_group_deleted', $bp->groups->current_group->id );
    813857
    814858            bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) );
    815859        }
    816860
    817         do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id );
    818 
    819         bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/home' ) );
    820     }
     861        bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) );
     862    }
     863
     864    do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id );
     865
     866    bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/home' ) );
    821867}
    822868add_action( 'bp_screens', 'groups_screen_group_admin_delete_group' );
     
    839885
    840886    if ( !$group_request = bp_get_user_meta( bp_displayed_user_id(), 'notification_groups_membership_request', true ) )
    841         $group_request = 'yes';
    842 ?>
     887        $group_request = 'yes'; ?>
    843888
    844889    <table class="notification-settings" id="groups-notification-settings">
Note: See TracChangeset for help on using the changeset viewer.