WordPress.org

Make WordPress Core

Changeset 20153


Ignore:
Timestamp:
03/08/12 11:19:53 (3 years ago)
Author:
westi
Message:

XMLRPC: Intoduce a date generation helper method to improve the dates returned over XMLRPC when we have a 0 date stored for drafts.

This improves the ability of clients to work with the new wp Post APIs. See #18429 and #19733 props maxcutler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/class-wp-xmlrpc-server.php

    r20137 r20153  
    517517 
    518518    /** 
     519     * Convert a WordPress date string to an IXR_Date object. 
     520     * 
     521     * @access protected 
     522     * 
     523     * @param $date 
     524     * @return IXR_Date 
     525     */ 
     526    protected function _convert_date( $date ) { 
     527        if ( $date === '0000-00-00 00:00:00' ) { 
     528            return new IXR_Date( '00000000T00:00:00Z' ); 
     529        } 
     530        return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date, false ) ); 
     531    } 
     532 
     533    /** 
    519534     * Prepares post data for return in an XML-RPC object. 
    520535     * 
     
    527542    protected function _prepare_post( $post, $fields ) { 
    528543        // holds the data for this post. built up based on $fields 
    529         $_post = array( 'post_id' => $post['ID'] ); 
     544        $_post = array( 'post_id' => strval( $post['ID'] ) ); 
    530545 
    531546        // prepare common post fields 
    532547        $post_fields = array( 
    533548            'post_title'        => $post['post_title'], 
    534             'post_date'         => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date'], false ) ), 
    535             'post_date_gmt'     => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date_gmt'], false ) ), 
    536             'post_modified'     => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_modified'], false ) ), 
    537             'post_modified_gmt' => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_modified_gmt'], false ) ), 
     549            'post_date'         => $this->_convert_date( $post['post_date'] ), 
     550            'post_date_gmt'     => $this->_convert_date( $post['post_date_gmt'] ), 
     551            'post_modified'     => $this->_convert_date( $post['post_modified'] ), 
     552            'post_modified_gmt' => $this->_convert_date( $post['post_modified_gmt'] ), 
    538553            'post_status'       => $post['post_status'], 
    539554            'post_type'         => $post['post_type'], 
     
    930945 
    931946        // convert the date field back to IXR form 
    932         $post['post_date'] = new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date'], false ) ); 
     947        $post['post_date'] = $this->_convert_date( $post['post_date'] ); 
    933948 
    934949        // ignore the existing GMT date if it is empty or a non-GMT date was supplied in $content_struct, 
     
    937952            unset( $post['post_date_gmt'] ); 
    938953        else 
    939             $post['post_date_gmt'] = new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date_gmt'], false ) ); 
     954            $post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] ); 
    940955 
    941956        $this->escape( $post ); 
Note: See TracChangeset for help on using the changeset viewer.