WordPress.org

Make WordPress Core

Changeset 16798


Ignore:
Timestamp:
12/08/10 15:31:17 (5 years ago)
Author:
westi
Message:

Ensure that we always check the right cap when posts are added or edited.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/class-wp-xmlrpc-server.php

    r16769 r16798  
    20812081        $password   = $args[2]; 
    20822082        $content_struct = $args[3]; 
    2083         $publish     = $args[4]; 
     2083        $publish     = isset( $args[4] ) ? $args[4] : 0; 
    20842084 
    20852085        if ( !$user = $this->login($username, $password) ) 
     
    20872087 
    20882088        do_action('xmlrpc_call', 'metaWeblog.newPost'); 
    2089  
    2090         $cap = ( $publish ) ? 'publish_posts' : 'edit_posts'; 
    2091         $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' ); 
    2092         $post_type = 'post'; 
     2089         
    20932090        $page_template = ''; 
    20942091        if ( !empty( $content_struct['post_type'] ) ) { 
    20952092            if ( $content_struct['post_type'] == 'page' ) { 
    2096                 $cap = ( $publish ) ? 'publish_pages' : 'edit_pages'; 
     2093                if ( $publish ) 
     2094                    $cap  = 'publish_pages'; 
     2095                elseif ('publish' == $content_struct['page_status']) 
     2096                    $cap  = 'publish_pages'; 
     2097                else 
     2098                    $cap = 'edit_pages'; 
    20972099                $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' ); 
    20982100                $post_type = 'page'; 
     
    21002102                    $page_template = $content_struct['wp_page_template']; 
    21012103            } elseif ( $content_struct['post_type'] == 'post' ) { 
    2102                 // This is the default, no changes needed 
     2104                if ( $publish ) 
     2105                    $cap  = 'publish_posts'; 
     2106                elseif ('publish' == $content_struct['post_status']) 
     2107                    $cap  = 'publish_posts'; 
     2108                else 
     2109                    $cap = 'edit_posts'; 
     2110                $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' ); 
     2111                $post_type = 'post'; 
    21032112            } else { 
    21042113                // No other post_type values are allowed here 
    21052114                return new IXR_Error( 401, __( 'Invalid post type.' ) ); 
    21062115            } 
     2116        } else { 
     2117            if ( $publish ) 
     2118                $cap  = 'publish_posts'; 
     2119            elseif ('publish' == $content_struct['post_status']) 
     2120                $cap  = 'publish_posts'; 
     2121            else 
     2122                $cap = 'edit_posts'; 
     2123            $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' ); 
     2124            $post_type = 'post';             
    21072125        } 
    21082126 
     
    23822400        if ( !empty( $content_struct['post_type'] ) ) { 
    23832401            if ( $content_struct['post_type'] == 'page' ) { 
    2384                 $cap = ( $publish ) ? 'publish_pages' : 'edit_pages'; 
     2402                if ( $publish ) 
     2403                    $cap  = 'publish_pages'; 
     2404                elseif ('publish' == $content_struct['page_status']) 
     2405                    $cap  = 'publish_pages'; 
     2406                else 
     2407                    $cap = 'edit_pages'; 
    23852408                $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' ); 
    23862409                $post_type = 'page'; 
     
    23882411                    $page_template = $content_struct['wp_page_template']; 
    23892412            } elseif ( $content_struct['post_type'] == 'post' ) { 
    2390                 // This is the default, no changes needed 
     2413                if ( $publish ) 
     2414                    $cap  = 'publish_posts'; 
     2415                elseif ('publish' == $content_struct['post_status']) 
     2416                    $cap  = 'publish_posts'; 
     2417                else 
     2418                    $cap = 'edit_posts'; 
     2419                $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' ); 
     2420                $post_type = 'post'; 
    23912421            } else { 
    23922422                // No other post_type values are allowed here 
    23932423                return new IXR_Error( 401, __( 'Invalid post type.' ) ); 
    23942424            } 
     2425        } else { 
     2426            if ( $publish ) 
     2427                $cap  = 'publish_posts'; 
     2428            elseif ('publish' == $content_struct['post_status']) 
     2429                $cap  = 'publish_posts'; 
     2430            else 
     2431                $cap = 'edit_posts'; 
     2432            $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' ); 
     2433            $post_type = 'post';             
    23952434        } 
    23962435 
Note: See TracChangeset for help on using the changeset viewer.