Ticket #5313: 2.3-xmlrpc.php.diff

File 2.3-xmlrpc.php.diff, 3.2 kB (added by josephscott, 5 months ago)

Patch against 2.3-branch

  • xmlrpc.php

    old new  
    975975          if (!$this->login_pass_ok($user_login, $user_pass)) { 
    976976            return $this->error; 
    977977          } 
    978  
    979       $cap = ($publish) ? 'publish_posts' : 'edit_posts'; 
    980978          $user = set_current_user(0, $user_login); 
    981           if ( !current_user_can($cap) ) 
    982             return new IXR_Error(401, __('Sorry, you are not allowed to post on this blog.')); 
    983979 
    984                 // The post_type defaults to post, but could also be page. 
    985                 $post_type = "post"; 
    986                 if( 
    987                         !empty($content_struct["post_type"]) 
    988                         && ($content_struct["post_type"] == "page") 
    989                 ) { 
    990                         $post_type = "page"; 
     980                $cap = ( $publish ) ? 'publish_posts' : 'edit_posts'; 
     981                $error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' ); 
     982                $post_type = 'post'; 
     983                if( !empty( $content_struct['post_type'] ) ) { 
     984                        if( $content_struct['post_type'] == 'page' ) { 
     985                                $cap = ( $publish ) ? 'publish_pages' : 'edit_pages'; 
     986                                $error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' ); 
     987                                $post_type = 'page'; 
     988                        } 
     989                        elseif( $content_type['post_type'] == 'post' ) { 
     990                                // This is the default, no changes needed 
     991                        } 
     992                        else { 
     993                                // No other post_type values are allowed here 
     994                                return new IXR_Error( 401, __( 'Invalid post type.' ) ); 
     995                        } 
    991996                } 
    992997 
     998                if( !current_user_can( $cap ) ) { 
     999                        return new IXR_Error( 401, $error_message ); 
     1000                } 
     1001 
    9931002                // Let WordPress generate the post_name (slug) unless 
    9941003                // one has been provided. 
    9951004                $post_name = ""; 
     
    11871196          if (!$this->login_pass_ok($user_login, $user_pass)) { 
    11881197            return $this->error; 
    11891198          } 
    1190  
    11911199                $user = set_current_user(0, $user_login); 
    11921200 
    1193                 // The post_type defaults to post, but could also be page. 
    1194                 $post_type = "post"
    1195                 if( 
    1196                        !empty($content_struct["post_type"]) 
    1197                         && ($content_struct["post_type"] == "page") 
    1198                 ) { 
    1199                         if( !current_user_can( 'edit_page', $post_ID ) ) { 
    1200                                 return(new IXR_Error(401, __("Sorry, you do not have the right to edit this page.")))
     1201                $cap = ( $publish ) ? 'publish_posts' : 'edit_posts'; 
     1202                $error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' )
     1203                $post_type = 'post'; 
     1204                if( !empty( $content_struct['post_type'] ) ) { 
     1205                        if( $content_struct['post_type'] == 'page' ) { 
     1206                               $cap = ( $publish ) ? 'publish_pages' : 'edit_pages'; 
     1207                               $error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' ); 
     1208                                $post_type = 'page'
    12011209                        } 
     1210                        elseif( $content_type['post_type'] == 'post' ) { 
     1211                                // This is the default, no changes needed 
     1212                        } 
     1213                        else { 
     1214                                // No other post_type values are allowed here 
     1215                                return new IXR_Error( 401, __( 'Invalid post type.' ) ); 
     1216                        } 
     1217                } 
    12021218 
    1203                         $post_type = "page"; 
     1219                if( !current_user_can( $cap ) ) { 
     1220                        return new IXR_Error( 401, $error_message ); 
    12041221                } 
    12051222 
    1206           // Edit page caps are checked in editPage.  Just check post here. 
    1207           if ( ( 'post' == $post_type ) && !current_user_can('edit_post', $post_ID) ) 
    1208             return new IXR_Error(401, __('Sorry, you can not edit this post.')); 
    1209  
    12101223          $postdata = wp_get_single_post($post_ID, ARRAY_A); 
    12111224 
    12121225                // If there is no post data for the give post id, stop