Skip to:
Content

Ticket #7210: 7210.02.patch

File 7210.02.patch, 22.9 KB (added by r-a-y, 3 years ago)
  • src/bp-core/bp-core-template.php

     
    26212621 * @return True if the current page is the groups directory.
    26222622 */
    26232623function bp_is_groups_directory() {
    2624         if ( bp_is_groups_component() && ! bp_current_action() && ! bp_current_item() ) {
     2624        if ( bp_is_groups_component() && ! bp_is_group() && ( ! bp_current_action() || ( bp_action_variable() && bp_is_current_action( bp_get_groups_group_type_base() ) ) ) ) {
    26252625                return true;
    26262626        }
    26272627
  • src/bp-groups/bp-groups-actions.php

     
    210210                                bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . bp_get_groups_current_create_step() ) );
    211211                        }
    212212
     213                        // Save group types.
     214                        if ( ! empty( $_POST['group-types'] ) ) {
     215                                bp_groups_set_group_type( $bp->groups->new_group_id, $_POST['group-types'] );
     216                        }
     217
    213218                        /**
    214219                         * Filters the allowed invite statuses.
    215220                         *
  • src/bp-groups/bp-groups-functions.php

     
    21142114 * Register a group type.
    21152115 *
    21162116 * @since 2.6.0
     2117 * @since 2.7.0 Introduce $has_directory and $show_in_create_screen as $args parameters.
    21172118 *
    21182119 * @param string $group_type Unique string identifier for the group type.
    21192120 * @param array  $args {
    21202121 *     Array of arguments describing the group type.
    21212122 *
    2122  *     @type array $labels {
     2123 *     @type string|bool $has_directory         Set the slug to be used for custom group directory page. eg.
     2124 *                                              example.com/groups/type/MY_SLUG. Default: false.
     2125 *     @type bool        $show_in_create_screen Whether this group type is allowed to be selected on the group creation
     2126 *                                              page. Default: false.
     2127 *     @type bool|null   $show_in_list          Whether this group type should be shown in lists rendered by
     2128 *                                              bp_group_type_list(). Default: null. If $show_in_create_screen is true,
     2129 *                                              this will default to true, unless this is set explicitly to false.
     2130 *     @type array       $labels {
    21232131 *         Array of labels to use in various parts of the interface.
    21242132 *
    21252133 *         @type string $name          Default name. Should typically be plural.
     
    21362144        }
    21372145
    21382146        $r = bp_parse_args( $args, array(
    2139                 'labels'        => array(),
     2147                'has_directory'         => false,
     2148                'show_in_create_screen' => false,
     2149                'show_in_list'          => null,
     2150                'labels'                => array(),
    21402151        ), 'register_group_type' );
    21412152
    21422153        $group_type = sanitize_key( $group_type );
     
    21672178                'singular_name' => $default_name,
    21682179        ), $r['labels'] );
    21692180
     2181        // Directory slug.
     2182        if ( ! empty( $r['has_directory'] ) ) {
     2183                // A string value is intepreted as the directory slug.
     2184                if ( is_string( $r['has_directory'] ) ) {
     2185                        $directory_slug = $r['has_directory'];
     2186
     2187                // Otherwise fall back on group type.
     2188                } else {
     2189                        $directory_slug = $group_type;
     2190                }
     2191
     2192                // Sanitize for use in URLs.
     2193                $r['directory_slug'] = sanitize_title( $directory_slug );
     2194                $r['has_directory']  = true;
     2195        } else {
     2196                $r['directory_slug'] = '';
     2197                $r['has_directory']  = false;
     2198        }
     2199
     2200        // Type lists.
     2201        if ( true === $r['show_in_create_screen'] && is_null( $r['show_in_list'] ) ) {
     2202                $r['show_in_list'] = true;
     2203        } else {
     2204                $r['show_in_list'] = (bool) $r['show_in_list'];
     2205        }
     2206
    21702207        $bp->groups->types[ $group_type ] = $type = (object) $r;
    21712208
    21722209        /**
     
    22462283 * Set type for a group.
    22472284 *
    22482285 * @since 2.6.0
     2286 * @since 2.7.0 $group_type parameter also accepts an array of group types now.
    22492287 *
    2250  * @param int    $group      ID of the group.
    2251  * @param string $group_type Group type.
    2252  * @param bool   $append     Optional. True to append this to existing types for group,
    2253  *                           false to replace. Default: false.
     2288 * @param int          $group      ID of the group.
     2289 * @param string|array $group_type Group type or array of group types to set.
     2290 * @param bool         $append     Optional. True to append this to existing types for group,
     2291 *                                 false to replace. Default: false.
    22542292 * @return array $retval See bp_set_object_terms().
    22552293 */
    22562294function bp_groups_set_group_type( $group_id, $group_type, $append = false ) {
    22572295        // Pass an empty group type to remove group's type.
    2258         if ( ! empty( $group_type ) && ! bp_groups_get_group_type_object( $group_type ) ) {
     2296        if ( ! empty( $group_type ) && is_string( $group_type ) && ! bp_groups_get_group_type_object( $group_type ) ) {
    22592297                return false;
    22602298        }
    22612299
     2300        // Cast as array.
     2301        $group_type = (array) $group_type;
     2302
     2303        // Validate group types.
     2304        foreach ( $group_type as $type ) {
     2305                // Remove any invalid group types.
     2306                if ( is_null( bp_groups_get_group_type_object( $type ) ) ) {
     2307                        unset( $group_type[ $type ] );
     2308                }
     2309        }
     2310
    22622311        $retval = bp_set_object_terms( $group_id, $group_type, 'bp_group_type', $append );
    22632312
    22642313        // Bust the cache if the type has been updated.
     
    22702319                 *
    22712320                 * @since 2.6.0
    22722321                 *
    2273                  * @param int    $group_id   ID of the group whose group type has been updated.
    2274                  * @param string $group_type Group type.
    2275                  * @param bool   $append     Whether the type is being appended to existing types.
     2322                 * @param int          $group_id   ID of the group whose group type has been updated.
     2323                 * @param string|array $group_type Group type or array of group types.
     2324                 * @param bool         $append     Whether the type is being appended to existing types.
    22762325                 */
    22772326                do_action( 'bp_groups_set_group_type', $group_id, $group_type, $append );
    22782327        }
     
    23832432}
    23842433
    23852434/**
     2435 * Get the "current" group type, if one is provided, in group directories.
     2436 *
     2437 * @since 2.7.0
     2438 *
     2439 * @return string
     2440 */
     2441function bp_get_current_group_directory_type() {
     2442
     2443        /**
     2444         * Filters the "current" group type, if one is provided, in group directories.
     2445         *
     2446         * @since 2.7.0
     2447         *
     2448         * @param string $value "Current" group type.
     2449         */
     2450        return apply_filters( 'bp_get_current_group_directory_type', buddypress()->groups->current_directory_type );
     2451}
     2452
     2453/**
    23862454 * Delete a group's type when the group is deleted.
    23872455 *
    23882456 * @since 2.6.0
  • src/bp-groups/bp-groups-screens.php

     
    2525 */
    2626function groups_directory_groups_setup() {
    2727        if ( bp_is_groups_directory() ) {
     28                // Set group type if available.
     29                if ( bp_is_current_action( bp_get_groups_group_type_base() ) && bp_action_variable() ) {
     30                        $matched_types = bp_groups_get_group_types( array(
     31                                'has_directory'  => true,
     32                                'directory_slug' => bp_action_variable(),
     33                        ) );
     34
     35                        // Redirect back to group directory if no match.
     36                        if ( empty( $matched_types ) ) {
     37                                bp_core_redirect( bp_get_groups_directory_permalink() );
     38                        }
     39
     40                        // Set our global variable.
     41                        buddypress()->groups->current_directory_type = reset( $matched_types );
     42                }
     43
    2844                bp_update_is_directory( true, 'groups' );
    2945
    3046                /**
     
    915931                if ( !check_admin_referer( 'groups_edit_group_settings' ) )
    916932                        return false;
    917933
     934                // Save group types.
     935                if ( isset( $_POST['group-types'] ) ) {
     936                        // Validate group types.
     937                        bp_groups_set_group_type( bp_get_current_group_id(), $_POST['group-types'] );
     938                }
     939
    918940                if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) {
    919941                        bp_core_add_message( __( 'There was an error updating group settings. Please try again.', 'buddypress' ), 'error' );
    920942                } else {
  • src/bp-groups/bp-groups-template.php

     
    7272        }
    7373
    7474/**
     75 * Output the group type base slug.
     76 *
     77 * @since 2.7.0
     78 */
     79function bp_groups_group_type_base() {
     80        echo esc_url( bp_get_groups_group_type_base() );
     81}
     82        /**
     83         * Get the group type base slug.
     84         *
     85         * The base slug is the string used as the base prefix when generating group
     86         * type directory URLs. For example, in example.com/groups/type/foo/, 'foo' is
     87         * the group type and 'type' is the base slug.
     88         *
     89         * @since 2.7.0
     90         *
     91         * @return string
     92         */
     93        function bp_get_groups_group_type_base() {
     94                /**
     95                 * Filters the group type URL base.
     96                 *
     97                 * @since 2.7.0
     98                 *
     99                 * @param string $base
     100                 */
     101                return apply_filters( 'bp_groups_group_type_base', _x( 'type', 'group type URL base', 'buddypress' ) );
     102        }
     103
     104/**
    75105 * Output group directory permalink.
    76106 *
    77107 * @since 1.5.0
     
    99129        }
    100130
    101131/**
     132 * Output group type directory permalink.
     133 *
     134 * @since 2.7.0
     135 *
     136 * @param string $group_type Optional. Group type.
     137 */
     138function bp_group_type_directory_permalink( $group_type = '' ) {
     139        echo esc_url( bp_get_group_type_directory_permalink( $group_type ) );
     140}
     141        /**
     142         * Return group type directory permalink.
     143         *
     144         * @since 2.7.0
     145         *
     146         * @param string $group_type Optional. Group type. Defaults to current group type.
     147         * @return string Group type directory URL on success, an empty string on failure.
     148         */
     149        function bp_get_group_type_directory_permalink( $group_type = '' ) {
     150
     151                if ( $group_type ) {
     152                        $_group_type = $group_type;
     153                } else {
     154                        // Fall back on the current group type.
     155                        $_group_type = bp_get_current_group_directory_type();
     156                }
     157
     158                $type = bp_groups_get_group_type_object( $_group_type );
     159
     160                // Bail when member type is not found or has no directory.
     161                if ( ! $type || ! $type->has_directory ) {
     162                        return '';
     163                }
     164
     165                /**
     166                 * Filters the group type directory permalink.
     167                 *
     168                 * @since 2.7.0
     169                 *
     170                 * @param string $value       Group type directory permalink.
     171                 * @param object $type        Group type object.
     172                 * @param string $member_type Group type name, as passed to the function.
     173                 */
     174                return apply_filters( 'bp_get_group_type_directory_permalink', trailingslashit( bp_get_groups_directory_permalink() . bp_get_groups_group_type_base() . '/' . $type->directory_slug ), $type, $group_type );
     175        }
     176
     177/**
     178 * Output group type directory link.
     179 *
     180 * @since 2.7.0
     181 *
     182 * @param string $group_type Unique group type identifier as used in bp_groups_register_group_type().
     183 */
     184function bp_group_type_directory_link( $group_type = '' ) {
     185        echo bp_get_group_type_directory_link( $group_type );
     186}
     187        /**
     188         * Return group type directory link.
     189         *
     190         * @since 2.7.0
     191         *
     192         * @param string $group_type Unique group type identifier as used in bp_groups_register_group_type().
     193         * @return string
     194         */
     195        function bp_get_group_type_directory_link( $group_type = '' ) {
     196                if ( empty( $group_type ) ) {
     197                        return '';
     198                }
     199
     200                return sprintf( '<a href="%s">%s</a>', esc_url( bp_get_group_type_directory_permalink( $group_type ) ), bp_groups_get_group_type_object( $group_type )->labels['name'] );
     201        }
     202
     203/**
     204 * Output a comma-delimited list of group types.
     205 *
     206 * @since 2.7.0
     207 * @see bp_get_group_type_list() for parameter documentation.
     208 */
     209function bp_group_type_list( $group_id = 0, $r = array() ) {
     210        echo bp_get_group_type_list( $group_id, $r );
     211}
     212        /**
     213         * Return a comma-delimited list of group types.
     214         *
     215         * @since 2.7.0
     216         *
     217         * @param int $group_id Group ID. Defaults to current group ID if on a group page.
     218         * @param array|string $args {
     219         *     Array of parameters. All items are optional.
     220         *     @type string $wrapper_element Element to wrap around the list. Defaults to 'p'.
     221         *     @type string $wrapper_class   CSS class for wrapper element. Defaults to 'bp-group-type-list'.
     222         *     @type string $label           Label to add before the list. Defaults to 'Group Types:'.
     223         *     @type string $label_element   Element to wrap around the label. Defaults to 'strong'.
     224         * }
     225         * @return string
     226         */
     227        function bp_get_group_type_list( $group_id = 0, $r = array() ) {
     228                if ( empty( $group_id ) ) {
     229                        $group_id = bp_get_current_group_id();
     230                }
     231
     232                $r = bp_parse_args( $r, array(
     233                        'wrapper_element' => 'p',
     234                        'wrapper_class'   => 'bp-group-type-list',
     235                        'label'           => __( 'Group Types:', 'buddypress' ),
     236                        'label_element'   => 'strong',
     237                ), 'group_type_list' );
     238
     239                $retval = $wrapper = $label = '';
     240
     241                if ( $types = bp_groups_get_group_type( $group_id, false ) ) {
     242                        // Make sure we can show the type in the list.
     243                        $types = array_diff( bp_groups_get_group_types( array( 'show_in_list' => true ) ), $types );
     244                        if ( empty( $types ) ) {
     245                                return $retval;
     246                        }
     247
     248                        $r['label']           = esc_html( $r['label'] );
     249                        $r['label_element']   = sanitize_html_class( $r['label_element'] );
     250                        $r['wrapper_element'] = sanitize_html_class( $r['wrapper_element'] );
     251                        $r['wrapper_class']   = sanitize_html_class( $r['wrapper_class'] );
     252
     253                        if ( ! empty( $r['wrapper_element'] ) ) {
     254                                $wrapper = sprintf( '<%1$s%2$s>',
     255                                        $r['wrapper_element'],
     256                                        ! empty( $r['wrapper_class'] ) ? " class=\"{$r['wrapper_class']}\"" : ''
     257                                );
     258                        }
     259
     260                        if ( ! empty( $r['label'] ) && ! empty( $r['label_element'] ) ) {
     261                                $label = sprintf( '<%1$s>%2$s</%1$s>',
     262                                        $r['label_element'],
     263                                        $r['label']
     264                                );
     265                        } elseif ( ! empty( $r['label'] ) ) {
     266                                $label = $r['label'];
     267                        }
     268
     269                        // Comma-delimit each type into the group type directory link.
     270                        $type_list = implode( ', ', array_map( 'bp_get_group_type_directory_link', $types ) );
     271
     272                        // Retval time!
     273                        $retval = "{$wrapper}{$label}";
     274
     275                        // Add some whitespace if needed.
     276                        if ( ! empty( $retval ) ) {
     277                                $retval .= ' ';
     278                        }
     279
     280                        $retval .= $type_list;
     281
     282                        if ( ! empty( $wrapper ) ) {
     283                                $retval .= "</{$r['wrapper_element']}>";
     284                        }
     285                }
     286
     287                return $retval;
     288        }
     289
     290/**
    102291 * Start the Groups Template Loop.
    103292 *
    104293 * @since 1.0.0
     
    169358                $slug = bp_get_current_group_slug();
    170359        }
    171360
     361        $group_type = bp_get_current_group_directory_type();
     362        if ( ! $group_type && ! empty( $_GET['group_type'] ) ) {
     363                if ( is_array( $_GET['group_type'] ) ) {
     364                        $group_type = $_GET['group_type'];
     365                } else {
     366                        // Can be a comma-separated list.
     367                        $group_type = explode( ',', $_GET['group_type'] );
     368                }
     369        }
     370
    172371        // Default search string (too soon to escape here).
    173372        $search_query_arg = bp_core_get_component_search_query_arg( 'groups' );
    174373        if ( ! empty( $_REQUEST[ $search_query_arg ] ) ) {
     
    192391                'user_id'            => bp_displayed_user_id(),
    193392                'slug'               => $slug,
    194393                'search_terms'       => $search_terms,
    195                 'group_type'         => '',
     394                'group_type'         => $group_type,
    196395                'group_type__in'     => '',
    197396                'group_type__not_in' => '',
    198397                'meta_query'         => false,
     
    51005299}
    51015300
    51025301/**
     5302 * Echo the current group type message.
     5303 *
     5304 * @since 2.7.0
     5305 */
     5306function bp_current_group_directory_type_message() {
     5307        echo bp_get_current_group_directory_type_message();
     5308}
     5309        /**
     5310         * Generate the current group type message.
     5311         *
     5312         * @since 2.7.0
     5313         *
     5314         * @return string
     5315         */
     5316        function bp_get_current_group_directory_type_message() {
     5317                $type_object = bp_groups_get_group_type_object( bp_get_current_group_directory_type() );
     5318
     5319                $message = sprintf( __( 'Viewing groups of the type: %s', 'buddypress' ), '<strong>' . $type_object->labels['singular_name'] . '</strong>' );
     5320
     5321                /**
     5322                 * Filters the current group type message.
     5323                 *
     5324                 * @since 2.7.0
     5325                 *
     5326                 * @param string $message Message to filter.
     5327                 */
     5328                return apply_filters( 'bp_get_current_group_type_message', $message );
     5329        }
     5330
     5331/**
    51035332 * Is the current page a specific group admin screen?
    51045333 *
    51055334 * @since 1.1.0
  • src/bp-groups/classes/class-bp-groups-component.php

     
    8585        public $types = array();
    8686
    8787        /**
     88         * Current directory group type.
     89         *
     90         * @see groups_directory_groups_setup()
     91         *
     92         * @since 2.7.0
     93         * @var string
     94         */
     95        public $current_directory_type = '';
     96
     97        /**
    8898         * Start the groups component creation process.
    8999         *
    90100         * @since 1.5.0
  • src/bp-groups/classes/class-bp-groups-theme-compat.php

     
    4040                        return;
    4141
    4242                // Group Directory.
    43                 if ( ! bp_current_action() && ! bp_current_item() ) {
     43                if ( bp_is_groups_directory() ) {
    4444                        bp_update_is_directory( true, 'groups' );
    4545
    4646                        /**
  • src/bp-templates/bp-legacy/buddypress/groups/create.php

     
    132132
    133133                                </fieldset>
    134134
     135                                <?php // Group type selection ?>
     136                                <?php if ( $group_types = bp_groups_get_group_types( array( 'show_in_create_screen' => true ), 'objects' ) ): ?>
     137
     138                                        <fieldset class="group-create-types">
     139                                                <legend><?php _e( 'Group Types', 'buddypress' ); ?></legend>
     140
     141                                                <p><?php _e( 'Select the types this group should be a part of.', 'buddypress' ); ?></p>
     142
     143                                                <?php foreach ( $group_types as $type ) : ?>
     144                                                        <div class="checkbox">
     145                                                                <label for="<?php printf( 'group-type-%s', $type->name ); ?>"><input type="checkbox" name="group-types[]" id="<?php printf( 'group-type-%s', $type->name ); ?>" value="<?php esc_attr_e( $type->name ); ?>" /> <?php esc_html_e( $type->labels['name'] ); ?>
     146                                                                        <?php
     147                                                                                if ( isset( $type->description ) ) {
     148                                                                                        printf( __( '&ndash; %s', 'buddypress' ), '<span class="bp-group-type-desc">' . $type->description . '</span>' );
     149                                                                                }
     150                                                                        ?>
     151                                                                </label>
     152                                                        </div>
     153
     154                                                <?php endforeach; ?>
     155
     156                                        </fieldset>
     157
     158                                <?php endif; ?>
     159
    135160                                <fieldset class="group-create-invitations">
    136161
    137162                                        <legend><?php _e( 'Group Invitations', 'buddypress' ); ?></legend>
  • src/bp-templates/bp-legacy/buddypress/groups/groups-loop.php

     
    1919 */
    2020do_action( 'bp_before_groups_loop' ); ?>
    2121
     22<?php if ( bp_get_current_group_directory_type() ) : ?>
     23        <p class="current-group-type"><?php bp_current_group_directory_type_message() ?></p>
     24<?php endif; ?>
     25
    2226<?php if ( bp_has_groups( bp_ajax_querystring( 'groups' ) ) ) : ?>
    2327
    2428        <div id="pag-top" class="pagination">
  • src/bp-templates/bp-legacy/buddypress/groups/single/admin.php

     
    156156
    157157        </fieldset>
    158158
     159        <?php // Group type selection ?>
     160        <?php if ( $group_types = bp_groups_get_group_types( array( 'show_in_create_screen' => true ), 'objects' ) ): ?>
     161
     162                <fieldset class="group-create-types">
     163                        <legend><?php _e( 'Group Types', 'buddypress' ); ?></legend>
     164
     165                        <p><?php _e( 'Select the types this group should be a part of.', 'buddypress' ); ?></p>
     166
     167                        <?php foreach ( $group_types as $type ) : ?>
     168                                <div class="checkbox">
     169                                        <label for="<?php printf( 'group-type-%s', $type->name ); ?>">
     170                                                <input type="checkbox" name="group-types[]" id="<?php printf( 'group-type-%s', $type->name ); ?>" value="<?php esc_attr_e( $type->name ); ?>" <?php checked( bp_groups_has_group_type( bp_get_current_group_id(), $type->name ) ); ?>/> <?php esc_html_e( $type->labels['name'] ); ?>
     171                                                <?php
     172                                                        if ( isset( $type->description ) ) {
     173                                                                printf( __( '&ndash; %s', 'buddypress' ), '<span class="bp-group-type-desc">' . $type->description . '</span>' );
     174                                                        }
     175                                                ?>
     176                                        </label>
     177                                </div>
     178
     179                        <?php endforeach; ?>
     180
     181                </fieldset>
     182
     183        <?php endif; ?>
     184
    159185        <fieldset class="group-create-invitations">
    160186
    161187                <legend><?php _e( 'Group Invitations', 'buddypress' ); ?></legend>
  • src/bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php

     
    6363
    6464                                <?php bp_group_description(); ?>
    6565
     66                                <?php bp_group_type_list(); ?>
    6667                        </div>
    6768                </div><!-- #item-header-content -->
    6869
  • src/bp-templates/bp-legacy/buddypress/groups/single/group-header.php

     
    8383
    8484                <?php bp_group_description(); ?>
    8585
     86                <?php bp_group_type_list(); ?>
     87
    8688                <div id="item-buttons">
    8789
    8890                        <?php
  • tests/phpunit/testcases/groups/types.php

     
    251251
    252252                $this->assertEqualSets( array( 'bar' ), $types );
    253253        }
     254
     255        public function test_bp_groups_register_group_type_show_in_list_true_when_show_in_create_screen_true() {
     256                $object = bp_groups_register_group_type( 'foo', array(
     257                        'show_in_create_screen' => true,
     258                ) );
     259
     260                $this->assertTrue( $object->show_in_list );
     261        }
     262
     263        public function test_bp_groups_register_group_type_show_in_list_false_when_show_in_create_screen_false() {
     264                $object = bp_groups_register_group_type( 'foo', array(
     265                        'show_in_create_screen' => false,
     266                ) );
     267
     268                $this->assertFalse( $object->show_in_list );
     269        }
     270
     271        public function test_bp_groups_register_group_type_show_in_list_false_and_show_in_create_screen_true() {
     272                $object = bp_groups_register_group_type( 'foo', array(
     273                        'show_in_create_screen' => true,
     274                        'show_in_list' => false,
     275                ) );
     276
     277                $this->assertFalse( $object->show_in_list );
     278        }
     279
     280        public function test_bp_groups_set_group_type_should_remove_types_when_passing_an_empty_value() {
     281                $g = $this->factory->group->create( array( 'creator_id' => self::$u1 ) );
     282                bp_groups_register_group_type( 'foo' );
     283                bp_groups_set_group_type( $g, 'foo' );
     284
     285                // Make sure it's set up.
     286                $this->assertSame( 'foo', bp_groups_get_group_type( $g ) );
     287
     288                $this->assertSame( array(), bp_groups_set_group_type( $g, '' ) );
     289                $this->assertFalse( bp_groups_get_group_type( $g ) );
     290        }
     291
     292        public function test_bp_groups_set_group_type_should_set_multiple_types_when_passing_array_of_types() {
     293                $g = $this->factory->group->create( array( 'creator_id' => self::$u1 ) );
     294                bp_groups_register_group_type( 'foo' );
     295                bp_groups_register_group_type( 'bar' );
     296
     297                // Set multiple group types.
     298                $types = array( 'foo', 'bar' );
     299                bp_groups_set_group_type( $g, $types );
     300
     301                // Assert!
     302                $this->assertEqualSets( $types, bp_groups_get_group_type( $g, false ) );
     303        }
    254304}