Changeset 6599
- Timestamp:
- 12/10/2012 12:40:23 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/bp-groups/bp-groups-screens.php (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-groups/bp-groups-screens.php
r6411 r6599 27 27 28 28 function groups_screen_my_groups() { 29 global $bp; 29 30 $bp = buddypress(); 30 31 31 32 // Delete group request notifications for the user … … 72 73 return false; 73 74 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 } 78 80 79 81 bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ) ); … … 89 91 90 92 function 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' ) ); 105 109 } 106 110 … … 111 115 */ 112 116 function groups_screen_group_forum() { 113 global $bp;114 117 115 118 if ( !bp_is_active( 'forums' ) || !bp_forums_is_installed_correctly() ) … … 121 124 } 122 125 126 $bp = buddypress(); 127 123 128 if ( !$bp->groups->current_group->user_has_access ) { 124 129 bp_core_no_access(); … … 126 131 } 127 132 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'] ) ) { 143 277 // 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 ) ) { 146 376 // 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' ); 369 396 $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; 370 397 } 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 . '/'; 378 400 } 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' ) ); 387 409 } 388 410 } 389 411 390 412 function 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' ) ); 400 424 } 401 425 402 426 function 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(); 430 456 } 431 457 } … … 437 463 return false; 438 464 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' ) ); 458 488 } 459 489 460 490 function groups_screen_group_activity_permalink() { 461 global $bp;462 491 463 492 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 ) ) 464 493 return false; 465 494 466 $bp->is_single_item = true;495 buddypress()->is_single_item = true; 467 496 468 497 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); … … 481 510 482 511 function 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(); 521 519 522 520 // If the edit form has been submitted, save the edited details 523 521 if ( isset( $_POST['save'] ) ) { 524 $enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;525 526 // Checked against a whitelist for security527 $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 security531 $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 534 522 // Check the nonce 535 if ( !check_admin_referer( 'groups_edit_group_ settings' ) )523 if ( !check_admin_referer( 'groups_edit_group_details' ) ) 536 524 return false; 537 525 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' ); 540 528 } 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 } 542 add_action( 'bp_screens', 'groups_screen_group_admin_edit_details' ); 543 544 function 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' ) ); 553 584 } 554 585 add_action( 'bp_screens', 'groups_screen_group_admin_settings' ); 555 586 556 587 function 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' ) ); 616 659 } 617 660 add_action( 'bp_screens', 'groups_screen_group_admin_avatar' ); … … 623 666 */ 624 667 function 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' ) ); 736 780 } 737 781 add_action( 'bp_screens', 'groups_screen_group_admin_manage_members' ); … … 740 784 global $bp; 741 785 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 else764 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 else775 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' ) ); 785 829 } 786 830 add_action( 'bp_screens', 'groups_screen_group_admin_requests' ); … … 789 833 global $bp; 790 834 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' ) ) { 794 845 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 ); 813 857 814 858 bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) ); 815 859 } 816 860 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' ) ); 821 867 } 822 868 add_action( 'bp_screens', 'groups_screen_group_admin_delete_group' ); … … 839 885 840 886 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'; ?> 843 888 844 889 <table class="notification-settings" id="groups-notification-settings">
Note: See TracChangeset
for help on using the changeset viewer.