Make WordPress Core

Changeset 6715


Ignore:
Timestamp:
02/04/2008 06:52:49 PM (16 years ago)
Author:
ryan
Message:

More cap checks from josephscott. see #5313

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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);
Note: See TracChangeset for help on using the changeset viewer.