Skip to:
Content

BuddyPress.org

Changeset 2168 for trunk/bp-groups.php


Ignore:
Timestamp:
12/14/2009 03:24:05 PM (16 years ago)
Author:
apeatling
Message:

Committing core code support for new default theme.

Removed all deprecated code since it will be released as a separate plugin for backwards compatibility if people need it.

Removed the wire and status updates components since there is no support in the theme for these. If people still want this functionality then I'm sure there is someone in the community that could spend a bit of time and release them as plugins. I'm happy to guide.

Removed a lot of template loop duplication. There are no longer site loops and user loops (e.g. bp_has_site_groups() / bp_has_groups() ). There are now bp_has_members(), bp_has_groups(), bp_has_blogs() and you can pass a "user_id" parameter into these loops to limit results to only that user or users.

Merged activity stream functions. There are no longer functions for bp_activity_get_sitewide() / bp_activity_get_for_user() / bp_activity_get_friends_activity() instead there is simply one function: bp_activity_get() and you can pass in parameters to filter on just friends, for a single user, or anything your heart desires. Actually, filtering is extremely fine grained, so I encourage devs to check out the filter functions.

Lots of other code cleanup.

The new default theme will be committed straight after this. The original default folder will be renamed to bp-classic.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups.php

    r2158 r2168  
    1111require ( BP_PLUGIN_DIR . '/bp-groups/bp-groups-widgets.php' );
    1212require ( 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' );
    1713
    1814function groups_install() {
     
    143139
    144140    $bp->groups->group_creation_steps = apply_filters( 'groups_create_group_steps', array(
    145         'group-details' => array( 'name' => __( 'Group Details', 'buddypress' ), 'position' => 0 ),
    146         'group-settings' => array( 'name' => __( 'Group Settings', 'buddypress' ), 'position' => 10 ),
    147         'group-avatar' => array( 'name' => __( 'Group Avatar', 'buddypress' ), 'position' => 20 ),
    148         'group-invites' => array( 'name' => __( 'Group Invites', '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 )
    149145    ) );
    150146
     
    214210
    215211    /* 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 ) );
    217213
    218214    $groups_link = $bp->loggedin_user->domain . $bp->groups->slug . '/';
     
    220216    /* Add the subnav items to the groups nav item */
    221217    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() ) );
    223218    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() ) );
    224219
     
    290285                    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 ) );
    291286
    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 ) );
    293288            }
    294289        }
     
    307302
    308303        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' ) );
    310305    }
    311306}
     
    352347    do_action( 'groups_screen_my_groups' );
    353348
    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' ) );
    355350}
    356351
     
    402397    do_action( 'groups_screen_group_invites', $group_id );
    403398
    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' ) );
    575400}
    576401
     
    589414        do_action( 'groups_screen_group_home' );
    590415
    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' ) );
    595417    }
    596418}
     
    727549                }
    728550
    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' ) );
    730552            }
    731553
     
    773595                }
    774596
    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' ) );
    776598            }
    777599
    778600            /* Standard topic display */
    779601            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' ) );
    784603            }
    785604
     
    805624            do_action( 'groups_screen_group_forum', $topic_id, $forum_id );
    806625
    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' ) );
    811627        }
    812628    }
     
    852668
    853669        } 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' ) );
    858671        } 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' ) );
    863673        }
    864674    }
     
    870680    if ( $bp->is_single_item ) {
    871681        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' ) );
    877683    }
    878684}
     
    897703        } else {
    898704            // 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' ) );
    903706        }
    904707    }
     
    936739
    937740            // 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' ) );
    942742        }
    943743    }
     
    967767        do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id );
    968768
    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' ) );
    973770    }
    974771}
     
    980777        return false;
    981778
    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' ) );
    986780}
    987781add_action( 'wp', 'groups_screen_group_activity_permalink', 3 );
     
    1025819            do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id );
    1026820
    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' ) );
    1031822        }
    1032823    }
     
    1069860        do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id );
    1070861
    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' ) );
    1075863    }
    1076864}
     
    1130918        do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id );
    1131919
    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' ) );
    1136921    }
    1137922}
     
    12371022        do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id );
    12381023
    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' ) );
    12431025    }
    12441026}
     
    12941076        do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id );
    12951077
    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' ) );
    13001079    }
    13011080}
     
    13311110        do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id );
    13321111
    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' ) );
    13371113    }
    13381114}
     
    13961172 */
    13971173
     1174function 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}
     1348add_action( 'wp', 'groups_action_create_group', 3 );
     1349
    13981350function groups_action_join_group() {
    13991351    global $bp;
     
    14121364    }
    14131365
    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' ) );
    14181367}
    14191368add_action( 'wp', 'groups_action_join_group', 3 );
     
    14381387        $bp->groups->group_creation_steps[$step['slug']] = array( 'name' => $step['name'], 'position' => $position );
    14391388}
    1440 add_action( 'wp', 'groups_action_sort_creation_steps', 3 );
    1441 
    1442 function groups_aciton_redirect_to_random_group() {
     1389
     1390function groups_action_redirect_to_random_group() {
    14431391    global $bp, $wpdb;
    14441392
     
    14491397    }
    14501398}
    1451 add_action( 'wp', 'groups_aciton_redirect_to_random_group', 6 );
     1399add_action( 'wp', 'groups_action_redirect_to_random_group', 6 );
    14521400
    14531401
     
    19131861}
    19141862
    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 */
     1868function 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
     1872function 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
     1876function 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
     1880function 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
     1884function 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
     1888function 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
     1892function 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
     1896function groups_get_total_group_count() {
     1897    return BP_Groups_Group::get_total_group_count();
     1898}
    19441899
    19451900function groups_get_user_groups( $user_id = false, $pag_num = false, $pag_page = false ) {
     
    19611916}
    19621917
    1963 function groups_get_most_popular_for_user( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) {
     1918function groups_get_user_is_admin_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) {
    19641919    global $bp;
    19651920
     
    19671922        $user_id = $bp->displayed_user->id;
    19681923
    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
     1927function groups_get_user_is_mod_of( $user_id = false, $pag_num = false, $pag_page = false, $filter = false ) {
    19731928    global $bp;
    19741929
     
    19761931        $user_id = $bp->displayed_user->id;
    19771932
    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
     1936function groups_total_groups_for_user( $user_id = false ) {
    19821937    global $bp;
    19831938
    19841939    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;
    20131941
    20141942    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 );
    20241943}
    20251944
     
    26912610
    26922611/*** 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 */
     2621function 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}
     2642add_action( 'init', 'groups_filter_template_paths' );
    26932643
    26942644function groups_remove_data_for_user( $user_id ) {
Note: See TracChangeset for help on using the changeset viewer.