WordPress.org

Make WordPress Core

Ticket #40344: 40344.2.diff

File 40344.2.diff, 2.2 KB (added by jnylen0, 2 years ago)

Use [0] instead of reset; whitespace fixes; use array() instead of []

  • src/wp-includes/rest-api/class-wp-rest-request.php

    diff --git a/src/wp-includes/rest-api/class-wp-rest-request.php b/src/wp-includes/rest-api/class-wp-rest-request.php
    index 0a26d0f..e41c014 100644
    a b class WP_REST_Request implements ArrayAccess { 
    354354         */
    355355        protected function get_parameter_order() {
    356356                $order = array();
    357                 $order[] = 'JSON';
     357
     358                $content_type = $this->get_content_type();
     359                if ( $content_type['value'] === 'application/json' ) {
     360                        $order[] = 'JSON';
     361                }
    358362
    359363                $this->parse_json_params();
    360364
    class WP_REST_Request implements ArrayAccess { 
    424428         * @param mixed  $value Parameter value.
    425429         */
    426430        public function set_param( $key, $value ) {
    427                 switch ( $this->method ) {
    428                         case 'POST':
    429                                 $this->params['POST'][ $key ] = $value;
    430                                 break;
    431 
    432                         default:
    433                                 $this->params['GET'][ $key ] = $value;
    434                                 break;
    435                 }
     431                $order = $this->get_parameter_order();
     432                $this->params[ $order[0] ][ $key ] = $value;
    436433        }
    437434
    438435        /**
  • tests/phpunit/tests/rest-api/rest-request.php

    diff --git a/tests/phpunit/tests/rest-api/rest-request.php b/tests/phpunit/tests/rest-api/rest-request.php
    index db876bd..b7f043d 100644
    a b class Tests_REST_Request extends WP_UnitTestCase { 
    580580                $request = WP_REST_Request::from_url( $using_home );
    581581                $this->assertFalse( $request );
    582582        }
     583
     584        public function test_set_param() {
     585                $request = new WP_REST_Request();
     586                $request->set_param( 'param', 'value' );
     587                $this->assertEquals( 'value', $request->get_param( 'param' ) );
     588        }
     589
     590        public function test_set_param_follows_parameter_order() {
     591                $request = new WP_REST_Request();
     592                $request->add_header( 'content-type', 'application/json' );
     593                $request->set_method( 'POST' );
     594                $request->set_body( wp_json_encode( array(
     595                        'param' => 'value'
     596                ) ) );
     597                $this->assertEquals( 'value', $request->get_param( 'param' ) );
     598                $this->assertEquals(
     599                        array( 'param' => 'value' ),
     600                        $request->get_json_params()
     601                );
     602
     603                $request->set_param( 'param', 'new_value' );
     604                $this->assertEquals( 'new_value', $request->get_param( 'param' ) );
     605                $this->assertEquals(
     606                        array( 'param' => 'new_value' ),
     607                        $request->get_json_params()
     608                );
     609        }
    583610}