WordPress.org

Make WordPress Core

Changeset 21922


Ignore:
Timestamp:
09/20/2012 10:46:50 AM (8 years ago)
Author:
westi
Message:

Posting: Improve the invalid date protection code based on feedback from nacin.

  • Introduce a wp_checkdate() function with a single filter to centralise the code that validates dates.
  • Improve the error message
  • Correctly handle the return value of wp_insert_post which is not always a WP_Error on failure

Fixes #17180

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/post.php

    r21921 r21922  
    123123        $mn = ($mn > 59 ) ? $mn -60 : $mn;
    124124        $ss = ($ss > 59 ) ? $ss -60 : $ss;
    125         $valid_date = apply_filters( '_wp_translate_postdata_valid_date', checkdate( $mm, $jj, $aa ), $post_data );
     125        $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
     126        $valid_date = wp_checkdate( $mm, $jj, $aa, $post_data['post_date'] );
    126127        if ( !$valid_date ) {
    127             return new WP_Error( 'invalid_date', __( 'Woops, the provided date is invalid.' ) );
    128         }
    129         $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
     128            return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
     129        }
    130130        $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
    131131    }
  • trunk/wp-includes/functions.php

    r21865 r21922  
    37043704}
    37053705
     3706/**
     3707 * Test if the supplied date is valid for the Gregorian calendar
     3708 *
     3709 * @since 3.5.0
     3710 *
     3711 * @return bool true|false
     3712 */
     3713function wp_checkdate( $month, $day, $year, $source_date ) {
     3714    return apply_filters( 'wp_checkdate', checkdate( $month, $day, $year ), $source_date );
     3715}
  • trunk/wp-includes/post.php

    r21921 r21922  
    26382638        $jj = substr( $post_date, 8, 2 );
    26392639        $aa = substr( $post_date, 0, 4 );
    2640         $valid_date = apply_filters( 'wp_insert_post_validate_date', checkdate( $mm, $jj, $aa ), $post_date );
     2640        $valid_date = wp_checkdate( $mm, $jj, $aa, $post_date );
    26412641        if ( !$valid_date ) {
    2642             return new WP_Error( 'invalid_date', __( 'Woops, the provided date is invalid.' ) );
     2642            if ( $wp_error )
     2643                return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
     2644            else
     2645                return 0;
    26432646        }
    26442647
Note: See TracChangeset for help on using the changeset viewer.