WordPress.org

Make WordPress Core

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

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

     
    499499         * Prepares taxonomy data for return in an XML-RPC object. 
    500500         * 
    501501         * @access protected 
    502         .* 
     502         * 
    503503         * @param array|object $taxonomy The unprepared taxonomy data 
    504504         * @return array The prepared taxonomy data 
    505505         */ 
     
    515515         * Prepares term data for return in an XML-RPC object. 
    516516         * 
    517517         * @access protected 
    518         .* 
     518         * 
    519519         * @param array|object $term The unprepared term data 
    520520         * @return array The prepared term data 
    521521         */ 
     
    548548                if ( $date === '0000-00-00 00:00:00' ) { 
    549549                        return new IXR_Date( '00000000T00:00:00Z' ); 
    550550                } 
    551                 return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date, false ) ); 
     551                return new IXR_Date( $this->_convert_mysql2date( $date ) ); 
    552552        } 
    553553 
    554554        /** 
     555         * Convert a WordPress gmt date string to an IXR_Date object. 
     556         * 
     557         * @access protected 
     558         * 
     559         * @param $date 
     560         * @return IXR_Date 
     561         */ 
     562        protected function _convert_date_gmt( $date_gmt, $date ) { 
     563                if ( $date !== '0000-00-00 00:00:00' && $date_gmt === '0000-00-00 00:00:00' ) { 
     564                        return new IXR_Date( get_gmt_from_date( $this->_convert_mysql2date( $date, 'Y-m-d H:i:s' ), 'Ymd\TH:i:s' ) ); 
     565                } 
     566                return $this-> _convert_date( $date_gmt ); 
     567        } 
     568 
     569        /** 
     570         * Convert a MySQL date to  
     571         * 
     572         * @access protected 
     573         * 
     574         * @param $date 
     575         * @return IXR_Date 
     576         */ 
     577        protected function _convert_mysql2date( $date, $format = 'Ymd\TH:i:s' ) { 
     578                return mysql2date( $format, $date, false ); 
     579        } 
     580 
     581        /** 
    555582         * Prepares post data for return in an XML-RPC object. 
    556583         * 
    557584         * @access protected 
     
    568595                $post_fields = array( 
    569596                        'post_title'        => $post['post_title'], 
    570597                        'post_date'         => $this->_convert_date( $post['post_date'] ), 
    571                         'post_date_gmt'     => $this->_convert_date( $post['post_date_gmt'] ), 
     598                        'post_date_gmt'     => $this->_convert_date_gmt( $post['post_date_gmt'], $post['post_date'] ), 
    572599                        'post_modified'     => $this->_convert_date( $post['post_modified'] ), 
    573                         'post_modified_gmt' => $this->_convert_date( $post['post_modified_gmt'] ), 
     600                        'post_modified_gmt' => $this->_convert_date_gmt( $post['post_modified_gmt'], $post['post_modified'] ), 
    574601                        'post_status'       => $post['post_status'], 
    575602                        'post_type'         => $post['post_type'], 
    576603                        'post_name'         => $post['post_name'], 
     
    17141741                        $allow_pings = pings_open($page->ID) ? 1 : 0; 
    17151742 
    17161743                        // Format page date. 
    1717                         $page_date = mysql2date('Ymd\TH:i:s', $page->post_date, false); 
    1718                         $page_date_gmt = mysql2date('Ymd\TH:i:s', $page->post_date_gmt, false); 
     1744                        $page_date = $this->_convert_date( $page->post_date ); 
     1745                        $page_date_gmt = $this->_convert_date_gmt( $page->post_date_gmt, $page->post_date ); 
    17191746 
    1720                         // For drafts use the GMT version of the date 
    1721                         if ( $page->post_status == 'draft' ) 
    1722                                 $page_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page->post_date ), 'Ymd\TH:i:s' ); 
    1723  
    17241747                        // Pull the categories info together. 
    17251748                        $categories = array(); 
    17261749                        foreach ( wp_get_post_categories($page->ID) as $cat_id ) { 
     
    17351758                                $page_template = 'default'; 
    17361759 
    17371760                        $page_struct = array( 
    1738                                 'dateCreated'                   => new IXR_Date($page_date), 
     1761                                'dateCreated'                   => $page_date, 
    17391762                                'userid'                                => $page->post_author, 
    17401763                                'page_id'                               => $page->ID, 
    17411764                                'page_status'                   => $page->post_status, 
     
    17561779                                'wp_page_order'                 => $page->menu_order, 
    17571780                                'wp_author_id'                  => (string) $author->ID, 
    17581781                                'wp_author_display_name'        => $author->display_name, 
    1759                                 'date_created_gmt'              => new IXR_Date($page_date_gmt), 
     1782                                'date_created_gmt'              => $page_date_gmt, 
    17601783                                'custom_fields'                 => $this->get_custom_fields($page_id), 
    17611784                                'wp_page_template'              => $page_template 
    17621785                        ); 
     
    19751998                // The date needs to be formatted properly. 
    19761999                $num_pages = count($page_list); 
    19772000                for ( $i = 0; $i < $num_pages; $i++ ) { 
    1978                         $post_date = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date, false); 
    1979                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date_gmt, false); 
     2001                        $page_list[$i]->dateCreated = $this->_convert_date(  $page_list[$i]->post_date ); 
     2002                        $page_list[$i]->date_created_gmt = $this->_convert_date_gmt( $page_list[$i]->post_date_gmt, $page_list[$i]->post_date ); 
    19802003 
    1981                         $page_list[$i]->dateCreated = new IXR_Date($post_date); 
    1982                         $page_list[$i]->date_created_gmt = new IXR_Date($post_date_gmt); 
    1983  
    1984                         // For drafts use the GMT version of the date 
    1985                         if ( $page_list[$i]->post_status == 'draft' ) { 
    1986                                 $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' ); 
    1987                                 $page_list[$i]->date_created_gmt = new IXR_Date( $page_list[$i]->date_created_gmt ); 
    1988                         } 
    1989  
    19902004                        unset($page_list[$i]->post_date_gmt); 
    19912005                        unset($page_list[$i]->post_date); 
    19922006                        unset($page_list[$i]->post_status); 
     
    22302244                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) ); 
    22312245 
    22322246                // Format page date. 
    2233                 $comment_date = mysql2date('Ymd\TH:i:s', $comment->comment_date, false); 
    2234                 $comment_date_gmt = mysql2date('Ymd\TH:i:s', $comment->comment_date_gmt, false); 
     2247                $comment_date = $this->_convert_date( $comment->comment_date ); 
     2248                $comment_date_gmt = $this->_convert_date_gmt( $comment->comment_date_gmt, $comment->comment_date ); 
    22352249 
    22362250                if ( '0' == $comment->comment_approved ) 
    22372251                        $comment_status = 'hold'; 
     
    22452259                $link = get_comment_link($comment); 
    22462260 
    22472261                $comment_struct = array( 
    2248                         'date_created_gmt'              => new IXR_Date($comment_date_gmt), 
     2262                        'date_created_gmt'              => $comment_date_gmt, 
    22492263                        'user_id'                               => $comment->user_id, 
    22502264                        'comment_id'                    => $comment->comment_ID, 
    22512265                        'parent'                                => $comment->comment_parent, 
     
    28242838                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); 
    28252839 
    28262840                // Format page date. 
    2827                 $attachment_date = mysql2date('Ymd\TH:i:s', $attachment->post_date, false); 
    2828                 $attachment_date_gmt = mysql2date('Ymd\TH:i:s', $attachment->post_date_gmt, false); 
     2841                $attachment_date = $this->_convert_date( $attachment->post_date ); 
     2842                $attachment_date_gmt = $this->_convert_date_gmt( $attachment->post_date_gmt, $attachment->post_date ); 
    28292843 
    28302844                $link = wp_get_attachment_url($attachment->ID); 
    28312845                $thumbnail_link = wp_get_attachment_thumb_url($attachment->ID); 
    28322846 
    28332847                $attachment_struct = array( 
    2834                         'date_created_gmt'              => new IXR_Date($attachment_date_gmt), 
     2848                        'date_created_gmt'              => $attachment_date_gmt, 
    28352849                        'parent'                                => $attachment->post_parent, 
    28362850                        'link'                                  => $link, 
    28372851                        'thumbnail'                             => $thumbnail_link, 
     
    31823196 
    31833197                $struct = array( 
    31843198                        'userid'    => $post_data['post_author'], 
    3185                         'dateCreated' => new IXR_Date(mysql2date('Ymd\TH:i:s', $post_data['post_date'], false)), 
     3199                        'dateCreated' => $this->_convert_date( $post_data['post_date'] ), 
    31863200                        'content'     => $content, 
    31873201                        'postid'  => (string) $post_data['ID'] 
    31883202                ); 
     
    32273241                        if ( !current_user_can( 'edit_post', $entry['ID'] ) ) 
    32283242                                continue; 
    32293243 
    3230                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false); 
     3244                        $post_date  = $this->_convert_date( $entry['post_date'] ); 
    32313245                        $categories = implode(',', wp_get_post_categories($entry['ID'])); 
    32323246 
    32333247                        $content  = '<title>'.stripslashes($entry['post_title']).'</title>'; 
     
    32363250 
    32373251                        $struct[] = array( 
    32383252                                'userid' => $entry['post_author'], 
    3239                                 'dateCreated' => new IXR_Date($post_date), 
     3253                                'dateCreated' => $post_date, 
    32403254                                'content' => $content, 
    32413255                                'postid' => (string) $entry['ID'], 
    32423256                        ); 
     
    41204134                $postdata = wp_get_single_post($post_ID, ARRAY_A); 
    41214135 
    41224136                if ($postdata['post_date'] != '') { 
    4123                         $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false); 
    4124                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false); 
    4125                         $post_modified = mysql2date('Ymd\TH:i:s', $postdata['post_modified'], false); 
    4126                         $post_modified_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_modified_gmt'], false); 
     4137                        $post_date = $this->_convert_date( $postdata['post_date'] ); 
     4138                        $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date_gmt'],  $postdata['post_date'] ); 
     4139                        $post_modified = $this->_convert_date( $postdata['post_modified'] ); 
     4140                        $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] ); 
    41274141 
    4128                         // For drafts use the GMT version of the post date 
    4129                         if ( $postdata['post_status'] == 'draft' ) { 
    4130                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_date'] ), 'Ymd\TH:i:s' ); 
    4131                                 $post_modified_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_modified'] ), 'Ymd\TH:i:s' ); 
    4132                         } 
    4133  
    41344142                        $categories = array(); 
    41354143                        $catids = wp_get_post_categories($post_ID); 
    41364144                        foreach($catids as $catid) 
     
    41824190                        } 
    41834191 
    41844192                        $resp = array( 
    4185                                 'dateCreated' => new IXR_Date($post_date), 
     4193                                'dateCreated' => $post_date, 
    41864194                                'userid' => $postdata['post_author'], 
    41874195                                'postid' => $postdata['ID'], 
    41884196                                'description' => $post['main'], 
     
    42014209                                'wp_slug' => $postdata['post_name'], 
    42024210                                'wp_password' => $postdata['post_password'], 
    42034211                                'wp_author_id' => (string) $author->ID, 
    4204                                 'wp_author_display_name'        => $author->display_name, 
    4205                                 'date_created_gmt' => new IXR_Date($post_date_gmt), 
     4212                                'wp_author_display_name' => $author->display_name, 
     4213                                'date_created_gmt' => $post_date_gmt, 
    42064214                                'post_status' => $postdata['post_status'], 
    42074215                                'custom_fields' => $this->get_custom_fields($post_ID), 
    42084216                                'wp_post_format' => $post_format, 
    42094217                                'sticky' => $sticky, 
    4210                                 'date_modified' => new IXR_Date( $post_modified ), 
    4211                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt ) 
     4218                                'date_modified' => $post_modified, 
     4219                                'date_modified_gmt' => $post_modified_gmt 
    42124220                        ); 
    42134221 
    42144222                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure; 
     
    42564264                        if ( !current_user_can( 'edit_post', $entry['ID'] ) ) 
    42574265                                continue; 
    42584266 
    4259                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false); 
    4260                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false); 
    4261                         $post_modified = mysql2date('Ymd\TH:i:s', $entry['post_modified'], false); 
    4262                         $post_modified_gmt = mysql2date('Ymd\TH:i:s', $entry['post_modified_gmt'], false); 
     4267                        $post_date = $this->_convert_date( $entry['post_date'] ); 
     4268                        $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] ); 
     4269                        $post_modified = $this->_convert_date( $entry['post_modified'] ); 
     4270                        $post_modified_gmt = $this->_convert_date_gmt( $entry['post_modified_gmt'], $entry['post_modified'] ); 
    42634271 
    4264                         // For drafts use the GMT version of the date 
    4265                         if ( $entry['post_status'] == 'draft' ) { 
    4266                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' ); 
    4267                                 $post_modified_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_modified'] ), 'Ymd\TH:i:s' ); 
    4268                         } 
    4269  
    42704272                        $categories = array(); 
    42714273                        $catids = wp_get_post_categories($entry['ID']); 
    42724274                        foreach( $catids as $catid ) 
     
    43024304                                $post_format = 'standard'; 
    43034305 
    43044306                        $struct[] = array( 
    4305                                 'dateCreated' => new IXR_Date($post_date), 
     4307                                'dateCreated' => $post_date, 
    43064308                                'userid' => $entry['post_author'], 
    43074309                                'postid' => (string) $entry['ID'], 
    43084310                                'description' => $post['main'], 
     
    43224324                                'wp_password' => $entry['post_password'], 
    43234325                                'wp_author_id' => (string) $author->ID, 
    43244326                                'wp_author_display_name' => $author->display_name, 
    4325                                 'date_created_gmt' => new IXR_Date($post_date_gmt), 
     4327                                'date_created_gmt' => $post_date_gmt, 
    43264328                                'post_status' => $entry['post_status'], 
    43274329                                'custom_fields' => $this->get_custom_fields($entry['ID']), 
    43284330                                'wp_post_format' => $post_format, 
    4329                                 'date_modified' => new IXR_Date( $post_modified ), 
    4330                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt ) 
     4331                                'date_modified' => $post_modified, 
     4332                                'date_modified_gmt' => $post_modified_gmt 
    43314333                        ); 
    43324334 
    43334335                        $entry_index = count( $struct ) - 1; 
     
    45134515                        if ( !current_user_can( 'edit_post', $entry['ID'] ) ) 
    45144516                                continue; 
    45154517 
    4516                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false); 
    4517                         $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false); 
     4518                        $post_date = $this->_convert_date( $entry['post_date'] ); 
     4519                        $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] ); 
    45184520 
    4519                         // For drafts use the GMT version of the date 
    4520                         if ( $entry['post_status'] == 'draft' ) 
    4521                                 $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' ); 
    4522  
    45234521                        $struct[] = array( 
    4524                                 'dateCreated' => new IXR_Date($post_date), 
     4522                                'dateCreated' => $post_date, 
    45254523                                'userid' => $entry['post_author'], 
    45264524                                'postid' => (string) $entry['ID'], 
    45274525                                'title' => $entry['post_title'], 
    45284526                                'post_status' => $entry['post_status'], 
    4529                                 'date_created_gmt' => new IXR_Date($post_date_gmt) 
     4527                                'date_created_gmt' => $post_date_gmt 
    45304528                        ); 
    45314529 
    45324530                }