<?php
static function has_private_posts($user_id = null) {
	global $wpdb;
	
	$has_private_posts = get_transient('has_private_posts');
	if ( $has_private_posts === false ) {
		$wpdb->show_errors();
		$has_private_posts = intval($wpdb->get_var("SELECT EXISTS( SELECT 1 FROM $wpdb->posts WHERE post_status = 'private' );"));
		set_transient('has_private_posts', $has_private_posts);
	}
	
	if ( !$user_id )
		return $has_private_posts;
	elseif ( !$has_private_posts )
		return false;
	
	$user_id = intval($user_id);
	$has_private_posts = get_usermeta($user_id, 'has_private_posts');
	
	if ( $has_private_posts )
		return true;
	elseif ( $has_private_posts === array() )
		return false;
	
	$has_private_posts = intval($wpdb->get_var("SELECT EXISTS( SELECT 1 FROM $wpdb->posts WHERE post_status = 'private' AND user_id = $user_id );"));
	if ( !$has_private_posts )
		$has_private_posts = array();
	
	update_usermeta($user_id, 'has_private_posts', $has_private_posts);
	
	return !empty($has_private_posts);
} # has_private_posts()
?>