Correct the logic used when determining whether to display the 'Mine' link on post list tables. It should only be shown when the count for the user's posts differs for the total count of posts. is_multi_author() cannot be used because it only considers Posts.

Fixes #19609

Built from https://develop.svn.wordpress.org/trunk@34667


git-svn-id: http://core.svn.wordpress.org/trunk@34631 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
John Blackbourn 2015-09-28 19:15:24 +00:00
parent 51667f882a
commit 2571b6dcec
2 changed files with 16 additions and 17 deletions

View File

@ -80,18 +80,16 @@ class WP_Posts_List_Table extends WP_List_Table {
$post_type = $this->screen->post_type;
$post_type_object = get_post_type_object( $post_type );
if ( is_multi_author() ) {
$exclude_states = get_post_stati( array(
'show_in_admin_all_list' => false,
) );
$this->user_posts_count = $wpdb->get_var( $wpdb->prepare( "
SELECT COUNT( 1 )
FROM $wpdb->posts
WHERE post_type = %s
AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
AND post_author = %d
", $post_type, get_current_user_id() ) );
}
$exclude_states = get_post_stati( array(
'show_in_admin_all_list' => false,
) );
$this->user_posts_count = intval( $wpdb->get_var( $wpdb->prepare( "
SELECT COUNT( 1 )
FROM $wpdb->posts
WHERE post_type = %s
AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
AND post_author = %d
", $post_type, get_current_user_id() ) ) );
if ( $this->user_posts_count && ! current_user_can( $post_type_object->cap->edit_others_posts ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) {
$_GET['author'] = get_current_user_id();
@ -270,6 +268,11 @@ class WP_Posts_List_Table extends WP_List_Table {
$all_args = array( 'post_type' => $post_type );
$mine = '';
// Subtract post types that are not included in the admin all list.
foreach ( get_post_stati( array( 'show_in_admin_all_list' => false ) ) as $state ) {
$total_posts -= $num_posts->$state;
}
if ( $this->user_posts_count && $this->user_posts_count !== $total_posts ) {
if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) {
$class = 'current';
@ -296,10 +299,6 @@ class WP_Posts_List_Table extends WP_List_Table {
$class = '';
}
// Subtract post types that are not included in the admin all list.
foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state )
$total_posts -= $num_posts->$state;
if ( empty( $class ) && ( ( $this->is_base_request() && ! $this->user_posts_count ) || isset( $_REQUEST['all_posts'] ) ) ) {
$class = 'current';
}

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.4-alpha-34666';
$wp_version = '4.4-alpha-34667';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.