Changeset 6715

Show
Ignore:
Timestamp:
02/04/08 18:52:49 (5 months ago)
Author:
ryan
Message:

More cap checks from josephscott. see #5313

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/2.3/xmlrpc.php

    r6710 r6715  
    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.')); 
    983  
    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"; 
     979 
     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            } 
     996        } 
     997 
     998        if( !current_user_can( $cap ) ) { 
     999            return new IXR_Error( 401, $error_message ); 
    9911000        } 
    9921001 
     
    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             } 
    1202  
    1203             $post_type = "page"; 
    1204         } 
    1205  
    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.')); 
     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'; 
     1209            } 
     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        } 
     1218 
     1219        if( !current_user_can( $cap ) ) { 
     1220            return new IXR_Error( 401, $error_message ); 
     1221        } 
    12091222 
    12101223      $postdata = wp_get_single_post($post_ID, ARRAY_A);