Make WordPress Core


Ignore:
Timestamp:
09/14/2013 06:35:43 PM (12 years ago)
Author:
wonderboymusic
Message:

Fix several esoteric errors related to AJAX unit tests for comments:

  • wp_ajax_get_comments() relies on the $post_id global - even though $_POST['p'] is passed to every action in the test methods. If $post_id is still lingering in between tests and doesn't match p in the request, the cap check might pass while the queries for comments will blow up. I added unset( $GLOBALS['post_id'] ) to Tests_Ajax_GetComments::setUp().
  • If the global $post_id is empty, but $_REQUEST['p'] is not, $post_id is now set to absint( $_REQUEST['p'] ) and sanity-checked in wp_ajax_get_comments().
  • map_meta_cap() always assumes that get_comment() succeeds when checking for the edit_comment cap. It doesn't. I added sanity checks in a few places where it will break early if get_post() or get_comment() are empty.
  • wp_update_comment() always assumes get_comment() succeeds. It doesn't. I added a check for empty.

All AJAX unit tests run and pass in debug mode. All general unit tests pass against these changes.

Fixes #25282.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/comment.php

    r25313 r25438  
    15061506    // First, get all of the original fields
    15071507    $comment = get_comment($commentarr['comment_ID'], ARRAY_A);
     1508    if ( empty( $comment ) )
     1509        return 0;
    15081510
    15091511    // Escape data pulled from DB.
Note: See TracChangeset for help on using the changeset viewer.