Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
04/09/2015 03:31:18 PM (10 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.