Skip to:
Content

BuddyPress.org

Changeset 12482


Ignore:
Timestamp:
10/27/2019 04:10:39 AM (5 years ago)
Author:
imath
Message:

Only load BP REST API Avatar Controllers when avatar uploads are on

  • Move the loading of the BP_REST_Attachments_Member_Avatar_Endpoint controller into the xProfile component's class. User Avatar is an xProfile feature.
  • Make sure to check the community administrator allowed member avatar uploads before loading this controller.
  • Make sure to check the community administrator allowed group avatar uploads before loading BP_REST_Attachments_Group_Avatar_Endpoint.

See #8151 (Trunk)

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/classes/class-bp-groups-component.php

    r12463 r12482  
    933933     */
    934934    public function rest_api_init( $controllers = array() ) {
    935         parent::rest_api_init( array(
     935        $controllers = array(
    936936            'BP_REST_Groups_Endpoint',
    937937            'BP_REST_Group_Membership_Endpoint',
    938938            'BP_REST_Group_Invites_Endpoint',
    939939            'BP_REST_Group_Membership_Request_Endpoint',
    940             'BP_REST_Attachments_Group_Avatar_Endpoint',
    941         ) );
     940        );
     941
     942        // Only Load the Group's Avatar controller if Group Avatar uploads are allowed.
     943        if ( ! bp_disable_group_avatar_uploads() ) {
     944            $controllers[] = 'BP_REST_Attachments_Group_Avatar_Endpoint';
     945        }
     946
     947        parent::rest_api_init( $controllers );
    942948    }
    943949}
  • trunk/src/bp-members/classes/class-bp-members-component.php

    r12463 r12482  
    474474            'BP_REST_Components_Endpoint',
    475475            'BP_REST_Members_Endpoint',
    476             'BP_REST_Attachments_Member_Avatar_Endpoint',
    477476        ) );
    478477    }
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-component.php

    r12463 r12482  
    500500     */
    501501    public function rest_api_init( $controllers = array() ) {
    502         parent::rest_api_init( array(
     502        $controllers = array(
    503503            'BP_REST_XProfile_Fields_Endpoint',
    504504            'BP_REST_XProfile_Field_Groups_Endpoint',
    505505            'BP_REST_XProfile_Data_Endpoint',
    506         ) );
     506        );
     507
     508        // Only Load the Member's Avatar controller if Avatar uploads are allowed.
     509        if ( ! bp_disable_avatar_uploads() ) {
     510            $controllers[] = 'BP_REST_Attachments_Member_Avatar_Endpoint';
     511        }
     512
     513        parent::rest_api_init( $controllers );
    507514    }
    508515}
  • trunk/tests/phpunit/assets/bp-rest-api-controllers.php

    r12463 r12482  
    1818    public function __construct() {
    1919        $this->namespace = bp_rest_namespace() . '/' . bp_rest_version();
    20         $this->rest_base = 'members';
     20        $this->rest_base = 'xprofile';
    2121    }
    2222
     
    5353    }
    5454}
     55
     56/**
     57 * BP xProfiles Data REST Controller's mock.
     58 */
     59class BP_REST_XProfile_Data_Endpoint extends BP_REST_Mock_Class {
     60    public function __construct() {
     61        $this->namespace = bp_rest_namespace() . '/' . bp_rest_version();
     62        $this->rest_base = 'xprofile';
     63    }
     64
     65    public function register_routes( $controller = '' ) {
     66        parent::register_routes( 'BP_REST_XProfile_Data_Endpoint' );
     67    }
     68}
     69
     70/**
     71 * BP xProfiles Field Groups REST Controller's mock.
     72 */
     73class BP_REST_XProfile_Field_Groups_Endpoint extends BP_REST_Mock_Class {
     74    public function __construct() {
     75        $this->namespace = bp_rest_namespace() . '/' . bp_rest_version();
     76        $this->rest_base = 'xprofile/groups';
     77    }
     78
     79    public function register_routes( $controller = '' ) {
     80        parent::register_routes( 'BP_REST_XProfile_Field_Groups_Endpoint' );
     81    }
     82}
     83
     84/**
     85 * BP xProfiles Fields REST Controller's mock.
     86 */
     87class BP_REST_XProfile_Fields_Endpoint extends BP_REST_Mock_Class {
     88    public function __construct() {
     89        $this->namespace = bp_rest_namespace() . '/' . bp_rest_version();
     90        $this->rest_base = 'xprofile/fields';
     91    }
     92
     93    public function register_routes( $controller = '' ) {
     94        parent::register_routes( 'BP_REST_XProfile_Fields_Endpoint' );
     95    }
     96}
  • trunk/tests/phpunit/testcases/core/class-bp-component.php

    r12463 r12482  
    3333            'BP_REST_Components_Endpoint',
    3434            'BP_REST_Members_Endpoint',
    35             'BP_REST_Attachments_Member_Avatar_Endpoint',
    3635        ) );
    3736    }
     
    4948        $this->assertSame( $bp->unit_test_rest->controllers, array(
    5049            'BP_REST_Components_Endpoint',
    51             'BP_REST_Attachments_Member_Avatar_Endpoint',
    5250        ) );
    5351    }
     
    6664            'BP_REST_Components_Endpoint',
    6765            'BP_REST_Members_Endpoint',
     66        ) );
     67    }
     68
     69    public function test_rest_api_init_for_xprofile_component() {
     70        $bp_xprofile = new BP_XProfile_Component();
     71        $bp          = buddypress();
     72
     73        $bp_xprofile->rest_api_init();
     74
     75        $this->assertSame( $bp->unit_test_rest->controllers, array(
     76            'BP_REST_XProfile_Fields_Endpoint',
     77            'BP_REST_XProfile_Field_Groups_Endpoint',
     78            'BP_REST_XProfile_Data_Endpoint',
    6879            'BP_REST_Attachments_Member_Avatar_Endpoint',
    6980        ) );
    7081    }
     82
     83    public function test_rest_api_init_for_xprofile_component_without_avatar_enabled() {
     84        add_filter( 'bp_disable_avatar_uploads', '__return_true' );
     85
     86        $bp_xprofile = new BP_XProfile_Component();
     87        $bp          = buddypress();
     88
     89        $bp_xprofile->rest_api_init();
     90
     91        remove_filter( 'bp_disable_avatar_uploads', '__return_true' );
     92
     93        $this->assertSame( $bp->unit_test_rest->controllers, array(
     94            'BP_REST_XProfile_Fields_Endpoint',
     95            'BP_REST_XProfile_Field_Groups_Endpoint',
     96            'BP_REST_XProfile_Data_Endpoint',
     97        ) );
     98    }
    7199}
Note: See TracChangeset for help on using the changeset viewer.