Make WordPress Core


Ignore:
Timestamp:
11/29/2015 02:24:15 AM (10 years ago)
Author:
johnbillion
Message:

When a post is scheduled for publication, treat it the same as a published post when calculating the capabilities required to edit or delete it.

Fixes #33694

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/capabilities.php

    r35718 r35747  
    8484        // If the post author is set and the user is the author...
    8585        if ( $post->post_author && $user_id == $post->post_author ) {
    86             // If the post is published...
    87             if ( 'publish' == $post->post_status ) {
     86            // If the post is published or scheduled...
     87            if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
    8888                $caps[] = $post_type->cap->delete_published_posts;
    8989            } elseif ( 'trash' == $post->post_status ) {
    90                 if ( 'publish' == get_post_meta( $post->ID, '_wp_trash_meta_status', true ) ) {
     90                $status = get_post_meta( $post->ID, '_wp_trash_meta_status', true );
     91                if ( in_array( $status, array( 'publish', 'future' ), true ) ) {
    9192                    $caps[] = $post_type->cap->delete_published_posts;
     93                } else {
     94                    $caps[] = $post_type->cap->delete_posts;
    9295                }
    9396            } else {
     
    98101            // The user is trying to edit someone else's post.
    99102            $caps[] = $post_type->cap->delete_others_posts;
    100             // The post is published, extra cap required.
    101             if ( 'publish' == $post->post_status ) {
     103            // The post is published or scheduled, extra cap required.
     104            if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
    102105                $caps[] = $post_type->cap->delete_published_posts;
    103106            } elseif ( 'private' == $post->post_status ) {
     
    142145        // If the post author is set and the user is the author...
    143146        if ( $post->post_author && $user_id == $post->post_author ) {
    144             // If the post is published...
    145             if ( 'publish' == $post->post_status ) {
     147            // If the post is published or scheduled...
     148            if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
    146149                $caps[] = $post_type->cap->edit_published_posts;
    147150            } elseif ( 'trash' == $post->post_status ) {
    148                 if ( 'publish' == get_post_meta( $post->ID, '_wp_trash_meta_status', true ) ) {
     151                $status = get_post_meta( $post->ID, '_wp_trash_meta_status', true );
     152                if ( in_array( $status, array( 'publish', 'future' ), true ) ) {
    149153                    $caps[] = $post_type->cap->edit_published_posts;
     154                } else {
     155                    $caps[] = $post_type->cap->edit_posts;
    150156                }
    151157            } else {
     
    156162            // The user is trying to edit someone else's post.
    157163            $caps[] = $post_type->cap->edit_others_posts;
    158             // The post is published, extra cap required.
    159             if ( 'publish' == $post->post_status ) {
     164            // The post is published or scheduled, extra cap required.
     165            if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
    160166                $caps[] = $post_type->cap->edit_published_posts;
    161167            } elseif ( 'private' == $post->post_status ) {
Note: See TracChangeset for help on using the changeset viewer.