WordPress.org

Make WordPress Core

Ticket #18429: 18429.diff

File 18429.diff, 20.5 KB (added by nacin, 2 years ago)
  • wp-includes/class-wp-xmlrpc-server.php

     
    495495         * 
    496496         * @access protected 
    497497         * 
    498          * @param array|object $taxonomy The unprepared taxonomy data 
     498         * @param object $taxonomy The unprepared taxonomy data 
    499499         * @return array The prepared taxonomy data 
    500500         */ 
    501         protected function _prepare_taxonomy( $taxonomy ) { 
    502                 $_taxonomy = (array) $taxonomy; 
     501        protected function _prepare_taxonomy( $taxonomy, $fields ) { 
     502                $_taxonomy = array( 
     503                        'name' => $taxonmy->name, 
     504                        'label' => $taxonomy->label, 
     505                        'hierarchical' => (bool) $taxonomy->hierarchical, 
     506                        'public' => (bool) $taxonomy->public, 
     507                        'show_ui' => (bool) $taxonomy->show_ui, 
     508                        '_builtin' => (bool) $taxnomy->_builtin, 
     509                ); 
    503510 
    504                 unset( $_taxonomy['update_count_callback'] ); 
     511                if ( in_array( 'labels', $fields ) ) 
     512                        $_taxonomy['labels'] = (array) $taxonomy->labels; 
    505513 
    506                 return apply_filters( 'xmlrpc_prepare_taxonomy', $_taxonomy, $taxonomy ); 
     514                if ( in_array( 'capabilities', $fields ) ) 
     515                        $_taxonomy['cap'] = (array) $post_type->cap; 
     516 
     517                if ( in_array( 'object-types', $fields ) ) 
     518                        $_taxonomy['taxonomies'] = array_unique( (array) $taxonomy->object_type ); 
     519 
     520                return apply_filters( 'xmlrpc_prepare_taxonomy', $_taxonomy, $taxonomy, $fields ); 
    507521        } 
    508522 
    509523        /** 
     
    652666         * 
    653667         * @access protected 
    654668         * 
    655          * @param array|object $post_type The unprepared post type data 
     669         * @param object $post_type Post type object 
    656670         * @param array $fields The subset of post fields to return 
    657671         * @return array The prepared post type data 
    658672         */ 
    659         protected function _prepare_post_type( $post_type, $fields ) { 
    660                 $post_type = (array) $post_type; 
    661  
     673        public function _prepare_post_type( $post_type, $fields ) { 
    662674                $_post_type = array( 
    663                         'name' => $post_type['name'], 
    664                         'label' => $post_type['label'], 
    665                         'description' => $post_type['description'], 
    666                         'hierarchical' => $post_type['hierarchical'], 
    667                         'public' => $post_type['public'], 
    668                         '_builtin' => $post_type['_builtin'], 
    669                         'supports' => get_all_post_type_supports( $post_type['name'] ) 
     675                        'name' => $post_type->name, 
     676                        'label' => $post_type->label, 
     677                        'hierarchical' => (bool) $post_type->hierarchical, 
     678                        'public' => (bool) $post_type->public, 
     679                        'show_ui' => (bool) $post_type->show_ui, 
     680                        '_builtin' => (bool) $post_type->_builtin, 
     681                        'has_archive' => (bool) $post_type->has_archive, 
     682                        'supports' => array_keys( array_filter( get_all_post_type_supports( $post_type->name ) ) ), 
    670683                ); 
    671684 
    672685                if ( in_array( 'labels', $fields ) ) { 
    673                         $_post_type['labels'] = (array) $post_type['labels']; 
     686                        $_post_type['labels'] = (array) $post_type->labels; 
    674687                } 
    675688 
    676689                if ( in_array( 'capabilities', $fields ) ) { 
    677                         $_post_type['cap'] = (array) $post_type['cap']; 
    678                         $_post_type['capability_type'] = $post_type['capability_type']; 
    679                         $_post_type['map_meta_cap'] = $post_type['map_meta_cap']; 
     690                        $_post_type['cap'] = (array) $post_type->cap; 
     691                        $_post_type['map_meta_cap'] = (bool) $post_type->map_meta_cap; 
    680692                } 
    681693 
    682                 if ( in_array( 'admin', $fields ) ) { 
    683                         $_post_type['publicly_queryable'] = $post_type['publicly_queryable']; 
    684                         $_post_type['exclude_from_search'] = $post_type['exclude_from_search']; 
    685                         $_post_type['_edit_link'] = $post_type['_edit_link']; 
    686                         $_post_type['rewrite'] = $post_type['rewrite']; 
    687                         $_post_type['has_archive'] = $post_type['has_archive']; 
    688                         $_post_type['query_var'] = $post_type['query_var']; 
    689                 } 
    690  
    691694                if ( in_array( 'menu', $fields ) ) { 
    692                         $_post_type['show_ui'] = $post_type['show_ui']; 
    693                         $_post_type['menu_position'] = $post_type['menu_position']; 
    694                         $_post_type['menu_icon'] = $post_type['menu_icon']; 
    695                         $_post_type['show_in_nav_menus'] = $post_type['show_in_nav_menus']; 
    696                         $_post_type['show_in_menu'] = $post_type['show_in_menu']; 
    697                         $_post_type['show_in_admin_bar'] = $post_type['show_in_admin_bar']; 
     695                        $_post_type['menu_position'] = (int) $post_type->menu_position; 
     696                        $_post_type['menu_icon'] = $post_type->menu_icon; 
     697                        $_post_type['menu_parent'] = is_bool( $post_type->show_in_menu ) ? '' : (string) $post_type->show_in_menu; 
     698                        $_post_type['show_in_menu'] = (bool) $post_type->show_in_menu; 
    698699                } 
    699700 
    700                 if ( in_array( 'taxonomies', $fields ) ) { 
    701                         $_post_type['taxonomies'] = get_object_taxonomies( $_post_type['name'] ); 
    702                 } 
     701                if ( in_array( 'taxonomies', $fields ) ) 
     702                        $_post_type['taxonomies'] = get_object_taxonomies( $_post_type->name, 'names' ); 
    703703 
    704704                return apply_filters( 'xmlrpc_prepare_post_type', $_post_type, $post_type ); 
    705705        } 
     
    737737        /** 
    738738         * Create a new post for any registered post type. 
    739739         * 
     740         * @since 3.4.0 
     741         * 
    740742         * @uses wp_insert_post() 
    741743         * @param array $args Method parameters. Contains: 
    742744         *  - int     $blog_id 
     
    784786 
    785787        /* 
    786788         * Helper method for filtering out elements from an array. 
     789         * 
     790         * @since 3.4.0 
    787791         */ 
    788         function _is_greater_than_one( $count ){ 
     792        function _is_greater_than_one( $count ) { 
    789793                return $count > 1; 
    790794        } 
    791795 
    792796        /* 
    793797         * Helper method for wp_newPost and wp_editPost, containing shared logic. 
     798         * 
     799         * @since 3.4.0 
    794800         */ 
    795         function _insert_post( $user, $content_struct ) { 
     801        protected function _insert_post( $user, $content_struct ) { 
    796802                $defaults = array( 'post_status' => 'draft', 'post_type' => 'post', 'post_author' => 0, 
    797                         'post_password' => '', 'post_excerpt' => '', 'post_content' => '', 'post_title' => '', 'sticky' => 0 ); 
     803                        'post_password' => '', 'post_excerpt' => '', 'post_content' => '', 'post_title' => '' ); 
    798804 
    799805                $post_data = wp_parse_args( $content_struct, $defaults ); 
    800806 
    801807                $post_type = get_post_type_object( $post_data['post_type'] ); 
    802                 if ( ! ( (bool) $post_type ) ) 
     808                if ( ! $post_type ) 
    803809                        return new IXR_Error( 403, __( 'Invalid post type' ) ); 
    804810 
    805                 $update = false; 
    806                 if ( ! empty( $post_data[ 'ID' ] ) ) 
    807                         $update = true; 
     811                $update = ! empty( $post_data['ID'] ); 
    808812 
    809813                if ( $update ) { 
    810                         if ( ! current_user_can( $post_type->cap->edit_post, $post_data[ 'ID' ] ) ) 
     814                        if ( ! current_user_can( $post_type->cap->edit_post, $post_data['ID'] ) ) 
    811815                                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); 
     816                        if ( $post_data['post_type'] != get_post_type( $post_data['ID'] ) ) 
     817                                return new IXR_Error( 401, __( 'The post type may not be changed.' ) ); 
    812818                } else { 
    813819                        if ( ! current_user_can( $post_type->cap->edit_posts ) ) 
    814820                                return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) ); 
     
    819825                        case 'pending': 
    820826                                break; 
    821827                        case 'private': 
     828                                unset( $post_data['sticky'] ); 
    822829                                if ( ! current_user_can( $post_type->cap->publish_posts ) ) 
    823                                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' )); 
     830                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' ) ); 
    824831                                break; 
    825832                        case 'publish': 
    826833                        case 'future': 
    827834                                if ( ! current_user_can( $post_type->cap->publish_posts ) ) 
    828                                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' )); 
     835                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' ) ); 
    829836                                break; 
    830837                        default: 
    831838                                $post_data['post_status'] = 'draft'; 
    832839                        break; 
    833840                } 
    834841 
    835                 if ( ! empty( $post_data['post_password'] ) && ! current_user_can( $post_type->cap->publish_posts ) ) 
    836                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); 
     842                if ( ! empty( $post_data['post_password'] ) ) { 
     843                        if ( ! current_user_can( $post_type->cap->publish_posts ) ) 
     844                                return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); 
     845                        unset( $post_data['sticky'] ); 
     846                } 
    837847 
    838848                $post_data['post_author'] = absint( $post_data['post_author'] ); 
    839849                if ( ! empty( $post_data['post_author'] ) && $post_data['post_author'] != $user->ID ) { 
     
    848858                        $post_data['post_author'] = $user->ID; 
    849859                } 
    850860 
    851                 if ( isset( $post_data['comment_status'] ) ) { 
    852                         if ( ! post_type_supports( $post_data['post_type'], 'comments' ) || ( $post_data['comment_status'] != 'open' && $post_data['comment_status'] != 'closed' ) ) { 
    853                                 unset( $post_data['comment_status'] ); 
    854                         } 
    855                 } 
     861                if ( isset( $post_data['comment_status'] ) && $post_data['comment_status'] != 'open' && $post_data['comment_status'] != 'closed' ) 
     862                        unset( $post_data['comment_status'] ); 
    856863 
    857                 if ( isset( $post_data['ping_status'] ) ) { 
    858                         if ( ! post_type_supports( $post_data['post_type'], 'trackbacks' ) || ( $post_data['ping_status'] != 'open' && $post_data['ping_status'] != 'closed' ) ) { 
    859                                 unset( $post_data['ping_status'] ); 
    860                         } 
    861                 } 
     864                if ( isset( $post_data['ping_status'] ) && $post_data['ping_status'] != 'open' && $post_data['ping_status'] != 'closed' ) 
     865                        unset( $post_data['ping_status'] ); 
    862866 
    863867                // Do some timestamp voodoo 
    864868                if ( ! empty( $post_data['post_date_gmt'] ) ) { 
    865869                        // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
    866                         $dateCreated = str_replace( 'Z', '', $post_data['post_date_gmt']->getIso() ) . 'Z'; 
     870                        $dateCreated = rtrim( $post_data['post_date_gmt']->getIso(), 'Z' ) . 'Z'; 
    867871                } elseif ( ! empty( $post_data['post_date'] ) ) { 
    868872                        $dateCreated = $post_data['post_date']->getIso(); 
    869873                } 
     
    873877                        $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); 
    874878                } 
    875879 
    876                 if ( ! isset( $post_data['ID'] ) ) { 
     880                if ( ! isset( $post_data['ID'] ) ) 
    877881                        $post_data['ID'] = get_default_post_to_edit( $post_data['post_type'], true )->ID; 
    878                 } 
    879882                $post_ID = $post_data['ID']; 
    880883 
    881                 $sticky = $post_data['sticky'] ? true : false; 
    882  
    883                 if ( $post_data['post_type'] == 'post' && $sticky == true ) { 
     884                if ( $post_data['post_type'] == 'post' && isset( $post_data['sticky'] ) ) { 
    884885                        if ( ! current_user_can( $post_type->cap->edit_others_posts ) ) 
    885886                                return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) ); 
    886  
    887                         if ( $post_data['post_status'] != 'publish' ) 
    888                                 return new IXR_Error( 401, __( 'Only published posts can be made sticky.' ) ); 
    889  
    890                         stick_post( $post_ID ); 
     887                        if ( $post_data['sticky'] ) 
     888                                stick_post( $post_ID ); 
     889                        else 
     890                                unstick_post( $post_ID ); 
    891891                } 
    892892 
    893                 if ( isset ( $post_data['post_thumbnail'] ) ) { 
     893                if ( isset( $post_data['post_thumbnail'] ) ) { 
    894894                        // empty value deletes, non-empty value adds/updates 
    895                         if ( empty( $post_data['post_thumbnail'] ) ) { 
     895                        if ( ! $post_data['post_thumbnail'] ) 
    896896                                delete_post_thumbnail( $post_ID ); 
    897                         } 
    898                         else { 
    899                                 if ( set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] ) === false ) 
     897                        elseif ( ! set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] ) ) 
    900898                                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); 
    901                         } 
    902899                        unset( $content_struct['post_thumbnail'] ); 
    903900                } 
    904901 
    905                 if ( isset ( $post_data['custom_fields'] ) && post_type_supports( $post_data['post_type'], 'custom-fields' ) ) { 
     902                if ( isset( $post_data['custom_fields'] ) ) 
    906903                        $this->set_custom_fields( $post_ID, $post_data['custom_fields'] ); 
    907                 } 
    908904 
    909905                if ( isset( $post_data['terms'] ) || isset( $post_data['terms_names'] ) ) { 
    910906                        $post_type_taxonomies = get_object_taxonomies( $post_data['post_type'], 'objects' ); 
     
    987983                        } 
    988984 
    989985                        $post_data['tax_input'] = $terms; 
    990                         unset( $post_data['terms'] ); 
    991                         unset( $post_data['terms_names'] ); 
     986                        unset( $post_data['terms'], $post_data['terms_names'] ); 
    992987                } else { 
    993988                        // do not allow direct submission of 'tax_input', clients must use 'terms' and/or 'terms_names' 
    994                         unset( $post_data['tax_input'] ); 
     989                        unset( $post_data['tax_input'], $post_data['post_category'], $post_data['tags_input'] ); 
    995990                } 
    996991 
    997992                if ( isset( $post_data['post_format'] ) ) { 
     
    10241019        /** 
    10251020         * Edit a post for any registered post type. 
    10261021         * 
     1022         * @since 3.4.0 
     1023         * 
    10271024         * The $content_struct parameter only needs to contain fields that 
    10281025         * should be changed. All other fields will retain their existing values. 
    10291026         * 
     
    10391036        function wp_editPost( $args ) { 
    10401037                $this->escape( $args ); 
    10411038 
    1042                 $blog_id        = (int) $args[0]; // we will support this in the near future 
     1039                $blog_id        = (int) $args[0]; 
    10431040                $username       = $args[1]; 
    10441041                $password       = $args[2]; 
    10451042                $post_id        = (int) $args[3]; 
     
    10501047 
    10511048                do_action( 'xmlrpc_call', 'wp.editPost' ); 
    10521049 
    1053                 // User Capabilities are checked in _insert_post. 
    1054  
    10551050                $post = get_post( $post_id, ARRAY_A ); 
    10561051 
    1057                 if ( empty( $post["ID"] ) ) 
     1052                if ( empty( $post['ID'] ) ) 
    10581053                        return new IXR_Error( 404, __( 'Invalid post ID.' ) ); 
    10591054 
    10601055                // convert the date field back to IXR form 
     
    10671062                else 
    10681063                        $post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] ); 
    10691064 
    1070                 $this->escape( $post ); 
    10711065                $merged_content_struct = array_merge( $post, $content_struct ); 
    10721066 
    10731067                $retval = $this->_insert_post( $user, $merged_content_struct ); 
     
    10801074        /** 
    10811075         * Delete a post for any registered post type. 
    10821076         * 
     1077         * @since 3.4.0 
     1078         * 
    10831079         * @uses wp_delete_post() 
    10841080         * @param array $args Method parameters. Contains: 
    10851081         *  - int     $blog_id 
     
    11201116        /** 
    11211117         * Retrieve a post. 
    11221118         * 
     1119         * @since 3.4.0 
     1120         * 
    11231121         * The optional $fields parameter specifies what fields will be included 
    11241122         * in the response array. This should be a list of field names. 'post_id' will 
    11251123         * always be included in the response regardless of the value of $fields. 
     
    11791177 
    11801178                $post = wp_get_single_post( $post_id, ARRAY_A ); 
    11811179 
    1182                 if ( empty( $post["ID"] ) ) 
     1180                if ( empty( $post['ID'] ) ) 
    11831181                        return new IXR_Error( 404, __( 'Invalid post ID.' ) ); 
    11841182 
    11851183                $post_type = get_post_type_object( $post['post_type'] ); 
     
    11921190        /** 
    11931191         * Retrieve posts. 
    11941192         * 
     1193         * @since 3.4.0 
     1194         * 
    11951195         * The optional $filter parameter modifies the query used to retrieve posts. 
    11961196         * Accepted keys are 'post_type', 'post_status', 'number', 'offset', 
    11971197         * 'orderby', and 'order'. 
     
    12801280        /** 
    12811281         * Create a new term. 
    12821282         * 
     1283         * @since 3.4.0 
     1284         * 
    12831285         * @uses wp_insert_term() 
    12841286         * @param array $args Method parameters. Contains: 
    12851287         *  - int     $blog_id 
     
    13611363        /** 
    13621364         * Edit a term. 
    13631365         * 
     1366         * @since 3.4.0 
     1367         * 
    13641368         * @uses wp_update_term() 
    13651369         * @param array $args Method parameters. Contains: 
    13661370         *  - int     $blog_id 
     
    14551459        /** 
    14561460         * Delete a term. 
    14571461         * 
     1462         * @since 3.4.0 
     1463         * 
    14581464         * @uses wp_delete_term() 
    14591465         * @param array $args Method parameters. Contains: 
    14601466         *  - int     $blog_id 
     
    15081514        /** 
    15091515         * Retrieve a term. 
    15101516         * 
     1517         * @since 3.4.0 
     1518         * 
    15111519         * @uses get_term() 
    15121520         * @param array $args Method parameters. Contains: 
    15131521         *  - int     $blog_id 
     
    15621570        /** 
    15631571         * Retrieve all terms for a taxonomy. 
    15641572         * 
     1573         * @since 3.4.0 
     1574         * 
    15651575         * The optional $filter parameter modifies the query used to retrieve terms. 
    15661576         * Accepted keys are 'number', 'offset', 'orderby', 'order', 'hide_empty', and 'search'. 
    15671577         * 
     
    16361646        /** 
    16371647         * Retrieve a taxonomy. 
    16381648         * 
     1649         * @since 3.4.0 
     1650         * 
    16391651         * @uses get_taxonomy() 
    16401652         * @param array $args Method parameters. Contains: 
    16411653         *  - int     $blog_id 
     
    16521664                $password       = $args[2]; 
    16531665                $taxonomy       = $args[3]; 
    16541666 
     1667                if ( isset( $args[4] ) ) 
     1668                        $fields = $args[4]; 
     1669                else 
     1670                        $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'capabilities', 'object-types' ), 'wp.getTaxonomy' ); 
     1671 
    16551672                if ( ! $user = $this->login( $username, $password ) ) 
    16561673                        return $this->error; 
    16571674 
     
    16651682                if ( ! current_user_can( $taxonomy->cap->assign_terms ) ) 
    16661683                        return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) ); 
    16671684 
    1668                 return $this->_prepare_taxonomy( $taxonomy ); 
     1685                return $this->_prepare_taxonomy( $taxonomy, $fields ); 
    16691686        } 
    16701687 
    16711688        /** 
    16721689         * Retrieve all taxonomies. 
    16731690         * 
     1691         * @since 3.4.0 
     1692         * 
    16741693         * @uses get_taxonomies() 
    16751694         * @param array $args Method parameters. Contains: 
    16761695         *  - int     $blog_id 
     
    16841703                $blog_id            = (int) $args[0]; 
    16851704                $username           = $args[1]; 
    16861705                $password           = $args[2]; 
     1706                $filter             = isset( $args[3] ) ? $args[3] : array( 'public' => true ); 
    16871707 
     1708                if ( isset( $args[4] ) ) 
     1709                        $fields = $args[4]; 
     1710                else 
     1711                        $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'capabilities', 'object-types' ), 'wp.getTaxonomies' ); 
     1712 
    16881713                if ( ! $user = $this->login( $username, $password ) ) 
    16891714                        return $this->error; 
    16901715 
    16911716                do_action( 'xmlrpc_call', 'wp.getTaxonomies' ); 
    16921717 
    1693                 $taxonomies = get_taxonomies( array(), 'objects' ); 
     1718                $taxonomies = get_taxonomies( $filter, 'objects' ); 
    16941719 
    16951720                // holds all the taxonomy data 
    16961721                $struct = array(); 
     
    17001725                        if ( ! current_user_can( $taxonomy->cap->assign_terms ) ) 
    17011726                                continue; 
    17021727 
    1703                         $struct[] = $this->_prepare_taxonomy( $taxonomy ); 
     1728                        $struct[] = $this->_prepare_taxonomy( $taxonomy, $fields ); 
    17041729                } 
    17051730 
    17061731                return $struct; 
     
    20632088        /** 
    20642089         * Get list of all tags 
    20652090         * 
    2066          * @since 2.7 
     2091         * @since 2.7.0 
    20672092         * 
    20682093         * @param array $args Method parameters. 
    20692094         * @return array 
     
    24692494 
    24702495                // Do some timestamp voodoo 
    24712496                if ( !empty( $content_struct['date_created_gmt'] ) ) { 
    2472                         $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     2497                        // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     2498                        $dateCreated = rtrim( $post_data['post_date_gmt']->getIso(), 'Z' ) . 'Z'; 
    24732499                        $comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated)); 
    24742500                        $comment_date_gmt = iso8601_to_datetime($dateCreated, 'GMT'); 
    24752501                } 
     
    29572983        /** 
    29582984         * Retrieves a post type 
    29592985         * 
     2986         * @since 3.4.0 
     2987         * 
    29602988         * @uses get_post_type_object() 
    29612989         * @param array $args Method parameters. Contains: 
    29622990         *  - int     $blog_id 
     
    29833011                $password       = $args[2]; 
    29843012                $post_type_name = $args[3]; 
    29853013 
    2986                 if ( isset( $args[4] ) )  
    2987                         $fields = $args[4];  
    2988                 else  
    2989                         $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'capabilities', 'taxonomies' ), 'wp.getPostType' );  
     3014                if ( isset( $args[4] ) ) 
     3015                        $fields = $args[4]; 
     3016                else 
     3017                        $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'capabilities', 'taxonomies' ), 'wp.getPostType' ); 
    29903018 
    29913019                if ( !$user = $this->login( $username, $password ) ) 
    29923020                        return $this->error; 
     
    30073035        /** 
    30083036         * Retrieves a post types 
    30093037         * 
    3010          * @access private 
     3038         * @since 3.4.0 
    30113039         * 
    30123040         * @uses get_post_types() 
    30133041         * @param array $args Method parameters. Contains: 
     
    30243052                $blog_id            = (int) $args[0]; 
    30253053                $username           = $args[1]; 
    30263054                $password           = $args[2]; 
    3027                 $filter             = isset( $args[3] ) ? $args[3] : array( 'public' => true );  
     3055                $filter             = isset( $args[3] ) ? $args[3] : array( 'public' => true ); 
    30283056 
    3029                 if ( isset( $args[4] ) )  
    3030                         $fields = $args[4];  
    3031                 else  
    3032                         $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'capabilities', 'taxonomies' ), 'wp.getPostTypes' );  
     3057                if ( isset( $args[4] ) ) 
     3058                        $fields = $args[4]; 
     3059                else 
     3060                        $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'capabilities', 'taxonomies' ), 'wp.getPostTypes' ); 
    30333061 
    30343062                if ( ! $user = $this->login( $username, $password ) ) 
    30353063                        return $this->error; 
     
    35293557        function mw_newPost($args) { 
    35303558                $this->escape($args); 
    35313559 
    3532                 $blog_ID     = (int) $args[0]; // we will support this in the near future 
     3560                $blog_ID     = (int) $args[0]; 
    35333561                $username  = $args[1]; 
    35343562                $password   = $args[2]; 
    35353563                $content_struct = $args[3]; 
     
    37263754 
    37273755                // Do some timestamp voodoo 
    37283756                if ( !empty( $content_struct['date_created_gmt'] ) ) 
    3729                         $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     3757                        // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     3758                        $dateCreated = rtrim( $post_data['post_date_gmt']->getIso(), 'Z' ) . 'Z'; 
    37303759                elseif ( !empty( $content_struct['dateCreated']) ) 
    37313760                        $dateCreated = $content_struct['dateCreated']->getIso(); 
    37323761 
     
    40444073 
    40454074                // Do some timestamp voodoo 
    40464075                if ( !empty( $content_struct['date_created_gmt'] ) ) 
    4047                         $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     4076                        // We know this is supposed to be GMT, so we're going to slap that Z on there by force 
     4077                        $dateCreated = rtrim( $post_data['post_date_gmt']->getIso(), 'Z' ) . 'Z'; 
    40484078                elseif ( !empty( $content_struct['dateCreated']) ) 
    40494079                        $dateCreated = $content_struct['dateCreated']->getIso(); 
    40504080