WordPress.org

Make WordPress Core

Ticket #18429: convert_date.patch

File convert_date.patch, 2.7 KB (added by maxcutler, 3 years ago)
  • wp-includes/class-wp-xmlrpc-server.php

     
    467467        } 
    468468 
    469469        /** 
     470         * Convert a WordPress date string to an IXR_Date object. 
     471         * 
     472         * @access protected 
     473         * 
     474         * @param $date 
     475         * @return IXR_Date 
     476         */ 
     477        protected function _convert_date( $date ) { 
     478                if ( $date === '0000-00-00 00:00:00' ) { 
     479                        return new IXR_Date( '00000000T00:00:00Z' ); 
     480                } 
     481                return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date, false ) ); 
     482        } 
     483 
     484        /** 
    470485         * Prepares post data for return in an XML-RPC object. 
    471486         * 
    472487         * @access private 
     
    477492         */ 
    478493        function _prepare_post( $post, $fields ) { 
    479494                // holds the data for this post. built up based on $fields 
    480                 $_post = array( 'post_id' => $post['ID'] ); 
     495                $_post = array( 'post_id' => strval( $post['ID'] ) ); 
    481496 
    482497                // prepare common post fields 
    483498                $post_fields = array( 
    484499                        'post_title'        => $post['post_title'], 
    485                         'post_date'         => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date'], false ) ), 
    486                         'post_date_gmt'     => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date_gmt'], false ) ), 
    487                         'post_modified'     => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_modified'], false ) ), 
    488                         'post_modified_gmt' => new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_modified_gmt'], false ) ), 
     500                        'post_date'         => $this->_convert_date( $post['post_date'] ), 
     501                        'post_date_gmt'     => $this->_convert_date( $post['post_date_gmt'] ), 
     502                        'post_modified'     => $this->_convert_date( $post['post_modified'] ), 
     503                        'post_modified_gmt' => $this->_convert_date( $post['post_modified_gmt'] ), 
    489504                        'post_status'       => $post['post_status'], 
    490505                        'post_type'         => $post['post_type'], 
    491506                        'post_name'         => $post['post_name'], 
     
    880895                        return new IXR_Error( 404, __( 'Invalid post ID.' ) ); 
    881896 
    882897                // convert the date field back to IXR form 
    883                 $post['post_date'] = new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date'], false ) ); 
     898                $post['post_date'] = $this->_convert_date( $post['post_date'] ); 
    884899 
    885900                // ignore the existing GMT date if it is empty or a non-GMT date was supplied in $content_struct, 
    886901                // since _insert_post will ignore the non-GMT date if the GMT date is set 
    887902                if ( $post['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) ) 
    888903                        unset( $post['post_date_gmt'] ); 
    889904                else 
    890                         $post['post_date_gmt'] = new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date_gmt'], false ) ); 
     905                        $post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] ); 
    891906 
    892907                $this->escape( $post ); 
    893908                $merged_content_struct = array_merge( $post, $content_struct );