Ticket #33154: 33154.5.diff
File 33154.5.diff, 4.4 KB (added by , 9 years ago) |
---|
-
src/wp-admin/includes/class-wp-comments-list-table.php
472 472 return; 473 473 } 474 474 475 $post = get_post();476 477 475 $the_comment_status = wp_get_comment_status( $comment->comment_ID ); 478 476 479 477 $out = ''; … … 534 532 535 533 $format = '<a data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s" title="%s" href="#">%s</a>'; 536 534 537 $actions['quickedit'] = sprintf( $format, $comment->comment_ID, $ post->ID, 'edit', 'vim-q comment-inline',esc_attr__( 'Edit this item inline' ), __( 'Quick Edit' ) );535 $actions['quickedit'] = sprintf( $format, $comment->comment_ID, $comment->comment_post_ID, 'edit', 'vim-q comment-inline',esc_attr__( 'Edit this item inline' ), __( 'Quick Edit' ) ); 538 536 539 $actions['reply'] = sprintf( $format, $comment->comment_ID, $ post->ID, 'replyto', 'vim-r comment-inline', esc_attr__( 'Reply to this comment' ), __( 'Reply' ) );537 $actions['reply'] = sprintf( $format, $comment->comment_ID, $comment->comment_post_ID, 'replyto', 'vim-r comment-inline', esc_attr__( 'Reply to this comment' ), __( 'Reply' ) ); 540 538 } 541 539 542 540 /** This filter is documented in wp-admin/includes/dashboard.php */ … … 672 670 public function column_response() { 673 671 $post = get_post(); 674 672 673 if ( ! $post ) { 674 return; 675 } 676 675 677 if ( isset( $this->pending_count[$post->ID] ) ) { 676 678 $pending_comments = $this->pending_count[$post->ID]; 677 679 } else { -
src/wp-includes/capabilities.php
1305 1305 if ( empty( $comment ) ) 1306 1306 break; 1307 1307 $post = get_post( $comment->comment_post_ID ); 1308 $caps = map_meta_cap( 'edit_post', $user_id, $post->ID ); 1308 1309 /* 1310 * If the post doesn't exist, we have an orphaned comment. 1311 * Fall back to the edit_posts capability, instead. 1312 */ 1313 if ( $post ) { 1314 $caps = map_meta_cap( 'edit_post', $user_id, $post->ID ); 1315 } else { 1316 $caps = map_meta_cap( 'edit_posts', $user_id ); 1317 } 1309 1318 break; 1310 1319 case 'unfiltered_upload': 1311 1320 if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) ) ) -
tests/phpunit/tests/ajax/EditComment.php
75 75 } 76 76 77 77 /** 78 * @ticket 33154 79 */ 80 function test_editor_can_edit_orphan_comments() { 81 global $wpdb; 82 83 // Become an editor 84 $this->_setRole( 'editor' ); 85 86 // Get a comment 87 $comments = get_comments( array( 88 'post_id' => $this->_comment_post->ID 89 ) ); 90 $comment = array_pop( $comments ); 91 92 // Manually update the comment_post_ID, because wp_update_comment() will prevent it. 93 $wpdb->query( "UPDATE {$wpdb->comments} SET comment_post_ID=0 WHERE comment_ID={$comment->comment_ID}" ); 94 clean_comment_cache( $comment->comment_ID ); 95 96 // Set up a default request 97 $_POST['_ajax_nonce-replyto-comment'] = wp_create_nonce( 'replyto-comment' ); 98 $_POST['comment_ID'] = $comment->comment_ID; 99 $_POST['content'] = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; 100 101 // Make the request 102 try { 103 $this->_handleAjax( 'edit-comment' ); 104 } catch ( WPAjaxDieContinueException $e ) { 105 unset( $e ); 106 } 107 108 // Get the response 109 $xml = simplexml_load_string( $this->_last_response, 'SimpleXMLElement', LIBXML_NOCDATA ); 110 111 // Check the meta data 112 $this->assertEquals( -1, (string) $xml->response[0]->edit_comment['position'] ); 113 $this->assertEquals( $comment->comment_ID, (string) $xml->response[0]->edit_comment['id'] ); 114 $this->assertEquals( 'edit-comment_' . $comment->comment_ID, (string) $xml->response['action'] ); 115 116 // Check the payload 117 $this->assertNotEmpty( (string) $xml->response[0]->edit_comment[0]->response_data ); 118 119 // And supplemental is empty 120 $this->assertEmpty( (string) $xml->response[0]->edit_comment[0]->supplemental ); 121 } 122 123 /** 78 124 * Get comments as a non-privileged user (subscriber) 79 125 * Expects test to fail 80 126 * @return void