WordPress.org

Make WordPress Core

Ticket #18429: wp.newPost2.patch

File wp.newPost2.patch, 4.9 KB (added by nprasath002, 4 years ago)
  • class-wp-xmlrpc-server.php

    # This patch file was generated by NetBeans IDE
    # Following Index: paths are relative to: C:\xampp\htdocs\newtrunk\wp-includes
    # This patch can be applied using context Tools: Patch action on respective folder.
    # It uses platform neutral UTF-8 encoding and \n newlines.
    # Above lines and this line are ignored by the patching process.
     
    596596 
    597597                do_action( 'xmlrpc_call', 'wp.newPost' ); 
    598598 
     599                $post_type = get_post_type_object( $content_struct['post_type'] ); 
     600                if( ! ( (bool) $post_type ) ) 
     601                        return new IXR_Error( 403, __( 'Invalid post type' ) ); 
     602 
     603                if( ! current_user_can( $post_type->cap->edit_posts ) ) 
     604                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) ); 
     605 
     606                switch ( $content_struct['post_status'] ) { 
     607                        case 'draft': 
     608                        case 'pending': 
     609                                break; 
     610                        case 'private': 
     611                                if( ! current_user_can( $post_type->cap->publish_posts ) ) 
     612                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' )); 
     613                                break; 
     614                        case 'publish': 
     615                        case 'future': 
     616                                if( ! current_user_can( $post_type->cap->publish_posts ) ) 
     617                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' )); 
     618                                break; 
     619                        default: 
     620                                $content_struct['post_status'] = 'draft'; 
     621                        break; 
     622                } 
     623 
     624                if ( ! empty( $content_struct['post_password'] ) && ! current_user_can( $post_type->cap->publish_posts ) ) 
     625                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); 
     626 
    599627                unset( $content_struct['ID'] ); 
    600628 
    601629                return $this->_wp_insertPost( $user, $content_struct ); 
     
    617645 
    618646                $post_data = wp_parse_args( $content_struct, $defaults ); 
    619647 
    620                 $post_type = get_post_type_object( $post_data['post_type'] ); 
    621                 if( ! ( (bool) $post_type ) ) 
    622                         return new IXR_Error( 403, __( 'Invalid post type' ) ); 
    623648 
    624                 if( ! current_user_can( $post_type->cap->edit_posts ) ) 
    625                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) ); 
    626649 
    627                 switch ( $post_data['post_status'] ) { 
    628                         case 'draft': 
    629                         case 'pending': 
    630                                 break; 
    631                         case 'private': 
    632                                 if( ! current_user_can( $post_type->cap->publish_posts ) ) 
    633                                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' )); 
    634                                 break; 
    635                         case 'publish': 
    636                         case 'future': 
    637                                 if( ! current_user_can( $post_type->cap->publish_posts ) ) 
    638                                         return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' )); 
    639                                 break; 
    640                         default: 
    641                                 $post_data['post_status'] = 'draft'; 
    642                         break; 
    643                 } 
    644  
     650                $post_data['post_author'] = absint( $post_data['post_author'] ); 
    645651                if ( ! empty( $post_data['post_password'] ) && ! current_user_can( $post_type->cap->publish_posts ) ) 
    646652                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); 
    647653 
     
    852858 
    853859                do_action( 'xmlrpc_call', 'wp.editPost' ); 
    854860 
    855                 // User Capabilities are checked in _wp_insertPost. 
    856  
    857861                $post = get_post( $post_id, ARRAY_A ); 
    858  
    859862                if ( empty( $post["ID"] ) ) 
    860863                        return new IXR_Error( 404, __( 'Invalid post ID.' ) ); 
    861864 
     
    872875                $this->escape( $post ); 
    873876                $merged_content_struct = array_merge( $post, $content_struct ); 
    874877 
     878                $post_type = get_post_type_object( $merged_content_struct['post_type'] ); 
     879                if( ! ( (bool) $post_type ) ) 
     880                        return new IXR_Error( 403, __( 'Invalid post type' ) ); 
     881 
     882                if( ! current_user_can( $post_type->cap->edit_post, $post_id ) ) 
     883                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) ); 
     884 
     885                switch ( $merged_content_struct['post_status'] ) { 
     886                        case 'draft': 
     887                        case 'pending': 
     888                                break; 
     889                        case 'private': 
     890                                if( ! current_user_can( $post_type->cap->publish_post, $post_id ) ) 
     891                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' )); 
     892                                break; 
     893                        case 'publish': 
     894                        case 'future': 
     895                                if( ! current_user_can( $post_type->cap->publish_post, $post_id ) ) 
     896                                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' )); 
     897                                break; 
     898                        default: 
     899                                $post_data['post_status'] = 'draft'; 
     900                        break; 
     901                } 
     902 
     903                if ( ! empty( $merged_content_struct['post_password'] ) && ! current_user_can( $post_type->cap->publish_post, $post_id ) ) 
     904                        return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) ); 
     905 
    875906                $retval = $this->_wp_insertPost( $user, $merged_content_struct ); 
    876907                if ( $retval instanceof IXR_Error ) 
    877908                        return $retval;