WordPress.org

Make WordPress Core

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

File patch-core-19733-2.diff, 11.8 KB (added by markoheijnen, 2 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                }