From d78d29dfc4e0b502096df44c3f93c138072bcc77 Mon Sep 17 00:00:00 2001
From: ryan <ryan@1a063a9b-81f0-0310-95a4-ce76da25c4cd>
Date: Mon, 4 Oct 2010 19:26:40 +0000
Subject: [PATCH] Fix user edit urls for network admin

git-svn-id: http://svn.automattic.com/wordpress/trunk@15717 1a063a9b-81f0-0310-95a4-ce76da25c4cd
---
 wp-admin/includes/dashboard.php           | 49 +++++++++++++----------
 wp-admin/includes/default-list-tables.php |  4 +-
 wp-admin/includes/menu.php                |  4 ++
 wp-admin/includes/ms.php                  | 21 ++--------
 4 files changed, 36 insertions(+), 42 deletions(-)

diff --git a/wp-admin/includes/dashboard.php b/wp-admin/includes/dashboard.php
index a53130c860..1f0df7a761 100644
--- a/wp-admin/includes/dashboard.php
+++ b/wp-admin/includes/dashboard.php
@@ -25,42 +25,47 @@ function wp_dashboard_setup() {
 	/* Register Widgets and Controls */
 
 	// Right Now
-	wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
+	if ( is_blog_admin() && current_user_can('edit_posts') )
+		wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' );
 
 	// Recent Comments Widget
-	if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {
-		$update = true;
-		$widget_options['dashboard_recent_comments'] = array(
-			'items' => 5,
-		);
+	if ( is_blog_admin() && current_user_can('moderate_comments') ) {
+		if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) {
+			$update = true;
+			$widget_options['dashboard_recent_comments'] = array(
+				'items' => 5,
+			);
+		}
+		$recent_comments_title = __( 'Recent Comments' );
+		wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );
 	}
-	$recent_comments_title = __( 'Recent Comments' );
-	wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' );
 
 	// Incoming Links Widget
-	if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
-		$update = true;
-		$num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
-		$widget_options['dashboard_incoming_links'] = array(
-			'home' => get_option('home'),
-			'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
-			'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
-			'items' => $num_items,
-			'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
-		);
+	if ( is_blog_admin() && current_user_can('publish_posts') ) {
+		if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) {
+			$update = true;
+			$num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10;
+			$widget_options['dashboard_incoming_links'] = array(
+				'home' => get_option('home'),
+				'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+				'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ),
+				'items' => $num_items,
+				'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false
+			);
+		}
+		wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
 	}
-	wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' );
 
 	// WP Plugins Widget
-	if ( current_user_can( 'install_plugins' ) )
+	if ( is_blog_admin() && current_user_can( 'install_plugins' ) )
 		wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );
 
 	// QuickPress Widget
-	if ( current_user_can('edit_posts') )
+	if ( is_blog_admin() && current_user_can('edit_posts') )
 		wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );
 
 	// Recent Drafts
-	if ( current_user_can('edit_posts') )
+	if ( is_blog_admin() && current_user_can('edit_posts') )
 		wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' );
 
 	// Primary feed (Dev Blog) Widget
diff --git a/wp-admin/includes/default-list-tables.php b/wp-admin/includes/default-list-tables.php
index 62ffe9a243..6c1fc85f2a 100644
--- a/wp-admin/includes/default-list-tables.php
+++ b/wp-admin/includes/default-list-tables.php
@@ -3140,14 +3140,14 @@ class WP_MS_Users_Table extends WP_List_Table {
 						$edit_link = ( get_current_user_id() == $user->ID ) ? 'profile.php' : 'user-edit.php?user_id=' . $user->ID;
 						?>
 						<td class="username column-username">
-							<?php echo $avatar; ?><strong><a href="<?php echo esc_url( admin_url( $edit_link ) ); ?>" class="edit"><?php echo stripslashes( $user->user_login ); ?></a><?php
+							<?php echo $avatar; ?><strong><a href="<?php echo esc_url( self_admin_url( $edit_link ) ); ?>" class="edit"><?php echo stripslashes( $user->user_login ); ?></a><?php
 							if ( in_array( $user->user_login, $super_admins ) )
 								echo ' - ' . __( 'Super admin' );
 							?></strong>
 							<br/>
 							<?php
 								$actions = array();
-								$actions['edit'] = '<a href="' . esc_url( admin_url( $edit_link ) ) . '">' . __( 'Edit' ) . '</a>';
+								$actions['edit'] = '<a href="' . esc_url( self_admin_url( $edit_link ) ) . '">' . __( 'Edit' ) . '</a>';
 
 								if ( ! in_array( $user->user_login, $super_admins ) ) {
 									$actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'edit.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
diff --git a/wp-admin/includes/menu.php b/wp-admin/includes/menu.php
index 8222d1ae3e..84fc522734 100644
--- a/wp-admin/includes/menu.php
+++ b/wp-admin/includes/menu.php
@@ -9,6 +9,8 @@
 
 if ( is_network_admin() )
 	do_action('_network_admin_menu');
+elseif ( is_user_admin() )
+	do_action('_user_admin_menu');
 else
 	do_action('_admin_menu');
 
@@ -89,6 +91,8 @@ unset($id, $data, $subs, $first_sub, $old_parent, $new_parent);
 
 if ( is_network_admin() )
 	do_action('network_admin_menu', '');
+elseif ( is_user_admin() )
+	do_action('user_admin_menu', '');
 else
 	do_action('admin_menu', '');
 
diff --git a/wp-admin/includes/ms.php b/wp-admin/includes/ms.php
index 742a3cabc5..777989c8ec 100644
--- a/wp-admin/includes/ms.php
+++ b/wp-admin/includes/ms.php
@@ -502,29 +502,14 @@ function redirect_user_to_blog() {
 	$c ++;
 
 	$blog = get_active_blog_for_user( get_current_user_id() );
-	$dashboard_blog = get_dashboard_blog();
+
 	if ( is_object( $blog ) ) {
 		wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) ); // redirect and count to 5, "just in case"
 		exit;
+	} else {
+		wp_redirect( user_admin_url( '?c=' . $c ) ); // redirect and count to 5, "just in case"
 	}
 
-	/*
-	   If the user is a member of only 1 blog and the user's primary_blog isn't set to that blog,
-	   then update the primary_blog record to match the user's blog
-	 */
-	$blogs = get_blogs_of_user( get_current_user_id() );
-
-	if ( !empty( $blogs ) ) {
-		foreach( $blogs as $blogid => $blog ) {
-			if ( $blogid != $dashboard_blog->blog_id && get_user_meta( get_current_user_id() , 'primary_blog', true ) == $dashboard_blog->blog_id ) {
-				update_user_meta( get_current_user_id(), 'primary_blog', $blogid );
-				continue;
-			}
-		}
-		$blog = get_blog_details( get_user_meta( get_current_user_id(), 'primary_blog', true ) );
-			wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) );
-		exit;
-	}
 	wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
 }
 add_action( 'admin_page_access_denied', 'redirect_user_to_blog', 99 );