From f588d966bdef3830605eda97052974175380a0c0 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 13 Dec 2005 00:54:52 +0000 Subject: [PATCH] Add read_post meta cap. git-svn-id: http://svn.automattic.com/wordpress/trunk@3297 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/capabilities.php | 15 +++++++++++++++ wp-includes/classes.php | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/wp-includes/capabilities.php b/wp-includes/capabilities.php index bf748aeae..fed7364d7 100644 --- a/wp-includes/capabilities.php +++ b/wp-includes/capabilities.php @@ -269,6 +269,21 @@ function map_meta_cap($cap, $user_id) { $caps[] = 'edit_published_posts'; } break; + case 'read_post': + $post = get_post($args[0]); + + if ( 'private' != $post->post_status ) { + $caps[] = 'read'; + break; + } + + $author_data = get_userdata($user_id); + $post_author_data = get_userdata($post->post_author); + if ($user_id == $post_author_data->ID) + $caps[] = 'read'; + else + $caps[] = 'read_private_posts'; + break; default: // If no meta caps match, return the original cap. $caps[] = $cap; diff --git a/wp-includes/classes.php b/wp-includes/classes.php index c9f13a298..932147770 100644 --- a/wp-includes/classes.php +++ b/wp-includes/classes.php @@ -643,8 +643,8 @@ class WP_Query { } else { $this->is_preview = true; } - } elseif ('private' == $status) { - if ($this->posts[0]->post_author != $user_ID) + } else { + if (! current_user_can('read_post', $this->posts[0]->ID)) $this->posts = array(); } }