Ticket #39699: 39699.patch
File 39699.patch, 4.2 KB (added by , 8 years ago) |
---|
-
src/wp-includes/class-wp-xmlrpc-server.php
1378 1378 $post_data['edit_date'] = true; 1379 1379 } 1380 1380 1381 /** 1382 * Filter XML-RPC data to be added/updated via XML-RPC before any DB insertion 1383 * 1384 * @since 4.8 1385 * 1386 * @param array $post_data Parsed array of post data. 1387 * @param array $content_struct Post data array. 1388 * @param WP_User $user WP_User object. 1389 * 1390 * @return array|IXR_Error 1391 */ 1392 $post_data = apply_filters( 'xmlrpc_before_insert_post', $post_data, $content_struct, $user ); 1393 if ( $post_data instanceof IXR_Error ) { 1394 return $post_data; 1395 } 1396 1381 1397 if ( ! isset( $post_data['ID'] ) ) 1382 1398 $post_data['ID'] = get_default_post_to_edit( $post_data['post_type'], true )->ID; 1383 1399 $post_ID = $post_data['ID']; -
tests/phpunit/tests/xmlrpc/wp/newPost.php
372 372 $this->assertStringMatchesFormat( '%d', $result ); 373 373 $this->assertEquals( $date_string , $fetched_post->post_date_gmt ); 374 374 } 375 376 /** 377 * @ticket 378 */ 379 function test_xmlrpc_before_insert_post () { 380 $this->make_user_by_role( 'editor' ); 375 381 382 // Add filter 383 add_filter( 'xmlrpc_before_insert_post', array( $this, 'filter_xmlrpc_before_insert_post' ), 10, 3 ); 384 385 $result = $this->myxmlrpcserver->wp_newPost( array( 1, 'editor', 'editor', array( 'post_title' => 'Too short', 'custom_fields' => array( array( 'key' => 'custom_field_to_create', 'value' => '123456789' ) ) ) ) ); 386 $this->assertInstanceOf( 'IXR_Error', $result ); 387 $this->assertEquals( 500, $result->code ); 388 $this->assertEquals( 'Post title too short.', $result->message ); 389 390 $result = $this->myxmlrpcserver->wp_newPost( array( 1, 'editor', 'editor', array( 'post_title' => 'Right title', 'custom_fields' => array( array( 'key' => 'custom_field_to_create', 'value' => '123456789' ) ) ) ) ); 391 $fetched_post = get_post( $result ); 392 $this->assertStringMatchesFormat( '%d', $result ); 393 $this->assertEquals( 'Right title', $fetched_post->post_title ); 394 } 395 396 function filter_xmlrpc_before_insert_post ( $post_data, $content_struct, $user ) { 397 398 if ( strlen( $post_data['post_title'] ) < 10 ) { 399 return new \IXR_Error( 500, 'Post title too short.' ); 400 } 401 return $post_data; 402 } 403 376 404 } -
tests/phpunit/tests/xmlrpc/wp/editPost.php
437 437 $future_date_string = strftime( '%Y-%m-%d %H:%M:%S', $future_time ); 438 438 $this->assertEquals( $future_date_string, $after->post_date ); 439 439 } 440 441 /** 442 * @ticket 443 */ 444 function test_xmlrpc_before_insert_post () { 445 $this->make_user_by_role( 'editor' ); 446 447 $post_id = self::factory()->post->create( array( 448 'post_title' => 'Post title', 449 'post_content' => 'Post edited', 450 'post_status' => 'draft', 451 'post_type' => 'post' 452 ) ); 453 454 // Add filter 455 add_filter( 'xmlrpc_before_insert_post', array( $this, 'filter_xmlrpc_before_insert_post' ), 10, 3 ); 456 457 $result = $this->myxmlrpcserver->wp_editPost( array( 1, 'editor', 'editor', $post_id, array( 'post_title' => 'Too short' ) ) ); 458 $this->assertInstanceOf( 'IXR_Error', $result ); 459 $this->assertEquals( 500, $result->code ); 460 $this->assertEquals( 'Post title too short.', $result->message ); 461 462 $result = $this->myxmlrpcserver->wp_editPost( array( 1, 'editor', 'editor', $post_id, array( 'post_title' => 'Right title' ) ) ); 463 $fetched_post = get_post( $post_id ); 464 $this->assertNotInstanceOf( 'IXR_Error', $result ); 465 $this->assertTrue($result); 466 $this->assertEquals( 'Right title', $fetched_post->post_title ); 467 } 468 469 function filter_xmlrpc_before_insert_post ( $post_data, $content_struct, $user ) { 470 if ( strlen( $post_data['post_title'] ) < 10 ) { 471 return new \IXR_Error( 500, 'Post title too short.' ); 472 } 473 return $post_data; 474 } 440 475 }