WordPress.org

Make WordPress Core

Ticket #19733: patch-core-19733-2.diff

File patch-core-19733-2.diff, 11.8 KB (added by markoheijnen, 6 years ago)
  • wp-includes/class-wp-xmlrpc-server.php

     
    492492         * Prepares taxonomy data for return in an XML-RPC object.
    493493         *
    494494         * @access protected
    495         .*
     495         *
    496496         * @param array|object $taxonomy The unprepared taxonomy data
    497497         * @return array The prepared taxonomy data
    498498         */
     
    508508         * Prepares term data for return in an XML-RPC object.
    509509         *
    510510         * @access protected
    511         .*
     511         *
    512512         * @param array|object $term The unprepared term data
    513513         * @return array The prepared term data
    514514         */
     
    537537         * @param $date
    538538         * @return IXR_Date
    539539         */
    540         protected function _convert_date( $date ) {
     540        protected function _convert_date( $date, $format = 'Ymd\TH:i:s' ) {
    541541                if ( $date === '0000-00-00 00:00:00' ) {
    542542                        return new IXR_Date( '00000000T00:00:00Z' );
    543543                }
    544                 return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date, false ) );
     544                return new IXR_Date( mysql2date( $format, $date, false ) );
    545545        }
    546546
    547547        /**
     548         * Convert a WordPress gmt date string to an IXR_Date object.
     549         *
     550         * @access protected
     551         *
     552         * @param $date
     553         * @return IXR_Date
     554         */
     555        protected function _convert_date_gmt( $date, $format = 'Ymd\TH:i:s' ) {
     556                if ( $date === '0000-00-00 00:00:00' ) {
     557                        return new IXR_Date( '00000000T00:00:00Z' );
     558                }
     559                return new IXR_Date( get_gmt_from_date( mysql2date( $format, $date, false ) ) );
     560        }
     561
     562        /**
    548563         * Prepares post data for return in an XML-RPC object.
    549564         *
    550565         * @access protected
     
    16331648                        $allow_pings = pings_open($page->ID) ? 1 : 0;
    16341649
    16351650                        // Format page date.
    1636                         $page_date = mysql2date('Ymd\TH:i:s', $page->post_date, false);
    1637                         $page_date_gmt = mysql2date('Ymd\TH:i:s', $page->post_date_gmt, false);
     1651                        $page_date = $this->_convert_date( $page->post_date );
     1652                        $page_date_gmt = $this->_convert_date( $page->post_date_gmt );
    16381653
    16391654                        // For drafts use the GMT version of the date
    16401655                        if ( $page->post_status == 'draft' )
    1641                                 $page_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page->post_date ), 'Ymd\TH:i:s' );
     1656                                $page_date_gmt = $this->_convert_date_gmt( $page->post_date );
    16421657
    16431658                        // Pull the categories info together.
    16441659                        $categories = array();
     
    16541669                                $page_template = 'default';
    16551670
    16561671                        $page_struct = array(
    1657                                 'dateCreated'                   => new IXR_Date($page_date),
     1672                                'dateCreated'                   => $page_date,
    16581673                                'userid'                                => $page->post_author,
    16591674                                'page_id'                               => $page->ID,
    16601675                                'page_status'                   => $page->post_status,
     
    16751690                                'wp_page_order'                 => $page->menu_order,
    16761691                                'wp_author_id'                  => (string) $author->ID,
    16771692                                'wp_author_display_name'        => $author->display_name,
    1678                                 'date_created_gmt'              => new IXR_Date($page_date_gmt),
     1693                                'date_created_gmt'              => $page_date_gmt,
    16791694                                'custom_fields'                 => $this->get_custom_fields($page_id),
    16801695                                'wp_page_template'              => $page_template
    16811696                        );
     
    18941909                // The date needs to be formatted properly.
    18951910                $num_pages = count($page_list);
    18961911                for ( $i = 0; $i < $num_pages; $i++ ) {
    1897                         $post_date = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date, false);
    1898                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date_gmt, false);
     1912                        $page_list[$i]->dateCreated = $this->_convert_date(  $page_list[$i]->post_date );
     1913                        $page_list[$i]->date_created_gmt = $this->_convert_date( $page_list[$i]->post_date_gmt );
    18991914
    1900                         $page_list[$i]->dateCreated = new IXR_Date($post_date);
    1901                         $page_list[$i]->date_created_gmt = new IXR_Date($post_date_gmt);
    1902 
    19031915                        // For drafts use the GMT version of the date
    19041916                        if ( $page_list[$i]->post_status == 'draft' ) {
    1905                                 $page_list[$i]->date_created_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page_list[$i]->post_date ), 'Ymd\TH:i:s' );
    1906                                 $page_list[$i]->date_created_gmt = new IXR_Date( $page_list[$i]->date_created_gmt );
     1917                                $page_list[$i]->date_created_gmt = $this->_convert_date_gmt( $page_list[$i]->post_date );
    19071918                        }
    19081919
    19091920                        unset($page_list[$i]->post_date_gmt);
     
    21492160                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
    21502161
    21512162                // Format page date.
    2152                 $comment_date = mysql2date('Ymd\TH:i:s', $comment->comment_date, false);
    2153                 $comment_date_gmt = mysql2date('Ymd\TH:i:s', $comment->comment_date_gmt, false);
     2163                $comment_date = $this->_convert_date( $comment->comment_date );
     2164                $comment_date_gmt = $this->_convert_date( $comment->comment_date_gmt );
    21542165
    21552166                if ( '0' == $comment->comment_approved )
    21562167                        $comment_status = 'hold';
     
    21642175                $link = get_comment_link($comment);
    21652176
    21662177                $comment_struct = array(
    2167                         'date_created_gmt'              => new IXR_Date($comment_date_gmt),
     2178                        'date_created_gmt'              => $comment_date_gmt,
    21682179                        'user_id'                               => $comment->user_id,
    21692180                        'comment_id'                    => $comment->comment_ID,
    21702181                        'parent'                                => $comment->comment_parent,
     
    27432754                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
    27442755
    27452756                // Format page date.
    2746                 $attachment_date = mysql2date('Ymd\TH:i:s', $attachment->post_date, false);
    2747                 $attachment_date_gmt = mysql2date('Ymd\TH:i:s', $attachment->post_date_gmt, false);
     2757                $attachment_date = $this->_convert_date( $attachment->post_date );
     2758                $attachment_date_gmt = $this->_convert_date( $attachment->post_date_gmt );
    27482759
    27492760                $link = wp_get_attachment_url($attachment->ID);
    27502761                $thumbnail_link = wp_get_attachment_thumb_url($attachment->ID);
    27512762
    27522763                $attachment_struct = array(
    2753                         'date_created_gmt'              => new IXR_Date($attachment_date_gmt),
     2764                        'date_created_gmt'              => $attachment_date_gmt,
    27542765                        'parent'                                => $attachment->post_parent,
    27552766                        'link'                                  => $link,
    27562767                        'thumbnail'                             => $thumbnail_link,
     
    30053016
    30063017                $struct = array(
    30073018                        'userid'    => $post_data['post_author'],
    3008                         'dateCreated' => new IXR_Date(mysql2date('Ymd\TH:i:s', $post_data['post_date'], false)),
     3019                        'dateCreated' => $this->_convert_date( $post_data['post_date'] ),
    30093020                        'content'     => $content,
    30103021                        'postid'  => (string) $post_data['ID']
    30113022                );
     
    30503061                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    30513062                                continue;
    30523063
    3053                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
     3064                        $post_date  = $this->_convert_date( $entry['post_date'] );
    30543065                        $categories = implode(',', wp_get_post_categories($entry['ID']));
    30553066
    30563067                        $content  = '<title>'.stripslashes($entry['post_title']).'</title>';
     
    30593070
    30603071                        $struct[] = array(
    30613072                                'userid' => $entry['post_author'],
    3062                                 'dateCreated' => new IXR_Date($post_date),
     3073                                'dateCreated' => $post_date,
    30633074                                'content' => $content,
    30643075                                'postid' => (string) $entry['ID'],
    30653076                        );
     
    39183929                $postdata = wp_get_single_post($post_ID, ARRAY_A);
    39193930
    39203931                if ($postdata['post_date'] != '') {
    3921                         $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
    3922                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
    3923                         $post_modified = mysql2date('Ymd\TH:i:s', $postdata['post_modified'], false);
    3924                         $post_modified_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_modified_gmt'], false);
     3932                        $post_date = $this->_convert_date( $postdata['post_date'] );
     3933                        $post_date_gmt = $this->_convert_date( $postdata['post_date_gmt'] );
     3934                        $post_modified = $this->_convert_date( $postdata['post_modified'] );
     3935                        $post_modified_gmt = $this->_convert_date( $postdata['post_modified_gmt'] );
    39253936
    39263937                        // For drafts use the GMT version of the post date
    39273938                        if ( $postdata['post_status'] == 'draft' ) {
    3928                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_date'] ), 'Ymd\TH:i:s' );
    3929                                 $post_modified_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_modified'] ), 'Ymd\TH:i:s' );
     3939                                $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date'] );
     3940                                $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified'] );
    39303941                        }
    39313942
    39323943                        $categories = array();
     
    39803991                        }
    39813992
    39823993                        $resp = array(
    3983                                 'dateCreated' => new IXR_Date($post_date),
     3994                                'dateCreated' => $post_date,
    39843995                                'userid' => $postdata['post_author'],
    39853996                                'postid' => $postdata['ID'],
    39863997                                'description' => $post['main'],
     
    39994010                                'wp_slug' => $postdata['post_name'],
    40004011                                'wp_password' => $postdata['post_password'],
    40014012                                'wp_author_id' => (string) $author->ID,
    4002                                 'wp_author_display_name'        => $author->display_name,
    4003                                 'date_created_gmt' => new IXR_Date($post_date_gmt),
     4013                                'wp_author_display_name' => $author->display_name,
     4014                                'date_created_gmt' => $post_date_gmt,
    40044015                                'post_status' => $postdata['post_status'],
    40054016                                'custom_fields' => $this->get_custom_fields($post_ID),
    40064017                                'wp_post_format' => $post_format,
    40074018                                'sticky' => $sticky,
    4008                                 'date_modified' => new IXR_Date( $post_modified ),
    4009                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt )
     4019                                'date_modified' => $post_modified,
     4020                                'date_modified_gmt' => $post_modified_gmt
    40104021                        );
    40114022
    40124023                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
     
    40514062                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    40524063                                continue;
    40534064
    4054                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
    4055                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
    4056                         $post_modified = mysql2date('Ymd\TH:i:s', $entry['post_modified'], false);
    4057                         $post_modified_gmt = mysql2date('Ymd\TH:i:s', $entry['post_modified_gmt'], false);
     4065                        $post_date = $this->_convert_date( $entry['post_date'] );
     4066                        $post_date_gmt = $this->_convert_date( $entry['post_date_gmt'] );
     4067                        $post_modified = $this->_convert_date( $entry['post_modified'] );
     4068                        $post_modified_gmt = $this->_convert_date( $entry['post_modified_gmt'] );
    40584069
    40594070                        // For drafts use the GMT version of the date
    40604071                        if ( $entry['post_status'] == 'draft' ) {
    4061                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
    4062                                 $post_modified_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_modified'] ), 'Ymd\TH:i:s' );
     4072                                $post_date_gmt = $this->_convert_date_gmt( $entry['post_date'] );
     4073                                $post_modified_gmt = $this->_convert_date_gmt( $entry['post_modified'] );
    40634074                        }
    40644075
    40654076                        $categories = array();
     
    40974108                                $post_format = 'standard';
    40984109
    40994110                        $struct[] = array(
    4100                                 'dateCreated' => new IXR_Date($post_date),
     4111                                'dateCreated' => $post_date,
    41014112                                'userid' => $entry['post_author'],
    41024113                                'postid' => (string) $entry['ID'],
    41034114                                'description' => $post['main'],
     
    41174128                                'wp_password' => $entry['post_password'],
    41184129                                'wp_author_id' => (string) $author->ID,
    41194130                                'wp_author_display_name' => $author->display_name,
    4120                                 'date_created_gmt' => new IXR_Date($post_date_gmt),
     4131                                'date_created_gmt' => $post_date_gmt,
    41214132                                'post_status' => $entry['post_status'],
    41224133                                'custom_fields' => $this->get_custom_fields($entry['ID']),
    41234134                                'wp_post_format' => $post_format,
    4124                                 'date_modified' => new IXR_Date( $post_modified ),
    4125                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt )
     4135                                'date_modified' => $post_modified,
     4136                                'date_modified_gmt' => $post_modified_gmt
    41264137                        );
    41274138
    41284139                }
     
    42994310                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    43004311                                continue;
    43014312
    4302                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
    4303                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
     4313                        $post_date = $this->_convert_date( $entry['post_date'] );
     4314                        $post_date_gmt = $this->_convert_date( $entry['post_date_gmt'] );
    43044315
    43054316                        // For drafts use the GMT version of the date
    43064317                        if ( $entry['post_status'] == 'draft' )
    4307                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
     4318                                $post_date_gmt = $this->_convert_date_gmt( $entry['post_date'] );
    43084319
    43094320                        $struct[] = array(
    4310                                 'dateCreated' => new IXR_Date($post_date),
     4321                                'dateCreated' => $post_date,
    43114322                                'userid' => $entry['post_author'],
    43124323                                'postid' => (string) $entry['ID'],
    43134324                                'title' => $entry['post_title'],
    43144325                                'post_status' => $entry['post_status'],
    4315                                 'date_created_gmt' => new IXR_Date($post_date_gmt)
     4326                                'date_created_gmt' => $post_date_gmt
    43164327                        );
    43174328
    43184329                }