Changeset 2168 for trunk/bp-groups.php
- Timestamp:
- 12/14/2009 03:24:05 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/bp-groups.php (modified) (33 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-groups.php
r2158 r2168 11 11 require ( BP_PLUGIN_DIR . '/bp-groups/bp-groups-widgets.php' ); 12 12 require ( BP_PLUGIN_DIR . '/bp-groups/bp-groups-filters.php' ); 13 14 /* Include deprecated functions if settings allow */15 if ( !defined( 'BP_IGNORE_DEPRECATED' ) )16 require ( BP_PLUGIN_DIR . '/bp-groups/deprecated/bp-groups-deprecated.php' );17 13 18 14 function groups_install() { … … 143 139 144 140 $bp->groups->group_creation_steps = apply_filters( 'groups_create_group_steps', array( 145 'group-details' => array( 'name' => __( ' GroupDetails', 'buddypress' ), 'position' => 0 ),146 'group-settings' => array( 'name' => __( ' GroupSettings', 'buddypress' ), 'position' => 10 ),147 'group-avatar' => array( 'name' => __( ' GroupAvatar', 'buddypress' ), 'position' => 20 ),148 'group-invites' => array( 'name' => __( ' GroupInvites', 'buddypress' ), 'position' => 30 )141 'group-details' => array( 'name' => __( 'Details', 'buddypress' ), 'position' => 0 ), 142 'group-settings' => array( 'name' => __( 'Settings', 'buddypress' ), 'position' => 10 ), 143 'group-avatar' => array( 'name' => __( 'Avatar', 'buddypress' ), 'position' => 20 ), 144 'group-invites' => array( 'name' => __( 'Invites', 'buddypress' ), 'position' => 30 ) 149 145 ) ); 150 146 … … 214 210 215 211 /* Add 'Groups' to the main navigation */ 216 bp_core_new_nav_item( array( 'name' => __('Groups', 'buddypress'), 'slug' => $bp->groups->slug, 'position' => 70, 'screen_function' => 'groups_screen_my_groups', 'default_subnav_slug' => 'my-groups', 'item_css_id' => $bp->groups->id ) );212 bp_core_new_nav_item( array( 'name' => sprintf( __( 'Groups (%d)', 'buddypress' ), groups_total_groups_for_user() ), 'slug' => $bp->groups->slug, 'position' => 70, 'screen_function' => 'groups_screen_my_groups', 'default_subnav_slug' => 'my-groups', 'item_css_id' => $bp->groups->id ) ); 217 213 218 214 $groups_link = $bp->loggedin_user->domain . $bp->groups->slug . '/'; … … 220 216 /* Add the subnav items to the groups nav item */ 221 217 bp_core_new_subnav_item( array( 'name' => __( 'My Groups', 'buddypress' ), 'slug' => 'my-groups', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_my_groups', 'position' => 10, 'item_css_id' => 'groups-my-groups' ) ); 222 bp_core_new_subnav_item( array( 'name' => __( 'Create a Group', 'buddypress' ), 'slug' => 'create', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_create_group', 'position' => 20, 'user_has_access' => bp_is_home() ) );223 218 bp_core_new_subnav_item( array( 'name' => __( 'Invites', 'buddypress' ), 'slug' => 'invites', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_invites', 'position' => 30, 'user_has_access' => bp_is_home() ) ); 224 219 … … 290 285 bp_core_new_subnav_item( array( 'name' => __( 'Send Invites', 'buddypress' ), 'slug' => 'send-invites', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_invite', 'item_css_id' => 'group-invite', 'position' => 70, 'user_has_access' => $bp->groups->current_group->user_has_access ) ); 291 286 292 bp_core_new_subnav_item( array( 'name' => __( 'Leave Group', 'buddypress' ), 'slug' => 'leave-group', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_leave', 'item_css_id' => 'group-leave', 'position' => 110, 'user_has_access' => $bp->groups->current_group->user_has_access ) );287 //bp_core_new_subnav_item( array( 'name' => __( 'Leave Group', 'buddypress' ), 'slug' => 'leave-group', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_leave', 'item_css_id' => 'group-leave', 'position' => 110, 'user_has_access' => $bp->groups->current_group->user_has_access ) ); 293 288 } 294 289 } … … 307 302 308 303 do_action( 'groups_directory_groups_setup' ); 309 bp_core_load_template( apply_filters( 'groups_template_directory_groups', ' directories/groups/index' ) );304 bp_core_load_template( apply_filters( 'groups_template_directory_groups', 'groups/index' ) ); 310 305 } 311 306 } … … 352 347 do_action( 'groups_screen_my_groups' ); 353 348 354 bp_core_load_template( apply_filters( 'groups_template_my_groups', ' groups/index' ) );349 bp_core_load_template( apply_filters( 'groups_template_my_groups', 'members/single/groups' ) ); 355 350 } 356 351 … … 402 397 do_action( 'groups_screen_group_invites', $group_id ); 403 398 404 if ( '' != locate_template( array( 'groups/invites.php' ), false ) ) 405 bp_core_load_template( apply_filters( 'groups_template_group_invites', 'groups/invites' ) ); 406 else 407 bp_core_load_template( apply_filters( 'groups_template_group_invites', 'groups/list-invites' ) ); 408 } 409 410 function groups_screen_create_group() { 411 global $bp; 412 413 /* If no current step is set, reset everything so we can start a fresh group creation */ 414 if ( !$bp->groups->current_create_step = $bp->action_variables[1] ) { 415 416 unset( $bp->groups->current_create_step ); 417 unset( $bp->groups->completed_create_steps ); 418 419 setcookie( 'bp_new_group_id', false, time() - 1000, COOKIEPATH ); 420 setcookie( 'bp_completed_create_steps', false, time() - 1000, COOKIEPATH ); 421 422 $reset_steps = true; 423 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . array_shift( array_keys( $bp->groups->group_creation_steps ) ) ); 424 } 425 426 /* If this is a creation step that is not recognized, just redirect them back to the first screen */ 427 if ( $bp->action_variables[1] && !$bp->groups->group_creation_steps[$bp->action_variables[1]] ) { 428 bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' ); 429 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create' ); 430 } 431 432 /* Fetch the currently completed steps variable */ 433 if ( isset( $_COOKIE['bp_completed_create_steps'] ) && !$reset_steps ) 434 $bp->groups->completed_create_steps = unserialize( stripslashes( $_COOKIE['bp_completed_create_steps'] ) ); 435 436 /* Set the ID of the new group, if it has already been created in a previous step */ 437 if ( isset( $_COOKIE['bp_new_group_id'] ) ) { 438 $bp->groups->new_group_id = $_COOKIE['bp_new_group_id']; 439 $bp->groups->current_group = new BP_Groups_Group( $bp->groups->new_group_id, false, false ); 440 } 441 442 /* If the save, upload or skip button is hit, lets calculate what we need to save */ 443 if ( isset( $_POST['save'] ) ) { 444 445 /* Check the nonce */ 446 check_admin_referer( 'groups_create_save_' . $bp->groups->current_create_step ); 447 448 if ( 'group-details' == $bp->groups->current_create_step ) { 449 if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) ) { 450 bp_core_add_message( __( 'Please fill in all of the required fields', 'buddypress' ), 'error' ); 451 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step ); 452 } 453 454 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'news' => $_POST['group-news'], 'slug' => groups_check_slug( sanitize_title($_POST['group-name']) ), 'date_created' => time() ) ) ) { 455 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); 456 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step ); 457 } 458 459 groups_update_groupmeta( $bp->groups->new_group_id, 'total_member_count', 1 ); 460 groups_update_groupmeta( $bp->groups->new_group_id, 'last_activity', time() ); 461 groups_update_groupmeta( $bp->groups->new_group_id, 'theme', 'buddypress' ); 462 groups_update_groupmeta( $bp->groups->new_group_id, 'stylesheet', 'buddypress' ); 463 } 464 465 if ( 'group-settings' == $bp->groups->current_create_step ) { 466 $group_status = 'public'; 467 $group_enable_wire = 1; 468 $group_enable_forum = 1; 469 470 if ( !isset($_POST['group-show-wire']) ) 471 $group_enable_wire = 0; 472 473 if ( !isset($_POST['group-show-forum']) ) { 474 $group_enable_forum = 0; 475 } else { 476 /* Create the forum if enable_forum = 1 */ 477 if ( function_exists( 'bp_forums_setup' ) && '' == groups_get_groupmeta( $bp->groups->new_group_id, 'forum_id' ) ) { 478 groups_new_group_forum(); 479 } 480 } 481 482 if ( 'private' == $_POST['group-status'] ) 483 $group_status = 'private'; 484 else if ( 'hidden' == $_POST['group-status'] ) 485 $group_status = 'hidden'; 486 487 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_wire' => $group_enable_wire, 'enable_forum' => $group_enable_forum ) ) ) { 488 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); 489 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step ); 490 } 491 } 492 493 if ( 'group-invites' == $bp->groups->current_create_step ) { 494 groups_send_invites( $bp->groups->new_group_id, $bp->loggedin_user->id ); 495 } 496 497 do_action( 'groups_create_group_step_save_' . $bp->groups->current_create_step ); 498 do_action( 'groups_create_group_step_complete' ); // Mostly for clearing cache on a generic action name 499 500 /** 501 * Once we have successfully saved the details for this step of the creation process 502 * we need to add the current step to the array of completed steps, then update the cookies 503 * holding the information 504 */ 505 if ( !in_array( $bp->groups->current_create_step, (array)$bp->groups->completed_create_steps ) ) 506 $bp->groups->completed_create_steps[] = $bp->groups->current_create_step; 507 508 /* Reset cookie info */ 509 setcookie( 'bp_new_group_id', $bp->groups->new_group_id, time()+60*60*24, COOKIEPATH ); 510 setcookie( 'bp_completed_create_steps', serialize( $bp->groups->completed_create_steps ), time()+60*60*24, COOKIEPATH ); 511 512 /* If we have completed all steps and hit done on the final step we can redirect to the completed group */ 513 if ( count( $bp->groups->completed_create_steps ) == count( $bp->groups->group_creation_steps ) && $bp->groups->current_create_step == array_pop( array_keys( $bp->groups->group_creation_steps ) ) ) { 514 unset( $bp->groups->current_create_step ); 515 unset( $bp->groups->completed_create_steps ); 516 517 /* Once we compelete all steps, record the group creation in the activity stream. */ 518 groups_record_activity( array( 519 'content' => apply_filters( 'groups_activity_created_group', sprintf( __( '%s created the group %s', 'buddypress'), bp_core_get_userlink( $bp->loggedin_user->id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . attribute_escape( $bp->groups->current_group->name ) . '</a>' ) ), 520 'primary_link' => apply_filters( 'groups_activity_created_group_primary_link', bp_get_group_permalink( $bp->groups->current_group ) ), 521 'component_action' => 'created_group', 522 'item_id' => $bp->groups->new_group_id 523 ) ); 524 525 do_action( 'groups_group_create_complete', $bp->groups->new_group_id ); 526 527 bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); 528 } else { 529 /** 530 * Since we don't know what the next step is going to be (any plugin can insert steps) 531 * we need to loop the step array and fetch the next step that way. 532 */ 533 foreach ( $bp->groups->group_creation_steps as $key => $value ) { 534 if ( $key == $bp->groups->current_create_step ) { 535 $next = 1; 536 continue; 537 } 538 539 if ( $next ) { 540 $next_step = $key; 541 break; 542 } 543 } 544 545 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $next_step ); 546 } 547 } 548 549 /* Group avatar is handled separately */ 550 if ( 'group-avatar' == $bp->groups->current_create_step && isset( $_POST['upload'] ) ) { 551 if ( !empty( $_FILES ) && isset( $_POST['upload'] ) ) { 552 /* Normally we would check a nonce here, but the group save nonce is used instead */ 553 554 /* Pass the file to the avatar upload handler */ 555 if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { 556 $bp->avatar_admin->step = 'crop-image'; 557 558 /* Make sure we include the jQuery jCrop file for image cropping */ 559 add_action( 'wp', 'bp_core_add_jquery_cropper' ); 560 } 561 } 562 563 /* If the image cropping is done, crop the image and save a full/thumb version */ 564 if ( isset( $_POST['avatar-crop-submit'] ) && isset( $_POST['upload'] ) ) { 565 /* Normally we would check a nonce here, but the group save nonce is used instead */ 566 567 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'] ) ) ) 568 bp_core_add_message( __( 'There was an error saving the group avatar, please try uploading again.', 'buddypress' ), 'error' ); 569 else 570 bp_core_add_message( __( 'The group avatar was uploaded successfully!', 'buddypress' ) ); 571 } 572 } 573 574 bp_core_load_template( apply_filters( 'groups_template_create_group', 'groups/create' ) ); 399 bp_core_load_template( apply_filters( 'groups_template_group_invites', 'members/single/groups' ) ); 575 400 } 576 401 … … 589 414 do_action( 'groups_screen_group_home' ); 590 415 591 if ( '' != locate_template( array( 'groups/single/home.php' ), false ) ) 592 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 593 else 594 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/group-home' ) ); 416 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 595 417 } 596 418 } … … 727 549 } 728 550 729 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/ forum/edit' ) );551 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); 730 552 } 731 553 … … 773 595 } 774 596 775 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/ forum/edit' ) );597 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); 776 598 } 777 599 778 600 /* Standard topic display */ 779 601 else { 780 if ( '' != locate_template( array( 'groups/single/forum/topic.php' ), false ) ) 781 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/forum/topic' ) ); 782 else 783 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/forum/topic' ) ); 602 bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/home' ) ); 784 603 } 785 604 … … 805 624 do_action( 'groups_screen_group_forum', $topic_id, $forum_id ); 806 625 807 if ( '' != locate_template( array( 'groups/single/forum/index.php' ), false ) ) 808 bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/forum/index' ) ); 809 else 810 bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/forum/index' ) ); 626 bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/home' ) ); 811 627 } 812 628 } … … 852 668 853 669 } else if ( ( !$wire_action || 'latest' == $bp->action_variables[1] ) ) { 854 if ( '' != locate_template( array( 'groups/single/wire.php' ), false ) ) 855 bp_core_load_template( apply_filters( 'groups_template_group_wire', 'groups/single/wire' ) ); 856 else 857 bp_core_load_template( apply_filters( 'groups_template_group_wire', 'groups/wire' ) ); 670 bp_core_load_template( apply_filters( 'groups_template_group_wire', 'groups/single/wire' ) ); 858 671 } else { 859 if ( '' != locate_template( array( 'groups/single/home.php' ), false ) ) 860 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 861 else 862 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/group-home' ) ); 672 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 863 673 } 864 674 } … … 870 680 if ( $bp->is_single_item ) { 871 681 do_action( 'groups_screen_group_members', $bp->groups->current_group->id ); 872 873 if ( '' != locate_template( array( 'groups/single/members.php' ), false ) ) 874 bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/members' ) ); 875 else 876 bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/list-members' ) ); 682 bp_core_load_template( apply_filters( 'groups_screen_group_members', 'groups/single/home' ) ); 877 683 } 878 684 } … … 897 703 } else { 898 704 // Show send invite page 899 if ( '' != locate_template( array( 'groups/single/send-invite.php' ), false ) ) 900 bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/send-invite' ) ); 901 else 902 bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/send-invite' ) ); 705 bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/home' ) ); 903 706 } 904 707 } … … 936 739 937 740 // Show leave group page 938 if ( '' != locate_template( array( 'groups/single/leave-confirm.php' ), false ) ) 939 bp_core_load_template( apply_filters( 'groups_template_group_leave', 'groups/single/leave-confirm' ) ); 940 else 941 bp_core_load_template( apply_filters( 'groups_template_group_leave', 'groups/leave-group-confirm' ) ); 741 bp_core_load_template( apply_filters( 'groups_template_group_leave', 'groups/single/home' ) ); 942 742 } 943 743 } … … 967 767 do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id ); 968 768 969 if ( '' != locate_template( array( 'groups/single/request-membership.php' ), false ) ) 970 bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/request-membership' ) ); 971 else 972 bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/request-membership' ) ); 769 bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/home' ) ); 973 770 } 974 771 } … … 980 777 return false; 981 778 982 if ( '' != locate_template( array( 'groups/single/home.php' ), false ) ) 983 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 984 else 985 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/group-home' ) ); 779 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 986 780 } 987 781 add_action( 'wp', 'groups_screen_group_activity_permalink', 3 ); … … 1025 819 do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id ); 1026 820 1027 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1028 bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/admin' ) ); 1029 else 1030 bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/admin/edit-details' ) ); 821 bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/home' ) ); 1031 822 } 1032 823 } … … 1069 860 do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id ); 1070 861 1071 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1072 bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/admin' ) ); 1073 else 1074 bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/admin/group-settings' ) ); 862 bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) ); 1075 863 } 1076 864 } … … 1130 918 do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id ); 1131 919 1132 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1133 bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/admin' ) ); 1134 else 1135 bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/admin/group-avatar' ) ); 920 bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) ); 1136 921 } 1137 922 } … … 1237 1022 do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id ); 1238 1023 1239 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1240 bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/admin' ) ); 1241 else 1242 bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/admin/manage-members' ) ); 1024 bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/home' ) ); 1243 1025 } 1244 1026 } … … 1294 1076 do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id ); 1295 1077 1296 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1297 bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/admin' ) ); 1298 else 1299 bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/admin/membership-requests' ) ); 1078 bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/home' ) ); 1300 1079 } 1301 1080 } … … 1331 1110 do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id ); 1332 1111 1333 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1334 bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/admin' ) ); 1335 else 1336 bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/admin/delete-group' ) ); 1112 bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/home' ) ); 1337 1113 } 1338 1114 } … … 1396 1172 */ 1397 1173 1174 function groups_action_create_group() { 1175 global $bp; 1176 1177 /* If we're not at domain.org/groups/create/ then return false */ 1178 if ( $bp->current_component != $bp->groups->slug || 'create' != $bp->current_action ) 1179 return false; 1180 1181 if ( !is_user_logged_in() ) 1182 return false; 1183 1184 /* Make sure creation steps are in the right order */ 1185 groups_action_sort_creation_steps(); 1186 1187 /* If no current step is set, reset everything so we can start a fresh group creation */ 1188 if ( !$bp->groups->current_create_step = $bp->action_variables[1] ) { 1189 1190 unset( $bp->groups->current_create_step ); 1191 unset( $bp->groups->completed_create_steps ); 1192 1193 setcookie( 'bp_new_group_id', false, time() - 1000, COOKIEPATH ); 1194 setcookie( 'bp_completed_create_steps', false, time() - 1000, COOKIEPATH ); 1195 1196 $reset_steps = true; 1197 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . array_shift( array_keys( $bp->groups->group_creation_steps ) ) . '/' ); 1198 } 1199 1200 /* If this is a creation step that is not recognized, just redirect them back to the first screen */ 1201 if ( $bp->action_variables[1] && !$bp->groups->group_creation_steps[$bp->action_variables[1]] ) { 1202 bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' ); 1203 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/' ); 1204 } 1205 1206 /* Fetch the currently completed steps variable */ 1207 if ( isset( $_COOKIE['bp_completed_create_steps'] ) && !$reset_steps ) 1208 $bp->groups->completed_create_steps = unserialize( stripslashes( $_COOKIE['bp_completed_create_steps'] ) ); 1209 1210 /* Set the ID of the new group, if it has already been created in a previous step */ 1211 if ( isset( $_COOKIE['bp_new_group_id'] ) ) { 1212 $bp->groups->new_group_id = $_COOKIE['bp_new_group_id']; 1213 $bp->groups->current_group = new BP_Groups_Group( $bp->groups->new_group_id, false, false ); 1214 } 1215 1216 /* If the save, upload or skip button is hit, lets calculate what we need to save */ 1217 if ( isset( $_POST['save'] ) ) { 1218 1219 /* Check the nonce */ 1220 check_admin_referer( 'groups_create_save_' . $bp->groups->current_create_step ); 1221 1222 if ( 'group-details' == $bp->groups->current_create_step ) { 1223 if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) ) { 1224 bp_core_add_message( __( 'Please fill in all of the required fields', 'buddypress' ), 'error' ); 1225 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' ); 1226 } 1227 1228 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'news' => $_POST['group-news'], 'slug' => groups_check_slug( sanitize_title($_POST['group-name']) ), 'date_created' => time() ) ) ) { 1229 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); 1230 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' ); 1231 } 1232 1233 groups_update_groupmeta( $bp->groups->new_group_id, 'total_member_count', 1 ); 1234 groups_update_groupmeta( $bp->groups->new_group_id, 'last_activity', time() ); 1235 } 1236 1237 if ( 'group-settings' == $bp->groups->current_create_step ) { 1238 $group_status = 'public'; 1239 $group_enable_wire = 1; 1240 $group_enable_forum = 1; 1241 1242 if ( !isset($_POST['group-show-wire']) ) 1243 $group_enable_wire = 0; 1244 1245 if ( !isset($_POST['group-show-forum']) ) { 1246 $group_enable_forum = 0; 1247 } else { 1248 /* Create the forum if enable_forum = 1 */ 1249 if ( function_exists( 'bp_forums_setup' ) && '' == groups_get_groupmeta( $bp->groups->new_group_id, 'forum_id' ) ) { 1250 groups_new_group_forum(); 1251 } 1252 } 1253 1254 if ( 'private' == $_POST['group-status'] ) 1255 $group_status = 'private'; 1256 else if ( 'hidden' == $_POST['group-status'] ) 1257 $group_status = 'hidden'; 1258 1259 if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_wire' => $group_enable_wire, 'enable_forum' => $group_enable_forum ) ) ) { 1260 bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); 1261 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' ); 1262 } 1263 } 1264 1265 if ( 'group-invites' == $bp->groups->current_create_step ) { 1266 groups_send_invites( $bp->groups->new_group_id, $bp->loggedin_user->id ); 1267 } 1268 1269 do_action( 'groups_create_group_step_save_' . $bp->groups->current_create_step ); 1270 do_action( 'groups_create_group_step_complete' ); // Mostly for clearing cache on a generic action name 1271 1272 /** 1273 * Once we have successfully saved the details for this step of the creation process 1274 * we need to add the current step to the array of completed steps, then update the cookies 1275 * holding the information 1276 */ 1277 if ( !in_array( $bp->groups->current_create_step, (array)$bp->groups->completed_create_steps ) ) 1278 $bp->groups->completed_create_steps[] = $bp->groups->current_create_step; 1279 1280 /* Reset cookie info */ 1281 setcookie( 'bp_new_group_id', $bp->groups->new_group_id, time()+60*60*24, COOKIEPATH ); 1282 setcookie( 'bp_completed_create_steps', serialize( $bp->groups->completed_create_steps ), time()+60*60*24, COOKIEPATH ); 1283 1284 /* If we have completed all steps and hit done on the final step we can redirect to the completed group */ 1285 if ( count( $bp->groups->completed_create_steps ) == count( $bp->groups->group_creation_steps ) && $bp->groups->current_create_step == array_pop( array_keys( $bp->groups->group_creation_steps ) ) ) { 1286 unset( $bp->groups->current_create_step ); 1287 unset( $bp->groups->completed_create_steps ); 1288 1289 /* Once we compelete all steps, record the group creation in the activity stream. */ 1290 groups_record_activity( array( 1291 'content' => apply_filters( 'groups_activity_created_group', sprintf( __( '%s created the group %s', 'buddypress'), bp_core_get_userlink( $bp->loggedin_user->id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . attribute_escape( $bp->groups->current_group->name ) . '</a>' ) ), 1292 'primary_link' => apply_filters( 'groups_activity_created_group_primary_link', bp_get_group_permalink( $bp->groups->current_group ) ), 1293 'component_action' => 'created_group', 1294 'item_id' => $bp->groups->new_group_id 1295 ) ); 1296 1297 do_action( 'groups_group_create_complete', $bp->groups->new_group_id ); 1298 1299 bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); 1300 } else { 1301 /** 1302 * Since we don't know what the next step is going to be (any plugin can insert steps) 1303 * we need to loop the step array and fetch the next step that way. 1304 */ 1305 foreach ( $bp->groups->group_creation_steps as $key => $value ) { 1306 if ( $key == $bp->groups->current_create_step ) { 1307 $next = 1; 1308 continue; 1309 } 1310 1311 if ( $next ) { 1312 $next_step = $key; 1313 break; 1314 } 1315 } 1316 1317 bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $next_step . '/' ); 1318 } 1319 } 1320 1321 /* Group avatar is handled separately */ 1322 if ( 'group-avatar' == $bp->groups->current_create_step && isset( $_POST['upload'] ) ) { 1323 if ( !empty( $_FILES ) && isset( $_POST['upload'] ) ) { 1324 /* Normally we would check a nonce here, but the group save nonce is used instead */ 1325 1326 /* Pass the file to the avatar upload handler */ 1327 if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { 1328 $bp->avatar_admin->step = 'crop-image'; 1329 1330 /* Make sure we include the jQuery jCrop file for image cropping */ 1331 add_action( 'wp', 'bp_core_add_jquery_cropper' ); 1332 } 1333 } 1334 1335 /* If the image cropping is done, crop the image and save a full/thumb version */ 1336 if ( isset( $_POST['avatar-crop-submit'] ) && isset( $_POST['upload'] ) ) { 1337 /* Normally we would check a nonce here, but the group save nonce is used instead */ 1338 1339 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'] ) ) ) 1340 bp_core_add_message( __( 'There was an error saving the group avatar, please try uploading again.', 'buddypress' ), 'error' ); 1341 else 1342 bp_core_add_message( __( 'The group avatar was uploaded successfully!', 'buddypress' ) ); 1343 } 1344 } 1345 1346 bp_core_load_template( apply_filters( 'groups_template_create_group', 'groups/create' ) ); 1347 } 1348 add_action( 'wp', 'groups_action_create_group', 3 ); 1349 1398 1350 function groups_action_join_group() { 1399 1351 global $bp; … … 1412 1364 } 1413 1365 1414 if ( '' != locate_template( array( 'groups/single/admin.php' ), false ) ) 1415 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 1416 else 1417 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/group-home' ) ); 1366 bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); 1418 1367 } 1419 1368 add_action( 'wp', 'groups_action_join_group', 3 ); … … 1438 1387 $bp->groups->group_creation_steps[$step['slug']] = array( 'name' => $step['name'], 'position' => $position ); 1439 1388 } 1440 add_action( 'wp', 'groups_action_sort_creation_steps', 3 ); 1441 1442 function groups_aciton_redirect_to_random_group() { 1389 1390 function groups_action_redirect_to_random_group() { 1443 1391 global $bp, $wpdb; 1444 1392 … … 1449 1397 } 1450 1398 } 1451 add_action( 'wp', 'groups_ac iton_redirect_to_random_group', 6 );1399 add_action( 'wp', 'groups_action_redirect_to_random_group', 6 ); 1452 1400 1453 1401 … … 1913 1861 } 1914 1862 1915 function groups_get_newest( $limit = null, $page = 1 ) { 1916 return BP_Groups_Group::get_newest( $limit, $page ); 1917 } 1918 1919 function groups_get_active( $limit = null, $page = 1 ) { 1920 return BP_Groups_Group::get_active( $limit, $page ); 1921 } 1922 1923 function groups_get_popular( $limit = null, $page = 1 ) { 1924 return BP_Groups_Group::get_popular( $limit, $page ); 1925 } 1926 1927 function groups_get_random_groups( $limit = null, $page = 1 ) { 1928 return BP_Groups_Group::get_random( $limit, $page ); 1929 } 1930 1931 function groups_get_alphabetically( $limit = null, $page = 1 ) { 1932 return BP_Groups_Group::get_alphabetically( $limit, $page ); 1933 } 1934 1935 function groups_get_by_most_forum_topics( $limit = null, $page = 1 ) { 1936 return BP_Groups_Group::get_by_most_forum_topics( $limit, $page ); 1937 } 1938 1939 function groups_get_by_most_forum_posts( $limit = null, $page = 1 ) { 1940 return BP_Groups_Group::get_by_most_forum_posts( $limit, $page ); 1941 } 1942 1943 /* TODO: These user group functions could be merged with the above with an optional user ID param */ 1863 /*** 1864 * All of the following get_() functions will return groups for the site globally. 1865 * If you pass a $user_id then the groups will be restricted to only those that the 1866 * user has joined. 1867 */ 1868 function groups_get_newest( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1869 return BP_Groups_Group::get_newest( $limit, $page, $user_id, $search_terms ); 1870 } 1871 1872 function groups_get_active( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1873 return BP_Groups_Group::get_active( $limit, $page, $user_id, $search_terms ); 1874 } 1875 1876 function groups_get_popular( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1877 return BP_Groups_Group::get_popular( $limit, $page, $user_id, $search_terms ); 1878 } 1879 1880 function groups_get_random_groups( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1881 return BP_Groups_Group::get_random( $limit, $page, $user_id, $search_terms ); 1882 } 1883 1884 function groups_get_alphabetically( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1885 return BP_Groups_Group::get_alphabetically( $limit, $page, $user_id, $search_terms ); 1886 } 1887 1888 function groups_get_by_most_forum_topics( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1889 return BP_Groups_Group::get_by_most_forum_topics( $limit, $page, $user_id, $search_terms ); 1890 } 1891 1892 function groups_get_by_most_forum_posts( $limit = null, $page = 1, $user_id = false, $search_terms = false ) { 1893 return BP_Groups_Group::get_by_most_forum_posts( $limit, $page, $user_id, $search_terms ); 1894 } 1895 1896 function groups_get_total_group_count() { 1897 return BP_Groups_Group::get_total_group_count(); 1898 } 1944 1899 1945 1900 function groups_get_user_groups( $user_id = false, $pag_num = false, $pag_page = false ) { … … 1961 1916 } 1962 1917 1963 function groups_get_ most_popular_for_user( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) {1918 function groups_get_user_is_admin_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) { 1964 1919 global $bp; 1965 1920 … … 1967 1922 $user_id = $bp->displayed_user->id; 1968 1923 1969 return BP_Groups_Member::get_ most_popular( $user_id, $pag_num, $pag_page, $filter );1970 } 1971 1972 function groups_get_ recently_active_for_user( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) {1924 return BP_Groups_Member::get_is_admin_of( $user_id, $pag_num, $pag_page, $filter ); 1925 } 1926 1927 function groups_get_user_is_mod_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) { 1973 1928 global $bp; 1974 1929 … … 1976 1931 $user_id = $bp->displayed_user->id; 1977 1932 1978 return BP_Groups_Member::get_ recently_active( $user_id, $pag_num, $pag_page, $filter );1979 } 1980 1981 function groups_ get_alphabetically_for_user( $user_id = false, $pag_num = false, $pag_page = false, $filter= false ) {1933 return BP_Groups_Member::get_is_mod_of( $user_id, $pag_num, $pag_page, $filter ); 1934 } 1935 1936 function groups_total_groups_for_user( $user_id = false ) { 1982 1937 global $bp; 1983 1938 1984 1939 if ( !$user_id ) 1985 $user_id = $bp->displayed_user->id; 1986 1987 return BP_Groups_Member::get_alphabetically( $user_id, $pag_num, $pag_page, $filter ); 1988 } 1989 1990 function groups_get_user_is_admin_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) { 1991 global $bp; 1992 1993 if ( !$user_id ) 1994 $user_id = $bp->displayed_user->id; 1995 1996 return BP_Groups_Member::get_is_admin_of( $user_id, $pag_num, $pag_page, $filter ); 1997 } 1998 1999 function groups_get_user_is_mod_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) { 2000 global $bp; 2001 2002 if ( !$user_id ) 2003 $user_id = $bp->displayed_user->id; 2004 2005 return BP_Groups_Member::get_is_mod_of( $user_id, $pag_num, $pag_page, $filter ); 2006 } 2007 2008 function groups_total_groups_for_user( $user_id = false ) { 2009 global $bp; 2010 2011 if ( !$user_id ) 2012 $user_id = $bp->displayed_user->id; 1940 $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; 2013 1941 2014 1942 return BP_Groups_Member::total_group_count( $user_id ); 2015 }2016 2017 function groups_get_random_groups_for_user( $user_id = false, $total_groups = 5 ) {2018 global $bp;2019 2020 if ( !$user_id )2021 $user_id = $bp->displayed_user->id;2022 2023 return BP_Groups_Member::get_random_groups( $user_id, $total_groups );2024 1943 } 2025 1944 … … 2691 2610 2692 2611 /*** Group Cleanup Functions ****************************************************/ 2612 2613 /** 2614 * groups_filter_template_paths() 2615 * 2616 * Add fallback for the bp-sn-parent theme template locations used in BuddyPress versions 2617 * older than 1.2. 2618 * 2619 * @package BuddyPress Core 2620 */ 2621 function groups_filter_template_paths() { 2622 if ( 'bp-sn-parent' != basename( TEMPLATEPATH ) && !defined( 'BP_CLASSIC_TEMPLATE_STRUCTURE' ) ) 2623 return false; 2624 2625 add_filter( 'groups_template_directory_groups', create_function( '', 'return "directories/groups/index";' ) ); 2626 add_filter( 'groups_template_my_groups', create_function( '', 'return "groups/index";' ) ); 2627 add_filter( 'groups_template_group_invites', create_function( '', 'return "groups/invites";' ) ); 2628 add_filter( 'groups_template_group_admin', create_function( '', 'return "groups/single/admin";' ) ); 2629 add_filter( 'groups_template_group_forum_topic_edit', create_function( '', 'return "groups/single/forum/edit";' ) ); 2630 add_filter( 'groups_template_group_forum_topic', create_function( '', 'return "groups/single/forum/topic";' ) ); 2631 add_filter( 'groups_template_group_forum', create_function( '', 'return "groups/single/forum/index";' ) ); 2632 add_filter( 'groups_template_group_leave', create_function( '', 'return "groups/single/leave-confirm";' ) ); 2633 add_filter( 'groups_template_group_request_membership', create_function( '', 'return "groups/single/request-membership";' ) ); 2634 add_filter( 'groups_template_group_invite', create_function( '', 'return "groups/single/send-invite";' ) ); 2635 add_filter( 'groups_screen_group_members', create_function( '', 'return "groups/single/members";' ) ); 2636 add_filter( 'groups_template_group_admin_settings', create_function( '', 'return "groups/single/admin";' ) ); 2637 add_filter( 'groups_template_group_admin_avatar', create_function( '', 'return "groups/single/admin";' ) ); 2638 add_filter( 'groups_template_group_admin_manage_members', create_function( '', 'return "groups/single/admin";' ) ); 2639 add_filter( 'groups_template_group_admin_requests', create_function( '', 'return "groups/single/admin";' ) ); 2640 add_filter( 'groups_template_group_admin_delete_group', create_function( '', 'return "groups/single/admin";' ) ); 2641 } 2642 add_action( 'init', 'groups_filter_template_paths' ); 2693 2643 2694 2644 function groups_remove_data_for_user( $user_id ) {
Note: See TracChangeset
for help on using the changeset viewer.