Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/21/2014 01:50:30 PM (11 years ago)
Author:
boonebgorges
Message:

Introduce support for a 'type' sorting parameter in BP_Group_Member_Query

The 'type' parameter supports any of the arguments ('newest', 'active', etc)
supported by the parent class BP_User_Query. In addition, it's possible to
sort by type 'last_joined' and 'first_joined'.

This changeset also introduces the 'type' parameter through the
bp_group_has_members() function stack.

See #921

Props imath, boonebgorges

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/testcases/groups/class-bp-group-member-query.php

    r7505 r7948  
    335335    }
    336336
     337    /**
     338     * @group type
     339     */
     340    public function test_get_with_type_last_joined() {
     341        $g = $this->factory->group->create();
     342        $u1 = $this->create_user();
     343        $u2 = $this->create_user();
     344        $time = time();
     345
     346        $this->add_user_to_group( $u1, $g, array(
     347            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 500 ),
     348        ) );
     349
     350        $this->add_user_to_group( $u2, $g, array(
     351            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ),
     352        ) );
     353
     354        $query_members = new BP_Group_Member_Query( array(
     355            'group_id' => $g,
     356            'type' => 'last_joined',
     357        ) );
     358
     359        $ids = wp_parse_id_list( array_keys( $query_members->results ) );
     360        $this->assertEquals( array( $u2, $u1 ), $ids );
     361    }
     362
     363    /**
     364     * @group type
     365     */
     366    public function test_get_with_type_first_joined() {
     367        $g = $this->factory->group->create();
     368        $u1 = $this->create_user();
     369        $u2 = $this->create_user();
     370        $time = time();
     371
     372        $this->add_user_to_group( $u1, $g, array(
     373            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 500 ),
     374        ) );
     375
     376        $this->add_user_to_group( $u2, $g, array(
     377            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ),
     378        ) );
     379
     380        $query_members = new BP_Group_Member_Query( array(
     381            'group_id' => $g,
     382            'type' => 'first_joined',
     383        ) );
     384
     385        $ids = wp_parse_id_list( array_keys( $query_members->results ) );
     386        $this->assertEquals( array( $u1, $u2 ), $ids );
     387    }
     388
     389    /**
     390     * @group type
     391     */
     392    public function test_get_with_type_alphabetical() {
     393        $g = $this->factory->group->create();
     394        $u1 = $this->create_user( array(
     395            'display_name' => 'AAA',
     396        ) );
     397        $u2 = $this->create_user( array(
     398            'display_name' => 'CCC',
     399        ) );
     400        $u3 = $this->create_user( array(
     401            'display_name' => 'BBB',
     402        ) );
     403        $time = time();
     404
     405        $this->add_user_to_group( $u1, $g, array(
     406            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 100 ),
     407        ) );
     408
     409        $this->add_user_to_group( $u2, $g, array(
     410            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 200 ),
     411        ) );
     412
     413        $this->add_user_to_group( $u3, $g, array(
     414            'date_modified' => gmdate( 'Y-m-d H:i:s', $time - 300 ),
     415        ) );
     416
     417        $query_members = new BP_Group_Member_Query( array(
     418            'group_id' => $g,
     419            'type' => 'alphabetical',
     420        ) );
     421
     422        $ids = wp_parse_id_list( array_keys( $query_members->results ) );
     423        $this->assertEquals( array( $u1, $u3, $u2 ), $ids );
     424    }
    337425}
Note: See TracChangeset for help on using the changeset viewer.