--- old/category-visibility.php	2005-07-19 11:34:23.000000000 +0200
+++ new/category-visibility.php	2005-07-19 11:35:50.000000000 +0200
@@ -283,6 +283,36 @@
 			" AND $cat_visibility.user_level<=$user_level";
 }
 
+function cv_is_403($is_403) {
+	if ($is_403 == true) return true;
+
+	global $wp_query;
+
+	$q = $wp_query->query_vars;
+
+	remove_filter('posts_join', 'cv_join');
+	remove_filter('archive_join', 'cv_join');
+	remove_filter('posts_where', 'cv_posts_where');
+	remove_filter('archive_where', 'cv_archive_where');
+
+	$posts_per_page = $q['posts_per_page'];
+	$q['posts_per_page'] = 1;
+	$nopaging = $q['nopaging'];
+	$q['nopaging'] = false;
+
+	$posts = $wp_query->get_posts();
+
+	add_filter('posts_join', 'cv_join');
+	add_filter('archive_join', 'cv_join');
+	add_filter('posts_where', 'cv_posts_where');
+	add_filter('archive_where', 'cv_archive_where');
+
+	$q['posts_per_page'] = $posts_per_page;
+	$q['nopaging'] = $nopaging;
+
+	return $wp_query->post_count > 0;
+}
+
 add_action('admin_menu', 'category_vis_menu');
 add_action('add_category', 'add_cat_visibility');
 add_action('delete_category', 'delete_cat_visibility');
@@ -291,5 +321,6 @@
 add_filter('posts_where', 'cv_posts_where');
 add_filter('archive_where', 'cv_archive_where');
 add_filter('list_cats', 'alter_vis_catlist');
+add_filter('is_403', 'cv_is_403');
 
 ?>

