Ticket #16956: 16956.10.patch
File 16956.10.patch, 3.3 KB (added by , 9 years ago) |
---|
-
src/wp-includes/capabilities-functions.php
53 53 } 54 54 55 55 $post_type = get_post_type_object( $post->post_type ); 56 if ( ! $post_type ) { 57 /* translators: 1: capability name, 2: post type */ 58 _doing_it_wrong( 'map_meta_cap', sprintf( __( 'Checked capability %1$s against unregistered post type %2$s' ), $cap, $post->post_type ), '4.4' ); 59 $caps[] = 'edit_others_posts'; 60 break; 61 } 56 62 57 63 if ( ! $post_type->map_meta_cap ) { 58 64 $caps[] = $post_type->cap->$cap; … … 101 107 } 102 108 103 109 $post_type = get_post_type_object( $post->post_type ); 110 if ( ! $post_type ) { 111 /* translators: 1: capability name, 2: post type */ 112 _doing_it_wrong( 'map_meta_cap', sprintf( __( 'Checked capability %1$s against unregistered post type %2$s' ), $cap, $post->post_type ), '4.4' ); 113 $caps[] = 'edit_others_posts'; 114 break; 115 } 104 116 105 117 if ( ! $post_type->map_meta_cap ) { 106 118 $caps[] = $post_type->cap->$cap; … … 143 155 } 144 156 145 157 $post_type = get_post_type_object( $post->post_type ); 158 if ( ! $post_type ) { 159 /* translators: 1: capability name, 2: post type */ 160 _doing_it_wrong( 'map_meta_cap', sprintf( __( 'Checked capability %1$s against unregistered post type %2$s' ), $cap, $post->post_type ), '4.4' ); 161 $caps[] = 'edit_others_posts'; 162 break; 163 } 146 164 147 165 if ( ! $post_type->map_meta_cap ) { 148 166 $caps[] = $post_type->cap->$cap; … … 169 187 case 'publish_post': 170 188 $post = get_post( $args[0] ); 171 189 $post_type = get_post_type_object( $post->post_type ); 190 if ( ! $post_type ) { 191 /* translators: 1: capability name, 2: post type */ 192 _doing_it_wrong( 'map_meta_cap', sprintf( __( 'Checked capability %1$s against unregistered post type %2$s' ), $cap, $post->post_type ), '4.4' ); 193 $caps[] = 'edit_others_posts'; 194 break; 195 } 172 196 173 197 $caps[] = $post_type->cap->publish_posts; 174 198 break; -
tests/phpunit/tests/user/capabilities.php
994 994 995 995 $this->assertFalse( current_user_can( 'edit_user', $super_admin->ID ) ); 996 996 } 997 998 /** 999 * @ticket 16956 1000 */ 1001 function test_require_edit_others_posts_if_post_type_doesnt_exist() { 1002 register_post_type( 'existed' ); 1003 $post_id = $this->factory->post->create( array( 'post_type' => 'existed' ) ); 1004 _unregister_post_type( 'existed' ); 1005 1006 $subscriber_id = $this->factory->user->create( array( 'role' => 'subscriber' ) ); 1007 $editor_id = $this->factory->user->create( array( 'role' => 'editor' ) ); 1008 1009 $this->setExpectedIncorrectUsage( 'map_meta_cap' ); 1010 foreach ( array( 'delete_post', 'edit_post', 'read_post', 'publish_post' ) as $cap ) { 1011 wp_set_current_user( $subscriber_id ); 1012 $this->assertSame( array( 'edit_others_posts' ), map_meta_cap( $cap, $subscriber_id, $post_id ) ); 1013 $this->assertFalse( current_user_can( $cap, $post_id ) ); 1014 1015 wp_set_current_user( $editor_id ); 1016 $this->assertSame( array( 'edit_others_posts' ), map_meta_cap( $cap, $editor_id, $post_id ) ); 1017 $this->assertTrue( current_user_can( $cap, $post_id ) ); 1018 } 1019 } 997 1020 }