Changeset 49303
- Timestamp:
- 10/24/2020 10:44:38 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-xmlrpc-server.php
r49271 r49303 3877 3877 } 3878 3878 3879 if ( empty( $content_struct['content'] ) ) {3880 return new IXR_Error( 403, __( 'Comment is required.' ) );3881 }3882 3883 3879 $comment = array( 3884 3880 'comment_post_ID' => $post_id, 3885 'comment_content' => $content_struct['content'],3881 'comment_content' => trim( $content_struct['content'] ), 3886 3882 ); 3887 3883 … … 3923 3919 3924 3920 $comment['comment_parent'] = isset( $content_struct['comment_parent'] ) ? absint( $content_struct['comment_parent'] ) : 0; 3921 3922 /** This filter is documented in wp-includes/comment.php */ 3923 $allow_empty = apply_filters( 'allow_empty_comment', false, $comment ); 3924 3925 if ( ! $allow_empty && '' === $comment['comment_content'] ) { 3926 return new IXR_Error( 403, __( 'Comment is required.' ) ); 3927 } 3925 3928 3926 3929 /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ -
trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
r49299 r49303 588 588 $prepared_comment['comment_type'] = 'comment'; 589 589 590 /*591 * Do not allow a comment to be created with missing or empty592 * comment_content. See wp_handle_comment_submission().593 */ 594 if ( empty( $prepared_comment['comment_content']) ) {590 if ( ! isset( $prepared_comment['comment_content'] ) ) { 591 $prepared_comment['comment_content'] = ''; 592 } 593 594 if ( ! $this->check_is_comment_content_allowed( $prepared_comment ) ) { 595 595 return new WP_Error( 596 596 'rest_comment_content_invalid', … … 1281 1281 */ 1282 1282 if ( isset( $request['content'] ) && is_string( $request['content'] ) ) { 1283 $prepared_comment['comment_content'] = $request['content'];1283 $prepared_comment['comment_content'] = trim( $request['content'] ); 1284 1284 } elseif ( isset( $request['content']['raw'] ) && is_string( $request['content']['raw'] ) ) { 1285 $prepared_comment['comment_content'] = $request['content']['raw'];1285 $prepared_comment['comment_content'] = trim( $request['content']['raw'] ); 1286 1286 } 1287 1287 … … 1867 1867 return $email; 1868 1868 } 1869 1870 /** 1871 * If empty comments are not allowed, checks if the provided comment content is not empty. 1872 * 1873 * @since 5.6.0 1874 * 1875 * @param array $prepared_comment The prepared comment data. 1876 * @return bool True if the content is allowed, false otherwise. 1877 */ 1878 protected function check_is_comment_content_allowed( $prepared_comment ) { 1879 $check = wp_parse_args( 1880 $prepared_comment, 1881 array( 1882 'comment_post_ID' => 0, 1883 'comment_parent' => 0, 1884 'user_ID' => 0, 1885 'comment_author' => null, 1886 'comment_author_email' => null, 1887 'comment_author_url' => null, 1888 ) 1889 ); 1890 1891 /** This filter is documented in wp-includes/comment.php */ 1892 $allow_empty = apply_filters( 'allow_empty_comment', false, $check ); 1893 1894 if ( $allow_empty ) { 1895 return true; 1896 } 1897 1898 /* 1899 * Do not allow a comment to be created with missing or empty 1900 * comment_content. See wp_handle_comment_submission(). 1901 */ 1902 return '' !== $check['comment_content']; 1903 } 1869 1904 } -
trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php
r49299 r49303 1399 1399 } 1400 1400 1401 /** 1402 * @ticket 43177 1403 */ 1404 public function test_create_item_invalid_only_spaces_content() { 1405 wp_set_current_user( self::$admin_id ); 1406 1407 $params = array( 1408 'post' => self::$post_id, 1409 'author_name' => 'Reverend Lovejoy', 1410 'author_email' => 'lovejoy@example.com', 1411 'author_url' => 'http://timothylovejoy.jr', 1412 'content' => ' ', 1413 ); 1414 1415 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' ); 1416 $request->add_header( 'content-type', 'application/json' ); 1417 $request->set_body( wp_json_encode( $params ) ); 1418 1419 $response = rest_get_server()->dispatch( $request ); 1420 $this->assertErrorResponse( 'rest_comment_content_invalid', $response, 400 ); 1421 } 1422 1423 /** 1424 * @ticket 43177 1425 */ 1426 public function test_create_item_allows_0_as_content() { 1427 wp_set_current_user( self::$admin_id ); 1428 1429 $params = array( 1430 'post' => self::$post_id, 1431 'author_name' => 'Reverend Lovejoy', 1432 'author_email' => 'lovejoy@example.com', 1433 'author_url' => 'http://timothylovejoy.jr', 1434 'content' => '0', 1435 ); 1436 1437 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' ); 1438 $request->add_header( 'content-type', 'application/json' ); 1439 $request->set_body( wp_json_encode( $params ) ); 1440 1441 $response = rest_get_server()->dispatch( $request ); 1442 $this->assertSame( 201, $response->get_status() ); 1443 $this->assertEquals( '0', $response->get_data()['content']['raw'] ); 1444 } 1445 1446 /** 1447 * @ticket 43177 1448 */ 1449 public function test_create_item_allow_empty_comment_filter() { 1450 add_filter( 'allow_empty_comment', '__return_true' ); 1451 1452 wp_set_current_user( self::$admin_id ); 1453 1454 $params = array( 1455 'post' => self::$post_id, 1456 'author_name' => 'Reverend Lovejoy', 1457 'author_email' => 'lovejoy@example.com', 1458 'author_url' => 'http://timothylovejoy.jr', 1459 'content' => '', 1460 ); 1461 1462 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' ); 1463 $request->add_header( 'content-type', 'application/json' ); 1464 $request->set_body( wp_json_encode( $params ) ); 1465 1466 $response = rest_get_server()->dispatch( $request ); 1467 $this->assertSame( 201, $response->get_status() ); 1468 $this->assertEquals( '', $response->get_data()['content']['raw'] ); 1469 } 1470 1401 1471 public function test_create_item_invalid_date() { 1402 1472 wp_set_current_user( self::$admin_id ); -
trunk/tests/phpunit/tests/xmlrpc/wp/newComment.php
r49271 r49303 51 51 } 52 52 53 /** 54 * @ticket 43177 55 */ 56 public function test_empty_content_multiple_spaces() { 57 $result = $this->myxmlrpcserver->wp_newComment( 58 array( 59 1, 60 'administrator', 61 'administrator', 62 self::$post->ID, 63 array( 64 'content' => ' ', 65 ), 66 ) 67 ); 68 69 $this->assertIXRError( $result ); 70 $this->assertSame( 403, $result->code ); 71 } 72 73 /** 74 * @ticket 43177 75 */ 76 public function test_valid_comment_0_content() { 77 $result = $this->myxmlrpcserver->wp_newComment( 78 array( 79 1, 80 'administrator', 81 'administrator', 82 self::$post->ID, 83 array( 84 'content' => '0', 85 ), 86 ) 87 ); 88 89 $this->assertNotIXRError( $result ); 90 } 91 92 /** 93 * @ticket 43177 94 */ 95 public function test_valid_comment_allow_empty_content() { 96 add_filter( 'allow_empty_comment', '__return_true' ); 97 $result = $this->myxmlrpcserver->wp_newComment( 98 array( 99 1, 100 'administrator', 101 'administrator', 102 self::$post->ID, 103 array( 104 'content' => ' ', 105 ), 106 ) 107 ); 108 109 $this->assertNotIXRError( $result ); 110 } 111 53 112 function test_new_comment_post_closed() { 54 113 $post = self::factory()->post->create_and_get(
Note: See TracChangeset
for help on using the changeset viewer.