Make WordPress Core

Ticket #43751: 43751.diff

File 43751.diff, 6.7 KB (added by flixos90, 6 years ago)
  • src/wp-admin/includes/ms-admin-filters.php

     
    99
    1010// Media Hooks.
    1111add_filter( 'wp_handle_upload_prefilter', 'check_upload_size' );
     12add_filter( 'wp_handle_sideload_prefilter', 'check_upload_size' );
    1213
    1314// User Hooks
    1415add_action( 'user_admin_notices', 'new_user_email_admin_notice' );
  • src/wp-admin/includes/ms.php

     
    4545                $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' );
    4646        }
    4747
    48         if ( $file['error'] != '0' && ! isset( $_POST['html-upload'] ) && ! wp_doing_ajax() ) {
     48        if ( $file['error'] != '0' && ! isset( $_POST['html-upload'] ) && ! wp_doing_ajax() && ! ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) {
    4949                wp_die( $file['error'] . ' <a href="javascript:history.go(-1)">' . __( 'Back' ) . '</a>' );
    5050        }
    5151
  • src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php

     
    513513                // Get the content-type.
    514514                $type = array_shift( $headers['content_type'] );
    515515
     516                // Prevent multisite lookups from calling wp_die() when running unit tests.
     517                if ( defined( 'DIR_TESTDATA' ) && DIR_TESTDATA ) {
     518                        $_POST['html-upload'] = true;
     519                }
     520
    516521                /** Include admin functions to get access to wp_tempnam() and wp_handle_sideload() */
    517522                require_once ABSPATH . 'wp-admin/includes/admin.php';
    518523
     
    530535
    531536                // Now, sideload it in.
    532537                $file_data = array(
    533                         'error'    => null,
     538                        'error'    => '0',
    534539                        'tmp_name' => $tmpfname,
    535540                        'name'     => $filename,
    536541                        'type'     => $type,
     
    698703                        'test_form' => false,
    699704                );
    700705
    701                 // Bypasses is_uploaded_file() when running unit tests.
     706                // Bypass is_uploaded_file() and prevent multisite lookups from calling wp_die() when running unit tests.
    702707                if ( defined( 'DIR_TESTDATA' ) && DIR_TESTDATA ) {
    703                         $overrides['action'] = 'wp_handle_mock_upload';
     708                        $overrides['action']  = 'wp_handle_mock_upload';
     709                        $_POST['html-upload'] = true;
    704710                }
    705711
    706712                /** Include admin functions to get access to wp_handle_upload() */
  • tests/phpunit/tests/rest-api/rest-attachments-controller.php

     
    13671367
    13681368        }
    13691369
     1370        /**
     1371         * @ticket 43751
     1372         * @group multisite
     1373         * @group ms-required
     1374         */
     1375        public function test_create_item_with_file_exceeds_multisite_max_filesize() {
     1376                wp_set_current_user( self::$author_id );
     1377                add_filter( 'wp_handle_mock_upload_prefilter', 'check_upload_size' );
     1378                update_site_option( 'fileupload_maxk', 1 );
     1379                update_site_option( 'upload_space_check_disabled', false );
     1380
     1381                $request = new WP_REST_Request( 'POST', '/wp/v2/media' );
     1382                $request->set_file_params(
     1383                        array(
     1384                                'file' => array(
     1385                                        'error'    => '0',
     1386                                        'file'     => file_get_contents( $this->test_file ),
     1387                                        'name'     => 'canola.jpg',
     1388                                        'size'     => filesize( $this->test_file ),
     1389                                        'tmp_name' => $this->test_file,
     1390                                ),
     1391                        )
     1392                );
     1393                $request->set_param( 'title', 'My title is very cool' );
     1394                $request->set_param( 'caption', 'This is a better caption.' );
     1395                $request->set_header( 'Content-MD5', md5_file( $this->test_file ) );
     1396
     1397                $response = rest_get_server()->dispatch( $request );
     1398                $this->assertErrorResponse( 'rest_upload_unknown_error', $response, 500 );
     1399        }
     1400
     1401        /**
     1402         * @ticket 43751
     1403         * @group multisite
     1404         * @group ms-required
     1405         */
     1406        public function test_create_item_with_data_exceeds_multisite_max_filesize() {
     1407                wp_set_current_user( self::$author_id );
     1408                update_site_option( 'fileupload_maxk', 1 );
     1409                update_site_option( 'upload_space_check_disabled', false );
     1410
     1411                $request = new WP_REST_Request( 'POST', '/wp/v2/media' );
     1412                $request->set_header( 'Content-Type', 'image/jpeg' );
     1413                $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' );
     1414                $request->set_body( file_get_contents( $this->test_file ) );
     1415                $request->set_param( 'title', 'My title is very cool' );
     1416                $request->set_param( 'caption', 'This is a better caption.' );
     1417
     1418                $response = rest_get_server()->dispatch( $request );
     1419                $this->assertErrorResponse( 'rest_upload_sideload_error', $response, 500 );
     1420        }
     1421
     1422        /**
     1423         * @ticket 43751
     1424         * @group multisite
     1425         * @group ms-required
     1426         */
     1427        public function test_create_item_with_file_exceeds_multisite_site_upload_space() {
     1428                wp_set_current_user( self::$author_id );
     1429                add_filter( 'wp_handle_mock_upload_prefilter', 'check_upload_size' );
     1430                add_filter( 'get_space_allowed', '__return_zero' );
     1431                update_site_option( 'upload_space_check_disabled', false );
     1432
     1433                $request = new WP_REST_Request( 'POST', '/wp/v2/media' );
     1434                $request->set_file_params(
     1435                        array(
     1436                                'file' => array(
     1437                                        'error'    => '0',
     1438                                        'file'     => file_get_contents( $this->test_file ),
     1439                                        'name'     => 'canola.jpg',
     1440                                        'size'     => filesize( $this->test_file ),
     1441                                        'tmp_name' => $this->test_file,
     1442                                ),
     1443                        )
     1444                );
     1445                $request->set_param( 'title', 'My title is very cool' );
     1446                $request->set_param( 'caption', 'This is a better caption.' );
     1447                $request->set_header( 'Content-MD5', md5_file( $this->test_file ) );
     1448
     1449                $response = rest_get_server()->dispatch( $request );
     1450                $this->assertErrorResponse( 'rest_upload_unknown_error', $response, 500 );
     1451        }
     1452
     1453        /**
     1454         * @ticket 43751
     1455         * @group multisite
     1456         * @group ms-required
     1457         */
     1458        public function test_create_item_with_data_exceeds_multisite_site_upload_space() {
     1459                wp_set_current_user( self::$author_id );
     1460                add_filter( 'get_space_allowed', '__return_zero' );
     1461                update_site_option( 'upload_space_check_disabled', false );
     1462
     1463                $request = new WP_REST_Request( 'POST', '/wp/v2/media' );
     1464                $request->set_header( 'Content-Type', 'image/jpeg' );
     1465                $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' );
     1466                $request->set_body( file_get_contents( $this->test_file ) );
     1467                $request->set_param( 'title', 'My title is very cool' );
     1468                $request->set_param( 'caption', 'This is a better caption.' );
     1469
     1470                $response = rest_get_server()->dispatch( $request );
     1471                $this->assertErrorResponse( 'rest_upload_sideload_error', $response, 500 );
     1472        }
     1473
    13701474}