Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
04/09/2015 03:31:18 PM (12 years ago)
Author:
boonebgorges
Message:

Introduce member-type-specific Members directories.

The new 'has_directory' argument for bp_register_member_type() allows
developers to specify whether a list of members matching a given type 'foo'
should be available at http://example.com/members/type/foo/. A slug can be
passed to 'has_directory' to customize the URL used for the member type's
directory.

Note that plugins registering member types must do so at the new hook
'bp_register_member_types' in order to be able to customize the 'has_directory'
value (from its default of true).

bp_has_members() automatically detects the presence of a member type in a
URL. When no member type of the form example.com/members/type/foo/ is found,
URLs of the form example.com/members/?member_type=foo will be detected.

See #6286.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/routing/members.php

    r8958 r9723  
    1010                parent::setUp();
    1111
     12                buddypress()->members->types = array();
    1213                $this->old_current_user = get_current_user_id();
    1314                $this->set_current_user( $this->factory->user->create( array( 'user_login' => 'paulgibbs', 'role' => 'subscriber' ) ) );
    … …  
    1516
    1617        public function tearDown() {
     18                $this->set_current_user( $this->old_current_user );
    1719                parent::tearDown();
    18                 $this->set_current_user( $this->old_current_user );
    1920        }
    2021
    … …  
    2829                $this->assertTrue( bp_is_my_profile() );
    2930        }
     31
     32        /**
     33         * @ticket BP6286
     34         * @group member_types
     35         */
     36        public function test_member_directory_with_member_type() {
     37                bp_register_member_type( 'foo' );
     38                $this->go_to( bp_get_members_directory_permalink() . 'type/foo/' );
     39                $this->assertTrue( bp_is_members_component() );
     40        }
     41
     42        /**
     43         * @ticket BP6286
     44         * @group member_types
     45         */
     46        public function test_member_directory_with_member_type_should_obey_filtered_type_slug() {
     47                bp_register_member_type( 'foo' );
     48
     49                add_filter( 'bp_members_member_type_base', array( $this, 'filter_member_type_base' ) );
     50                $this->go_to( bp_get_members_directory_permalink() . 'buddypress-member-type/foo/' );
     51                remove_filter( 'bp_members_member_type_base', array( $this, 'filter_member_type_base' ) );
     52                $this->assertTrue( bp_is_members_component() );
     53        }
     54
     55        public function filter_member_type_base( $base ) {
     56                return 'buddypress-member-type';
     57        }
     58
     59        /**
     60         * @ticket BP6286
     61         * @group member_types
     62         */
     63        public function test_member_directory_with_member_type_that_has_custom_directory_slug() {
     64                bp_register_member_type( 'foo', array( 'has_directory' => 'foos' ) );
     65                $this->go_to( bp_get_members_directory_permalink() . 'type/foos/' );
     66                $this->assertTrue( bp_is_members_component() );
     67        }
     68
     69        /**
     70         * @ticket BP6286
     71         * @group member_types
     72         */
     73        public function test_member_directory_with_member_type_should_be_overridden_by_member_with_same_nicename() {
     74                $u = $this->factory->user->create( array( 'user_nicename' => 'foo' ) );
     75                bp_register_member_type( 'foo' );
     76                $this->go_to( bp_get_members_directory_permalink() . 'type/foo/' );
     77        }
     78
     79        /**
     80         * @ticket BP6286
     81         * @group member_types
     82         */
     83        public function test_member_directory_should_404_for_member_types_that_have_no_directory() {
     84                bp_register_member_type( 'foo', array( 'has_directory' => false ) );
     85                $this->go_to( bp_get_members_directory_permalink() . 'type/foo/' );
     86                $this->assertTrue( is_404() );
     87        }
    3088}
Note: See TracChangeset for help on using the changeset viewer.