WordPress.org

Make WordPress Core

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

File patch-core-19733-3.diff, 12.4 KB (added by markoheijnen, 6 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         */
     
    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' ) {
     564                        return new IXR_Date( '00000000T00:00:00Z' );
     565                }
     566                if ( $date_gmt === '0000-00-00 00:00:00' ) {
     567                        return new IXR_Date( get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $date, false ), 'Ymd\TH:i:s' ) );
     568                }
     569                return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date_gmt, false ) );
     570        }
     571
     572        /**
    555573         * Prepares post data for return in an XML-RPC object.
    556574         *
    557575         * @access protected
     
    568586                $post_fields = array(
    569587                        'post_title'        => $post['post_title'],
    570588                        'post_date'         => $this->_convert_date( $post['post_date'] ),
    571                         'post_date_gmt'     => $this->_convert_date( $post['post_date_gmt'] ),
     589                        'post_date_gmt'     => $this->_convert_date_gmt( $post['post_date_gmt'], $post['post_date'] ),
    572590                        'post_modified'     => $this->_convert_date( $post['post_modified'] ),
    573                         'post_modified_gmt' => $this->_convert_date( $post['post_modified_gmt'] ),
     591                        'post_modified_gmt' => $this->_convert_date_gmt( $post['post_modified_gmt'], $post['post_modified'] ),
    574592                        'post_status'       => $post['post_status'],
    575593                        'post_type'         => $post['post_type'],
    576594                        'post_name'         => $post['post_name'],
     
    17141732                        $allow_pings = pings_open($page->ID) ? 1 : 0;
    17151733
    17161734                        // 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);
     1735                        $page_date = $this->_convert_date( $page->post_date );
     1736                        $page_date_gmt = $this->_convert_date_gmt( $page->post_date_gmt, $page->post_date );
    17191737
    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 
    17241738                        // Pull the categories info together.
    17251739                        $categories = array();
    17261740                        foreach ( wp_get_post_categories($page->ID) as $cat_id ) {
     
    17351749                                $page_template = 'default';
    17361750
    17371751                        $page_struct = array(
    1738                                 'dateCreated'                   => new IXR_Date($page_date),
     1752                                'dateCreated'                   => $page_date,
    17391753                                'userid'                                => $page->post_author,
    17401754                                'page_id'                               => $page->ID,
    17411755                                'page_status'                   => $page->post_status,
     
    17561770                                'wp_page_order'                 => $page->menu_order,
    17571771                                'wp_author_id'                  => (string) $author->ID,
    17581772                                'wp_author_display_name'        => $author->display_name,
    1759                                 'date_created_gmt'              => new IXR_Date($page_date_gmt),
     1773                                'date_created_gmt'              => $page_date_gmt,
    17601774                                'custom_fields'                 => $this->get_custom_fields($page_id),
    17611775                                'wp_page_template'              => $page_template
    17621776                        );
     
    19751989                // The date needs to be formatted properly.
    19761990                $num_pages = count($page_list);
    19771991                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);
     1992                        $page_list[$i]->dateCreated = $this->_convert_date(  $page_list[$i]->post_date );
     1993                        $page_list[$i]->date_created_gmt = $this->_convert_date_gmt( $page_list[$i]->post_date_gmt, $page_list[$i]->post_date );
    19801994
    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 
    19901995                        unset($page_list[$i]->post_date_gmt);
    19911996                        unset($page_list[$i]->post_date);
    19921997                        unset($page_list[$i]->post_status);
     
    22302235                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
    22312236
    22322237                // 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);
     2238                $comment_date = $this->_convert_date( $comment->comment_date );
     2239                $comment_date_gmt = $this->_convert_date_gmt( $comment->comment_date_gmt, $comment->comment_date );
    22352240
    22362241                if ( '0' == $comment->comment_approved )
    22372242                        $comment_status = 'hold';
     
    22452250                $link = get_comment_link($comment);
    22462251
    22472252                $comment_struct = array(
    2248                         'date_created_gmt'              => new IXR_Date($comment_date_gmt),
     2253                        'date_created_gmt'              => $comment_date_gmt,
    22492254                        'user_id'                               => $comment->user_id,
    22502255                        'comment_id'                    => $comment->comment_ID,
    22512256                        'parent'                                => $comment->comment_parent,
     
    28242829                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
    28252830
    28262831                // 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);
     2832                $attachment_date = $this->_convert_date( $attachment->post_date );
     2833                $attachment_date_gmt = $this->_convert_date_gmt( $attachment->post_date_gmt, $attachment->post_date );
    28292834
    28302835                $link = wp_get_attachment_url($attachment->ID);
    28312836                $thumbnail_link = wp_get_attachment_thumb_url($attachment->ID);
    28322837
    28332838                $attachment_struct = array(
    2834                         'date_created_gmt'              => new IXR_Date($attachment_date_gmt),
     2839                        'date_created_gmt'              => $attachment_date_gmt,
    28352840                        'parent'                                => $attachment->post_parent,
    28362841                        'link'                                  => $link,
    28372842                        'thumbnail'                             => $thumbnail_link,
     
    31823187
    31833188                $struct = array(
    31843189                        'userid'    => $post_data['post_author'],
    3185                         'dateCreated' => new IXR_Date(mysql2date('Ymd\TH:i:s', $post_data['post_date'], false)),
     3190                        'dateCreated' => $this->_convert_date( $post_data['post_date'] ),
    31863191                        'content'     => $content,
    31873192                        'postid'  => (string) $post_data['ID']
    31883193                );
     
    32273232                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    32283233                                continue;
    32293234
    3230                         $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
     3235                        $post_date  = $this->_convert_date( $entry['post_date'] );
    32313236                        $categories = implode(',', wp_get_post_categories($entry['ID']));
    32323237
    32333238                        $content  = '<title>'.stripslashes($entry['post_title']).'</title>';
     
    32363241
    32373242                        $struct[] = array(
    32383243                                'userid' => $entry['post_author'],
    3239                                 'dateCreated' => new IXR_Date($post_date),
     3244                                'dateCreated' => $post_date,
    32403245                                'content' => $content,
    32413246                                'postid' => (string) $entry['ID'],
    32423247                        );
     
    41204125                $postdata = wp_get_single_post($post_ID, ARRAY_A);
    41214126
    41224127                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);
     4128                        $post_date = $this->_convert_date( $postdata['post_date'] );
     4129                        $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date_gmt'],  $postdata['post_date'] );
     4130                        $post_modified = $this->_convert_date( $postdata['post_modified'] );
     4131                        $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] );
    41274132
    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 
    41344133                        $categories = array();
    41354134                        $catids = wp_get_post_categories($post_ID);
    41364135                        foreach($catids as $catid)
     
    41824181                        }
    41834182
    41844183                        $resp = array(
    4185                                 'dateCreated' => new IXR_Date($post_date),
     4184                                'dateCreated' => $post_date,
    41864185                                'userid' => $postdata['post_author'],
    41874186                                'postid' => $postdata['ID'],
    41884187                                'description' => $post['main'],
     
    42014200                                'wp_slug' => $postdata['post_name'],
    42024201                                'wp_password' => $postdata['post_password'],
    42034202                                'wp_author_id' => (string) $author->ID,
    4204                                 'wp_author_display_name'        => $author->display_name,
    4205                                 'date_created_gmt' => new IXR_Date($post_date_gmt),
     4203                                'wp_author_display_name' => $author->display_name,
     4204                                'date_created_gmt' => $post_date_gmt,
    42064205                                'post_status' => $postdata['post_status'],
    42074206                                'custom_fields' => $this->get_custom_fields($post_ID),
    42084207                                'wp_post_format' => $post_format,
    42094208                                'sticky' => $sticky,
    4210                                 'date_modified' => new IXR_Date( $post_modified ),
    4211                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt )
     4209                                'date_modified' => $post_modified,
     4210                                'date_modified_gmt' => $post_modified_gmt
    42124211                        );
    42134212
    42144213                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
     
    42564255                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    42574256                                continue;
    42584257
    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);
     4258                        $post_date = $this->_convert_date( $entry['post_date'] );
     4259                        $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] );
     4260                        $post_modified = $this->_convert_date( $entry['post_modified'] );
     4261                        $post_modified_gmt = $this->_convert_date_gmt( $entry['post_modified_gmt'], $entry['post_modified'] );
    42634262
    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 
    42704263                        $categories = array();
    42714264                        $catids = wp_get_post_categories($entry['ID']);
    42724265                        foreach( $catids as $catid )
     
    43024295                                $post_format = 'standard';
    43034296
    43044297                        $struct[] = array(
    4305                                 'dateCreated' => new IXR_Date($post_date),
     4298                                'dateCreated' => $post_date,
    43064299                                'userid' => $entry['post_author'],
    43074300                                'postid' => (string) $entry['ID'],
    43084301                                'description' => $post['main'],
     
    43224315                                'wp_password' => $entry['post_password'],
    43234316                                'wp_author_id' => (string) $author->ID,
    43244317                                'wp_author_display_name' => $author->display_name,
    4325                                 'date_created_gmt' => new IXR_Date($post_date_gmt),
     4318                                'date_created_gmt' => $post_date_gmt,
    43264319                                'post_status' => $entry['post_status'],
    43274320                                'custom_fields' => $this->get_custom_fields($entry['ID']),
    43284321                                'wp_post_format' => $post_format,
    4329                                 'date_modified' => new IXR_Date( $post_modified ),
    4330                                 'date_modified_gmt' => new IXR_Date( $post_modified_gmt )
     4322                                'date_modified' => $post_modified,
     4323                                'date_modified_gmt' => $post_modified_gmt
    43314324                        );
    43324325
    43334326                        $entry_index = count( $struct ) - 1;
     
    45134506                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
    45144507                                continue;
    45154508
    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);
     4509                        $post_date = $this->_convert_date( $entry['post_date'] );
     4510                        $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] );
    45184511
    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 
    45234512                        $struct[] = array(
    4524                                 'dateCreated' => new IXR_Date($post_date),
     4513                                'dateCreated' => $post_date,
    45254514                                'userid' => $entry['post_author'],
    45264515                                'postid' => (string) $entry['ID'],
    45274516                                'title' => $entry['post_title'],
    45284517                                'post_status' => $entry['post_status'],
    4529                                 'date_created_gmt' => new IXR_Date($post_date_gmt)
     4518                                'date_created_gmt' => $post_date_gmt
    45304519                        );
    45314520
    45324521                }