WordPress.org

Make WordPress Core

Changeset 15746


Ignore:
Timestamp:
10/07/10 19:34:18 (7 years ago)
Author:
ryan
Message:

First pass of user admin. Network admin and screen cleanups. see #14696

Location:
trunk
Files:
7 added
36 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin.php

    r15600 r15746  
    1212 * @since unknown 
    1313 */ 
    14 if ( !defined('WP_ADMIN') ) 
     14if ( ! defined('WP_ADMIN') ) 
    1515    define('WP_ADMIN', TRUE); 
    1616 
    17 if ( !defined('WP_NETWORK_ADMIN') ) { 
     17if ( ! defined('WP_NETWORK_ADMIN') ) 
    1818    define('WP_NETWORK_ADMIN', FALSE); 
     19 
     20if ( ! defined('WP_USER_ADMIN') ) 
     21    define('WP_USER_ADMIN', FALSE); 
     22 
     23if ( ! WP_NETWORK_ADMIN && ! WP_USER_ADMIN ) { 
    1924    define('WP_BLOG_ADMIN', TRUE); 
    2025} 
     
    98103if ( WP_NETWORK_ADMIN ) 
    99104    require(ABSPATH . 'wp-admin/network/menu.php'); 
     105elseif ( WP_USER_ADMIN ) 
     106    require(ABSPATH . 'wp-admin/user/menu.php'); 
    100107else 
    101108    require(ABSPATH . 'wp-admin/menu.php'); 
  • trunk/wp-admin/edit-comments.php

    r15666 r15746  
    106106    $title = __('Comments'); 
    107107 
     108add_screen_option( 'per_page', array('label' => _x( 'Comments', 'comments per page (screen options)' )) ); 
     109 
    108110add_contextual_help( $current_screen, '<p>' . __('You can manage comments made on your site similar to the way you manage Posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.') . '</p>' . 
    109111    '<p>' . __('A yellow row means the comment is waiting for you to moderate it.') . '</p>' . 
  • trunk/wp-admin/edit-form-advanced.php

    r15542 r15746  
    164164do_action('do_meta_boxes', $post_type, 'side', $post); 
    165165 
     166add_screen_option('layout_columns', array('max' => 2) ); 
     167 
    166168if ( 'post' == $post_type ) { 
    167169    add_contextual_help($current_screen, 
  • trunk/wp-admin/edit-link-form.php

    r15135 r15746  
    3737do_action('do_meta_boxes', 'link', 'advanced', $link); 
    3838do_action('do_meta_boxes', 'link', 'side', $link); 
     39 
     40add_screen_option('layout_columns', array('max' => 2) ); 
    3941 
    4042add_contextual_help($current_screen, 
  • trunk/wp-admin/edit-tags.php

    r15642 r15746  
    2222    $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; 
    2323} 
     24 
     25add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') ); 
    2426 
    2527switch ( $wp_list_table->current_action() ) { 
  • trunk/wp-admin/edit.php

    r15667 r15746  
    164164} 
    165165 
     166add_screen_option( 'per_page', array('label' => $title, 'default' => 20) ); 
     167 
    166168require_once('./admin-header.php'); 
    167169?> 
  • trunk/wp-admin/includes/dashboard.php

    r15718 r15746  
    1717    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks; 
    1818    $wp_dashboard_control_callbacks = array(); 
     19    $screen = get_current_screen(); 
    1920 
    2021    $update = false; 
     
    2627 
    2728    // Right Now 
    28     wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' ); 
     29    if ( is_blog_admin() && current_user_can('edit_posts') ) 
     30        wp_add_dashboard_widget( 'dashboard_right_now', __( 'Right Now' ), 'wp_dashboard_right_now' ); 
    2931 
    3032    // Recent Comments Widget 
    31     if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) { 
    32         $update = true; 
    33         $widget_options['dashboard_recent_comments'] = array( 
    34             'items' => 5, 
    35         ); 
    36     } 
    37     $recent_comments_title = __( 'Recent Comments' ); 
    38     wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' ); 
     33    if ( is_blog_admin() && current_user_can('moderate_comments') ) { 
     34        if ( !isset( $widget_options['dashboard_recent_comments'] ) || !isset( $widget_options['dashboard_recent_comments']['items'] ) ) { 
     35            $update = true; 
     36            $widget_options['dashboard_recent_comments'] = array( 
     37                'items' => 5, 
     38            ); 
     39        } 
     40        $recent_comments_title = __( 'Recent Comments' ); 
     41        wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' ); 
     42    } 
    3943 
    4044    // Incoming Links Widget 
    41     if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { 
    42         $update = true; 
    43         $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10; 
    44         $widget_options['dashboard_incoming_links'] = array( 
    45             'home' => get_option('home'), 
    46             'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), 
    47             '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') ) ), 
    48             'items' => $num_items, 
    49             'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false 
    50         ); 
    51     } 
    52     wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); 
     45    if ( is_blog_admin() && current_user_can('publish_posts') ) { 
     46        if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { 
     47            $update = true; 
     48            $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10; 
     49            $widget_options['dashboard_incoming_links'] = array( 
     50                'home' => get_option('home'), 
     51                'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), 
     52                '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') ) ), 
     53                'items' => $num_items, 
     54                'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false 
     55            ); 
     56        } 
     57        wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); 
     58    } 
    5359 
    5460    // WP Plugins Widget 
    55     if ( current_user_can( 'install_plugins' ) ) 
     61    if ( is_blog_admin() && current_user_can( 'install_plugins' ) ) 
    5662        wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' ); 
    5763 
    5864    // QuickPress Widget 
    59     if ( current_user_can('edit_posts') ) 
     65    if ( is_blog_admin() && current_user_can('edit_posts') ) 
    6066        wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' ); 
    6167 
    6268    // Recent Drafts 
    63     if ( current_user_can('edit_posts') ) 
     69    if ( is_blog_admin() && current_user_can('edit_posts') ) 
    6470        wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' ); 
    6571 
     
    116122        update_option( 'dashboard_widget_options', $widget_options ); 
    117123 
    118     do_action('do_meta_boxes', 'dashboard', 'normal', ''); 
    119     do_action('do_meta_boxes', 'dashboard', 'side', ''); 
     124    do_action('do_meta_boxes', $screen->id, 'normal', ''); 
     125    do_action('do_meta_boxes', $screen->id, 'side', ''); 
    120126} 
    121127 
    122128function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) { 
     129    $screen = get_current_screen(); 
    123130    global $wp_dashboard_control_callbacks; 
    124131    if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { 
     
    127134            list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); 
    128135            $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( $url ) . '">' . __( 'Cancel' ) . '</a></span>'; 
    129             add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', 'dashboard', 'normal', 'core' ); 
     136            add_meta_box( $widget_id, $widget_name, '_wp_dashboard_control_callback', $screen->id, 'normal', 'core' ); 
    130137            return; 
    131138        } 
     
    133140        $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url( "$url#$widget_id" ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>'; 
    134141    } 
    135     $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary'); 
     142    if ( is_user_admin() ) 
     143        $side_widgets = array(); 
     144    else 
     145        $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary'); 
    136146    $location = 'normal'; 
    137147    if ( in_array($widget_id, $side_widgets) ) 
    138148        $location = 'side'; 
    139     add_meta_box( $widget_id, $widget_name , $callback, 'dashboard', $location, 'core' ); 
     149    add_meta_box( $widget_id, $widget_name , $callback, $screen->id, $location, 'core' ); 
    140150} 
    141151 
     
    155165function wp_dashboard() { 
    156166    global $screen_layout_columns; 
     167 
     168    $screen = get_current_screen(); 
    157169 
    158170    $hide2 = $hide3 = $hide4 = ''; 
     
    177189<?php 
    178190    echo "\t<div class='postbox-container' style='$width'>\n"; 
    179     do_meta_boxes( 'dashboard', 'normal', '' ); 
     191    do_meta_boxes( $screen->id, 'normal', '' ); 
    180192 
    181193    echo "\t</div><div class='postbox-container' style='{$hide2}$width'>\n"; 
    182     do_meta_boxes( 'dashboard', 'side', '' ); 
     194    do_meta_boxes( $screen->id, 'side', '' ); 
    183195 
    184196    echo "\t</div><div class='postbox-container' style='{$hide3}$width'>\n"; 
    185     do_meta_boxes( 'dashboard', 'column3', '' ); 
     197    do_meta_boxes( $screen->id, 'column3', '' ); 
    186198 
    187199    echo "\t</div><div class='postbox-container' style='{$hide4}$width'>\n"; 
    188     do_meta_boxes( 'dashboard', 'column4', '' ); 
     200    do_meta_boxes( $screen->id, 'column4', '' ); 
    189201?> 
    190202</div></div> 
  • trunk/wp-admin/includes/default-list-tables.php

    r15742 r15746  
    27202720    function WP_Sites_Table() { 
    27212721        parent::WP_List_Table( array( 
    2722             'screen' => 'ms-sites', 
     2722            'screen' => 'sites-network', 
    27232723            'plural' => 'sites', 
    27242724        ) ); 
     
    27352735        $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode']; 
    27362736 
    2737         $per_page = $this->get_items_per_page( 'ms_sites_per_page' ); 
     2737        $per_page = $this->get_items_per_page( 'sites_network_per_page' ); 
    27382738 
    27392739        $pagenum = $this->get_pagenum(); 
     
    30083008    function WP_MS_Users_Table() { 
    30093009        parent::WP_List_Table( array( 
    3010             'screen' => 'ms-users', 
     3010            'screen' => 'users-network', 
    30113011        ) ); 
    30123012    } 
     
    30253025        $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; 
    30263026 
    3027         $users_per_page = $this->get_items_per_page( 'ms_users_per_page' ); 
     3027        $users_per_page = $this->get_items_per_page( 'users_network_per_page' ); 
    30283028 
    30293029        $paged = $this->get_pagenum(); 
  • trunk/wp-admin/includes/menu.php

    r15718 r15746  
    1010if ( is_network_admin() ) 
    1111    do_action('_network_admin_menu'); 
     12elseif ( is_user_admin() ) 
     13    do_action('_user_admin_menu'); 
    1214else 
    1315    do_action('_admin_menu'); 
     
    9092if ( is_network_admin() ) 
    9193    do_action('network_admin_menu', ''); 
     94elseif ( is_user_admin() ) 
     95    do_action('user_admin_menu', ''); 
    9296else 
    9397    do_action('admin_menu', ''); 
  • trunk/wp-admin/includes/misc.php

    r15491 r15746  
    344344        switch ( $map_option ) { 
    345345            case 'edit_per_page': 
    346             case 'ms_sites_per_page': 
     346            case 'sites_network_per_page': 
    347347            case 'users_per_page': 
    348             case 'ms_users_per_page': 
     348            case 'users_network_per_page': 
    349349            case 'edit_comments_per_page': 
    350350            case 'upload_per_page': 
  • trunk/wp-admin/includes/ms.php

    r15718 r15746  
    503503 
    504504    $blog = get_active_blog_for_user( get_current_user_id() ); 
    505     $dashboard_blog = get_dashboard_blog(); 
     505 
    506506    if ( is_object( $blog ) ) { 
    507507        wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) ); // redirect and count to 5, "just in case" 
    508508        exit; 
    509     } 
    510  
    511     /* 
    512        If the user is a member of only 1 blog and the user's primary_blog isn't set to that blog, 
    513        then update the primary_blog record to match the user's blog 
    514      */ 
    515     $blogs = get_blogs_of_user( get_current_user_id() ); 
    516  
    517     if ( !empty( $blogs ) ) { 
    518         foreach( $blogs as $blogid => $blog ) { 
    519             if ( $blogid != $dashboard_blog->blog_id && get_user_meta( get_current_user_id() , 'primary_blog', true ) == $dashboard_blog->blog_id ) { 
    520                 update_user_meta( get_current_user_id(), 'primary_blog', $blogid ); 
    521                 continue; 
    522             } 
    523         } 
    524         $blog = get_blog_details( get_user_meta( get_current_user_id(), 'primary_blog', true ) ); 
    525             wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) ); 
    526         exit; 
    527     } 
     509    } else { 
     510        wp_redirect( user_admin_url( '?c=' . $c ) ); // redirect and count to 5, "just in case" 
     511    } 
     512 
    528513    wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); 
    529514} 
  • trunk/wp-admin/includes/template.php

    r15664 r15746  
    13901390    if ( is_string($screen) ) 
    13911391        $screen = convert_to_screen($screen); 
     1392 
     1393    if ( $screen->is_user ) 
     1394        return; 
    13921395 
    13931396    if ( isset($screen->post_type) ) { 
     
    16361639 
    16371640function screen_meta($screen) { 
    1638     global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table; 
     1641    global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table, $wp_current_screen_options; 
    16391642 
    16401643    if ( is_string($screen) ) 
     
    16701673            break; 
    16711674    } 
    1672     if( ! empty( $settings ) ) 
     1675    if ( ! empty( $settings ) ) 
     1676        $show_screen = true; 
     1677 
     1678    if ( !empty($wp_current_screen_options) ) 
    16731679        $show_screen = true; 
    16741680 
     
    17971803 
    17981804function screen_layout($screen) { 
    1799     global $screen_layout_columns; 
     1805    global $screen_layout_columns, $wp_current_screen_options; 
    18001806 
    18011807    if ( is_string($screen) ) 
    18021808        $screen = convert_to_screen($screen); 
    18031809 
    1804     $columns = array('dashboard' => 4, 'link' => 2); 
    1805  
    1806     // Add custom post types 
    1807     foreach ( get_post_types( array('show_ui' => true) ) as $post_type ) 
    1808         $columns[$post_type] = 2; 
    1809  
    1810     $columns = apply_filters('screen_layout_columns', $columns, $screen->id, $screen); 
    1811  
    1812     if ( !isset($columns[$screen->id]) ) { 
     1810    // Back compat for plugins using the filter instead of add_screen_option() 
     1811    $columns = apply_filters('screen_layout_columns', array(), $screen->id, $screen); 
     1812    if ( !empty($columns) && isset($columns[$screen->id]) ) 
     1813        add_screen_option('layout_columns', array('max' => $columns[$screen->id]) ); 
     1814 
     1815    if ( !isset($wp_current_screen_options['layout_columns']) ) { 
    18131816        $screen_layout_columns = 0; 
    18141817        return ''; 
    1815     } 
     1818    } 
    18161819 
    18171820    $screen_layout_columns = get_user_option("screen_layout_$screen->id"); 
    1818     $num = $columns[$screen->id]; 
    1819  
    1820     if ( ! $screen_layout_columns ) 
     1821    $num = $wp_current_screen_options['layout_columns']['max']; 
     1822 
     1823    if ( ! $screen_layout_columns ) { 
     1824        if ( isset($wp_current_screen_options['layout_columns']['default']) ) 
     1825            $screen_layout_columns = $wp_current_screen_options['layout_columns']['default']; 
     1826        else 
    18211827            $screen_layout_columns = 2; 
     1828    } 
    18221829 
    18231830    $i = 1; 
     
    18311838} 
    18321839 
     1840/** 
     1841 * Register and configure an admin screen option 
     1842 * 
     1843 * @since 3.1.0 
     1844 * 
     1845 * @param string $option An option name. 
     1846 * @param mixed $args Option dependent arguments 
     1847 * @return void 
     1848 */ 
     1849function add_screen_option( $option, $args = array() ) { 
     1850    global $wp_current_screen_options; 
     1851 
     1852    if ( !isset($wp_current_screen_options) ) 
     1853        $wp_current_screen_options = array(); 
     1854 
     1855    $wp_current_screen_options[$option] = $args; 
     1856} 
     1857 
    18331858function screen_options($screen) { 
     1859    global $wp_current_screen_options; 
     1860 
    18341861    if ( is_string($screen) ) 
    18351862        $screen = convert_to_screen($screen); 
    18361863 
    1837     switch ( $screen->base ) { 
    1838         case 'edit': 
    1839         case 'edit-pages': 
    1840             $post_type = 'post'; 
    1841             if ( isset($_GET['post_type']) && in_array( $_GET['post_type'], get_post_types( array( 'show_ui' => true ) ) ) ) 
    1842                 $post_type = $_GET['post_type']; 
    1843             $post_type_object = get_post_type_object($post_type); 
    1844             $per_page_label = $post_type_object->labels->name; 
    1845             break; 
    1846         case 'ms-sites': 
    1847             $per_page_label = _x( 'Sites', 'sites per page (screen options)' ); 
    1848             break; 
    1849         case 'users': 
    1850         case 'ms-users': 
    1851             $per_page_label = _x( 'Users', 'users per page (screen options)' ); 
    1852             break; 
    1853         case 'edit-comments': 
    1854             $per_page_label = _x( 'Comments', 'comments per page (screen options)' ); 
    1855             break; 
    1856         case 'upload': 
    1857             $per_page_label = _x( 'Media items', 'items per page (screen options)' ); 
    1858             break; 
    1859         case 'edit-tags': 
    1860             global $tax; 
    1861             $per_page_label = $tax->labels->name; 
    1862             break; 
    1863         case 'plugins': 
    1864             $per_page_label = _x( 'Plugins', 'plugins per page (screen options)' ); 
    1865             break; 
    1866         default: 
    1867             return ''; 
    1868     } 
    1869  
    1870     $option = str_replace( '-', '_', "{$screen->id}_per_page" ); 
    1871     if ( 'edit_tags_per_page' == $option ) { 
    1872         if ( 'category' == $tax->name ) 
    1873             $option = 'categories_per_page'; 
    1874         elseif ( 'post_tag' != $tax->name ) 
    1875             $option = 'edit_' . $tax->name . '_per_page'; 
     1864    if ( !isset($wp_current_screen_options['per_page']) ) 
     1865        return ''; 
     1866 
     1867    $per_page_label = $wp_current_screen_options['per_page']['label']; 
     1868 
     1869    if ( empty($wp_current_screen_options['per_page']['option']) ) { 
     1870        $option = str_replace( '-', '_', "{$screen->id}_per_page" ); 
     1871    } else { 
     1872        $option = $wp_current_screen_options['per_page']['option']; 
    18761873    } 
    18771874 
    18781875    $per_page = (int) get_user_option( $option ); 
    18791876    if ( empty( $per_page ) || $per_page < 1 ) { 
    1880         if ( 'plugins' == $screen->id ) 
    1881             $per_page = 999; 
     1877        if ( isset($wp_current_screen_options['per_page']['default']) ) 
     1878            $per_page = $wp_current_screen_options['per_page']['default']; 
    18821879        else 
    18831880            $per_page = 20; 
     
    19961993    </script> 
    19971994<?php 
     1995} 
     1996 
     1997/** 
     1998 *  Get the current screen object 
     1999 * 
     2000 *  @since 3.1.0 
     2001 * 
     2002 * @return object Current screen object 
     2003 */ 
     2004function get_current_screen() { 
     2005    global $current_screen; 
     2006 
     2007    if ( !isset($current_screen) ) 
     2008        return null; 
     2009 
     2010    return $current_screen; 
    19982011} 
    19992012 
     
    20612074 
    20622075    $current_screen->is_network = is_network_admin() ? true : false; 
     2076    $current_screen->is_user = is_user_admin() ? true : false; 
     2077     
     2078    if ( $current_screen->is_network ) { 
     2079        $current_screen->base .= '-network'; 
     2080        $current_screen->id .= '-network'; 
     2081    } elseif ( $current_screen->is_user ) { 
     2082        $current_screen->base .= '-user'; 
     2083        $current_screen->id .= '-user'; 
     2084    } 
    20632085 
    20642086    $current_screen = apply_filters('current_screen', $current_screen); 
  • trunk/wp-admin/index-extra.php

    r14924 r15746  
    1111 
    1212/** Load WordPress Administration Dashboard API */ 
    13 require( './includes/dashboard.php' ); 
     13require(ABSPATH . 'wp-admin/includes/dashboard.php' ); 
    1414 
    1515@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); 
  • trunk/wp-admin/index.php

    r15132 r15746  
    2525$parent_file = 'index.php'; 
    2626 
     27if ( is_user_admin() ) 
     28    add_screen_option('layout_columns', array('max' => 4, 'default' => 1) ); 
     29else 
     30    add_screen_option('layout_columns', array('max' => 4, 'default' => 2) ); 
     31 
    2732add_contextual_help($current_screen, 
    2833 
     
    4348); 
    4449 
    45 require_once('./admin-header.php'); 
     50include (ABSPATH . 'wp-admin/admin-header.php'); 
    4651 
    4752$today = current_time('mysql', 1); 
  • trunk/wp-admin/js/dashboard.dev.js

    r14815 r15746  
    4343    ajaxPopulateWidgets(); 
    4444 
    45     postboxes.add_postbox_toggles('dashboard', { pbshow: ajaxPopulateWidgets } ); 
     45    postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } ); 
    4646 
    4747    /* QuickPress */ 
  • trunk/wp-admin/js/dashboard.js

    r14815 r15746  
    1 var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins","dashboard_quick_press"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}if("dashboard_quick_press"==g&&a.isFunction(tb_init)){tb_init("#dashboard_quick_press a.thickbox");quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles("dashboard",{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})}}); 
     1var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins","dashboard_quick_press"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}if("dashboard_quick_press"==g&&a.isFunction(tb_init)){tb_init("#dashboard_quick_press a.thickbox");quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})}}); 
  • trunk/wp-admin/menu.php

    r15556 r15746  
    233233    ); 
    234234 
    235 require(ABSPATH . 'wp-admin/includes/menu.php'); 
     235require_once(ABSPATH . 'wp-admin/includes/menu.php'); 
    236236 
    237237?> 
  • trunk/wp-admin/network/edit.php

    r15669 r15746  
    5353                        $user_list = ''; 
    5454                        foreach ( $blog_users as $user ) { 
    55                             if ( $user->user_id != $val && !in_array( $user->user_id, $allusers ) ) 
    56                                 $user_list .= "<option value='{$user->user_id}'>{$user->user_login}</option>"; 
     55                            if ( $user->user_id != $val && !in_array( $user->id, $allusers ) ) 
     56                                $user_list .= "<option value='{$user->id}'>{$user->user_login}</option>"; 
    5757                        } 
    5858                        if ( '' == $user_list ) 
     
    138138            update_site_option( 'banned_email_domains', '' ); 
    139139        } 
    140         update_site_option( 'default_user_role', $_POST['default_user_role'] ); 
    141         if ( trim( $_POST['dashboard_blog_orig'] ) == '' ) 
    142             $_POST['dashboard_blog_orig'] = $current_site->blog_id; 
    143         if ( trim( $_POST['dashboard_blog'] ) == '' ) { 
    144             $_POST['dashboard_blog'] = $current_site->blog_id; 
    145             $dashboard_blog_id = $current_site->blog_id; 
    146         } elseif ( ! preg_match( '/(--|\.)/', $_POST['dashboard_blog'] ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $_POST['dashboard_blog'] ) ) { 
    147             $dashboard_blog = $_POST['dashboard_blog']; 
    148             $blog_details = get_blog_details( $dashboard_blog ); 
    149             if ( false === $blog_details ) { 
    150                 if ( is_numeric( $dashboard_blog ) ) 
    151                     wp_die( __( 'A dashboard site referenced by ID must already exist' ) ); 
    152                 if ( is_subdomain_install() ) { 
    153                     $domain = $dashboard_blog . '.' . $current_site->domain; 
    154                     $path = $current_site->path; 
    155                 } else { 
    156                     $domain = $current_site->domain; 
    157                     $path = trailingslashit( $current_site->path . $dashboard_blog ); 
    158                 } 
    159                 $wpdb->hide_errors(); 
    160                 $dashboard_blog_id = wpmu_create_blog( $domain, $path, __( 'My Dashboard' ), $current_user->id , array( 'public' => 0 ), $current_site->id ); 
    161                 $wpdb->show_errors(); 
    162             } else { 
    163                 $dashboard_blog_id = $blog_details->blog_id; 
    164             } 
    165         } 
    166         if ( is_wp_error( $dashboard_blog_id ) ) 
    167             wp_die( __( 'Problem creating dashboard site: ' ) . $dashboard_blog_id->get_error_message() ); 
    168         if ( $_POST['dashboard_blog_orig'] != $_POST['dashboard_blog'] ) { 
    169             $users = get_users_of_blog( get_site_option( 'dashboard_blog' ) ); 
    170             $move_users = array(); 
    171             foreach ( (array)$users as $user ) { 
    172                 $user_meta_value = unserialize( $user->meta_value ); 
    173                 if ( is_array( $user_meta_value ) && array_pop( $var_by_ref = array_keys( $user_meta_value ) ) == 'subscriber' ) 
    174                     $move_users[] = $user->user_id; 
    175             } 
    176             if ( false == empty( $move_users ) ) { 
    177                 foreach ( (array)$move_users as $user_id ) { 
    178                     remove_user_from_blog($user_id, get_site_option( 'dashboard_blog' ) ); 
    179                     add_user_to_blog( $dashboard_blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) ); 
    180                     update_user_meta( $user_id, 'primary_blog', $dashboard_blog_id ); 
    181                 } 
    182             } 
    183         } 
    184         update_site_option( 'dashboard_blog', $dashboard_blog_id ); 
    185  
    186         $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'admin_notice_feed', 'global_terms_enabled' ); 
     140 
     141        $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled' ); 
    187142        $checked_options = array( 'mu_media_buttons' => array(), 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 ); 
    188143        foreach ( $checked_options as $option_name => $option_unchecked_value ) { 
     
    256211        $wpdb->show_errors(); 
    257212        if ( !is_wp_error( $id ) ) { 
    258             $dashboard_blog = get_dashboard_blog(); 
    259             if ( !is_super_admin( $user_id ) && get_user_option( 'primary_blog', $user_id ) == $dashboard_blog->blog_id ) 
     213            if ( !is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) ) 
    260214                update_user_option( $user_id, 'primary_blog', $id, true ); 
    261215            $content_mail = sprintf( __( "New site created by %1s\n\nAddress: http://%2s\nName: %3s"), $current_user->user_login , $newdomain . $path, stripslashes( $title ) ); 
     
    688642            wp_new_user_notification( $user_id, $password ); 
    689643 
    690         if ( get_site_option( 'dashboard_blog' ) == false ) 
    691             add_user_to_blog( $current_site->blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) ); 
    692         else 
    693             add_user_to_blog( get_site_option( 'dashboard_blog' ), $user_id, get_site_option( 'default_user_role', 'subscriber' ) ); 
    694  
    695644        wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'add' ), wp_get_referer() ) ); 
    696645        exit(); 
  • trunk/wp-admin/network/settings.php

    r15481 r15746  
    4444 
    4545<div class="wrap"> 
    46     <?php screen_icon(); ?> 
     46    <?php screen_icon('options-general'); ?> 
    4747    <h2><?php _e( 'Network Options' ) ?></h2> 
    4848    <form method="post" action="edit.php?action=siteoptions"> 
     
    6666                    <?php printf( __( 'Registration and support emails will come from this address. An address such as <code>support@%s</code> is recommended.' ), $current_site->domain ); ?> 
    6767                </td> 
    68             </tr> 
    69         </table> 
    70         <h3><?php _e( 'Dashboard Settings' ); ?></h3> 
    71         <table class="form-table"> 
    72             <tr valign="top"> 
    73                 <th scope="row"><label for="dashboard_blog"><?php _e( 'Dashboard Site' ) ?></label></th> 
    74                 <td> 
    75                     <?php 
    76                     if ( $dashboard_blog = get_site_option( 'dashboard_blog' ) ) { 
    77                         $details = get_blog_details( $dashboard_blog ); 
    78                         $blogname = untrailingslashit( sanitize_user( str_replace( '.', '', str_replace( $current_site->domain . $current_site->path, '', $details->domain . $details->path ) ) ) ); 
    79                     } else { 
    80                         $blogname = ''; 
    81                     }?> 
    82                     <input name="dashboard_blog_orig" type="hidden" id="dashboard_blog_orig" value="<?php echo esc_attr( $blogname ); ?>" /> 
    83                     <input name="dashboard_blog" type="text" id="dashboard_blog" value="<?php echo esc_attr( $blogname ); ?>" class="regular-text" /> 
    84                     <br /> 
    85                     <?php _e( 'Site path (&#8220;dashboard&#8221;, &#8220;control&#8221;, &#8220;manager&#8221;, etc.) or blog ID.<br />New users are added to this site as the user role defined below if they don&#8217;t have a site. Leave blank for the main site. Users with the Subscriber role on the old site will be moved to the new site if changed. The new site will be created if it does not exist.' ); ?> 
    86                 </td> 
    87             </tr> 
    88             <tr valign="top"> 
    89                 <th scope="row"><label for="default_user_role"><?php _e( 'Dashboard User Default Role' ) ?></label></th> 
    90                 <td> 
    91                     <select name="default_user_role" id="default_user_role"><?php 
    92                     wp_dropdown_roles( get_site_option( 'default_user_role', 'subscriber' ) ); 
    93                     ?> 
    94                     </select> 
    95                     <br /> 
    96                     <?php _e( 'The default role for new users on the Dashboard site. &#8220;Subscriber&#8221; or &#8220;Contributor&#8221; roles are recommended.' ); ?> 
    97                 </td> 
    98             </tr> 
    99             <tr valign="top"> 
    100                 <th scope="row"><label for="admin_notice_feed"><?php _e( 'Admin Notice Feed' ) ?></label></th> 
    101                 <td><input name="admin_notice_feed" class="large-text" type="text" id="admin_notice_feed" value="<?php echo esc_attr( get_site_option( 'admin_notice_feed' ) ) ?>" size="80" /><br /> 
    102                 <?php _e( 'Display the latest post from this RSS or Atom feed on all site dashboards. Leave blank to disable.' ); ?><br /> 
    103  
    104                 <?php if ( get_site_option( 'admin_notice_feed' ) != get_home_url( $current_site->id, 'feed/' ) ) 
    105                     echo __( 'A good one to use would be the feed from your main site: ' ) . esc_url( get_home_url( $current_site->id, 'feed/' ) ) ?></td> 
    10668            </tr> 
    10769        </table> 
  • trunk/wp-admin/network/sites.php

    r15673 r15746  
    1818$title = __( 'Sites' ); 
    1919$parent_file = 'sites.php'; 
     20 
     21add_screen_option( 'per_page', array('label' => _x( 'Sites', 'sites per page (screen options)' )) ); 
    2022 
    2123if ( isset( $_REQUEST['action'] ) && 'editblog' == $_REQUEST['action'] ) { 
     
    110112        ?> 
    111113        <div class="wrap"> 
    112         <?php screen_icon(); ?> 
     114        <?php screen_icon('index'); ?> 
    113115        <h2><?php _e( 'Edit Site' ); ?> - <a href="<?php echo esc_url( get_home_url( $id ) ); ?>"><?php echo esc_url( get_home_url( $id ) ); ?></a></h2> 
    114116        <?php echo $msg; ?> 
     
    348350 
    349351        <div class="wrap"> 
    350         <?php screen_icon(); ?> 
     352        <?php screen_icon('index'); ?> 
    351353        <h2><?php _e('Sites') ?> 
    352354        <?php echo $msg; ?> 
  • trunk/wp-admin/network/upgrade.php

    r15484 r15746  
    3333 
    3434echo '<div class="wrap">'; 
    35 screen_icon(); 
     35screen_icon('tools'); 
    3636echo '<h2>' . __( 'Update Network' ) . '</h2>'; 
    3737 
  • trunk/wp-admin/network/users.php

    r15603 r15746  
    1616$title = __( 'Users' ); 
    1717$parent_file = 'users.php'; 
     18 
     19add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); 
    1820 
    1921add_contextual_help($current_screen, 
  • trunk/wp-admin/plugins.php

    r15697 r15746  
    291291add_thickbox(); 
    292292 
     293add_screen_option( 'per_page', array('label' => _x( 'Plugins', 'plugins per page (screen options)' ), 'default' => 999) ); 
     294 
    293295add_contextual_help($current_screen, 
    294296    '<p>' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '</p>' . 
  • trunk/wp-admin/upload.php

    r15642 r15746  
    134134wp_enqueue_script( 'jquery-ui-draggable' ); 
    135135wp_enqueue_script( 'media' ); 
     136 
     137add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) ); 
    136138 
    137139add_contextual_help( $current_screen, 
  • trunk/wp-admin/user-edit.php

    r15481 r15746  
    3232else 
    3333    $submenu_file = 'profile.php'; 
    34 $parent_file = 'users.php'; 
     34 
     35if ( current_user_can('edit_users') && !is_user_admin() ) 
     36    $parent_file = 'users.php'; 
     37else 
     38    $parent_file = 'profile.php'; 
    3539 
    3640// contextual help - choose Help on the top right of admin panel to preview this. 
  • trunk/wp-admin/users.php

    r15642 r15746  
    1818$title = __('Users'); 
    1919$parent_file = 'users.php'; 
     20 
     21add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); 
    2022 
    2123// contextual help - choose Help on the top right of admin panel to preview this. 
  • trunk/wp-includes/admin-bar.php

    r15696 r15746  
    110110    if ( !is_object( $wp_admin_bar ) ) 
    111111        return false; 
    112  
    113     /* Remove the global dashboard */ 
    114     if ( is_multisite() ) { 
    115         foreach ( (array) $wp_admin_bar->user->blogs as $key => $blog ) { 
    116             if ( get_dashboard_blog() == $blog->domain ) 
    117                 unset( $wp_admin_bar->user->blogs[$key] ); 
    118         } 
    119     } 
    120112 
    121113    /* Add the 'My Dashboards' menu if the user has more than one blog. */ 
  • trunk/wp-includes/admin-bar/admin-bar-class.php

    r15671 r15746  
    1616        if ( is_multisite() ) { 
    1717            $this->user->active_blog = get_active_blog_for_user( $current_user->id ); 
    18             $this->user->domain = ( $this->user->active_blog == 'username only' ) ? get_dashboard_blog() : trailingslashit( get_home_url( $this->user->active_blog->blog_id ) ); 
     18            $this->user->domain = empty( $this->user->active_blog ) ? user_admin_url() : trailingslashit( get_home_url( $this->user->active_blog->blog_id ) ); 
    1919            $this->user->account_domain = $this->user->domain; 
    2020        } else { 
  • trunk/wp-includes/capabilities.php

    r15640 r15746  
    738738        // Must have ALL requested caps 
    739739        $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args ); 
     740        $capabilities['exist'] = true; // Everyone is allowed to exist 
    740741        foreach ( (array) $caps as $cap ) { 
    741742            //echo "Checking cap $cap<br />"; 
  • trunk/wp-includes/functions.php

    r15723 r15746  
    448448        $site_id = $wpdb->siteid; 
    449449 
    450     $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'dashboard_blog', 'can_compress_scripts', 'global_terms_enabled' ); 
     450    $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled' ); 
    451451 
    452452    $core_options_in = "'" . implode("', '", $core_options) . "'"; 
  • trunk/wp-includes/link-template.php

    r15701 r15746  
    21312131 
    21322132/** 
     2133 * Retrieve the url to the admin area for the current user. 
     2134 * 
     2135 * @package WordPress 
     2136 * @since 3.0.0 
     2137 * 
     2138 * @param string $path Optional path relative to the admin url 
     2139 * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes. 
     2140 * @return string Admin url link with optional path appended 
     2141*/ 
     2142function user_admin_url( $path = '', $scheme = 'admin' ) { 
     2143    $url = network_site_url('wp-admin/user/', $scheme); 
     2144 
     2145    if ( !empty($path) && is_string($path) && strpos($path, '..') === false ) 
     2146        $url .= ltrim($path, '/'); 
     2147 
     2148    return apply_filters('user_admin_url', $url, $path); 
     2149} 
     2150 
     2151/** 
    21332152 * Retrieve the url to the admin area for either the current blog or the network depending on context. 
    21342153 * 
     
    21432162    if ( is_network_admin() ) 
    21442163        return network_admin_url($path, $scheme); 
     2164    elseif ( is_user_admin() ) 
     2165        return user_admin_url($path, $scheme); 
    21452166    else 
    21462167        return admin_url($path, $scheme); 
  • trunk/wp-includes/load.php

    r15680 r15746  
    622622 
    623623/** 
     624 * Whether the current request is for a user admin screen /wp-admin/user/ 
     625 * 
     626 * Does not inform on whether the user is an admin! Use capability checks to 
     627 * tell if the user should be accessing a section or not. 
     628 * 
     629 * @since 3.1.0 
     630 * 
     631 * @return bool True if inside WordPress user administration pages. 
     632 */ 
     633function is_user_admin() { 
     634    if ( defined( 'WP_USER_ADMIN' ) ) 
     635        return WP_USER_ADMIN; 
     636    return false; 
     637} 
     638 
     639/** 
    624640 * Whether Multisite support is enabled 
    625641 * 
  • trunk/wp-includes/ms-functions.php

    r15678 r15746  
    6060 * @since MU 1.0 
    6161 * @uses get_blogs_of_user() 
    62  * @uses get_dashboard_blog() 
    6362 * @uses add_user_to_blog() 
    6463 * @uses update_user_meta() 
     
    7372    global $wpdb; 
    7473    $blogs = get_blogs_of_user( $user_id ); 
    75     if ( empty( $blogs ) ) { 
    76         $details = get_dashboard_blog(); 
    77         add_user_to_blog( $details->blog_id, $user_id, 'subscriber' ); 
    78         update_user_meta( $user_id, 'primary_blog', $details->blog_id ); 
    79         wp_cache_delete( $user_id, 'users' ); 
    80         return $details; 
    81     } 
     74    if ( empty( $blogs ) ) 
     75        return null; 
     76 
     77    if ( !is_multisite() ) 
     78        return $blogs[$wpdb->blogid]; 
    8279 
    8380    $primary_blog = get_user_meta( $user_id, 'primary_blog', true ); 
    84     $details = get_dashboard_blog(); 
     81    $first_blog = current($blogs); 
    8582    if ( $primary_blog ) { 
    86         if ( isset( $blogs[ $primary_blog ] ) == false ) { 
    87             add_user_to_blog( $details->blog_id, $user_id, 'subscriber' ); 
    88             update_user_meta( $user_id, 'primary_blog', $details->blog_id ); 
    89             wp_cache_delete( $user_id, 'users' ); 
     83        if ( ! isset( $blogs[ $primary_blog ] ) ) { 
     84            add_user_to_blog( $first_blog->blog_id, $user_id, 'subscriber' ); 
     85            update_user_meta( $user_id, 'primary_blog', $first_blog->blog_id ); 
     86            $primary = $first_blog; 
    9087        } else { 
    91             $details = get_blog_details( $primary_blog ); 
     88            $primary = get_blog_details( $primary_blog ); 
    9289        } 
    9390    } else { 
    94         add_user_to_blog( $details->blog_id, $user_id, 'subscriber' ); // Add subscriber permission for dashboard blog 
    95         update_user_meta( $user_id, 'primary_blog', $details->blog_id ); 
    96     } 
    97  
    98     if ( ( is_object( $details ) == false ) || ( is_object( $details ) && $details->archived == 1 || $details->spam == 1 || $details->deleted == 1 ) ) { 
     91        add_user_to_blog( $first_blog->blog_id, $user_id, 'subscriber' ); 
     92        update_user_meta( $user_id, 'primary_blog', $first_blog->blog_id ); 
     93        $primary = $first_blog; 
     94    } 
     95 
     96    if ( ( ! is_object( $primary ) ) || ( is_object( $primary ) && $primary->archived == 1 || $primary->spam == 1 || $primary->deleted == 1 ) ) { 
    9997        $blogs = get_blogs_of_user( $user_id, true ); // if a user's primary blog is shut down, check their other blogs. 
    10098        $ret = false; 
     
    106104                if ( is_object( $details ) && $details->archived == 0 && $details->spam == 0 && $details->deleted == 0 ) { 
    107105                    $ret = $blog; 
    108                     $changed = false; 
    109                     if ( get_user_meta( $user_id , 'primary_blog', true ) != $blog_id ) { 
     106                    if ( get_user_meta( $user_id , 'primary_blog', true ) != $blog_id ) 
    110107                        update_user_meta( $user_id, 'primary_blog', $blog_id ); 
    111                         $changed = true; 
    112                     } 
    113                     if ( !get_user_meta($user_id , 'source_domain', true) ) { 
     108                    if ( !get_user_meta($user_id , 'source_domain', true) ) 
    114109                        update_user_meta( $user_id, 'source_domain', $blog->domain ); 
    115                         $changed = true; 
    116                     } 
    117                     if ( $changed ) 
    118                         wp_cache_delete( $user_id, 'users' ); 
    119110                    break; 
    120111                } 
    121112            } 
    122113        } else { 
    123             // Should never get here 
    124             $dashboard_blog = get_dashboard_blog(); 
    125             add_user_to_blog( $dashboard_blog->blog_id, $user_id, 'subscriber' ); // Add subscriber permission for dashboard blog 
    126             update_user_meta( $user_id, 'primary_blog', $dashboard_blog->blog_id ); 
    127             return $dashboard_blog; 
     114            return null; 
    128115        } 
    129116        return $ret; 
    130117    } else { 
    131         return $details; 
     118        return $primary; 
    132119    } 
    133120} 
     
    841828 
    842829        wpmu_welcome_user_notification($user_id, $password, $meta); 
    843         $user_site = get_site_option( 'dashboard_blog', $current_site->blog_id ); 
    844  
    845         if ( $user_site == false ) 
    846             add_user_to_blog( '1', $user_id, get_site_option( 'default_user_role', 'subscriber' ) ); 
    847         else 
    848             add_user_to_blog( $user_site, $user_id, get_site_option( 'default_user_role', 'subscriber' ) ); 
    849830 
    850831        add_new_user_to_blog( $user_id, $user_email, $meta ); 
     
    927908    update_option( 'blog_public', (int)$meta['public'] ); 
    928909 
    929     if ( !is_super_admin() && get_user_meta( $user_id, 'primary_blog', true ) == get_site_option( 'dashboard_blog', 1 ) ) 
     910    if ( !is_super_admin() && ! get_user_meta( $user_id, 'primary_blog', true ) ) 
    930911        update_user_meta( $user_id, 'primary_blog', $blog_id ); 
    931912 
     
    14611442add_action('update_option_blog_public', 'update_blog_public', 10, 2); 
    14621443 
    1463 /* Redirect all hits to "dashboard" blog to wp-admin/ Dashboard. */ 
    1464 function redirect_mu_dashboard() { 
    1465     global $current_site, $current_blog; 
    1466  
    1467     $dashboard_blog = get_dashboard_blog(); 
    1468     if ( $current_blog->blog_id == $dashboard_blog->blog_id && $dashboard_blog->blog_id != $current_site->blog_id ) { 
    1469         $protocol = ( is_ssl() ? 'https://' : 'http://' ); 
    1470         wp_redirect( $protocol . $dashboard_blog->domain . trailingslashit( $dashboard_blog->path ) . 'wp-admin/' ); 
    1471         die(); 
    1472     } 
    1473 } 
    1474 add_action( 'template_redirect', 'redirect_mu_dashboard' ); 
    1475  
    14761444function get_dashboard_blog() { 
    14771445    if ( $blog = get_site_option( 'dashboard_blog' ) ) 
  • trunk/wp-includes/pluggable.php

    r15682 r15746  
    8282 
    8383    if ( ! $user = wp_validate_auth_cookie() ) { 
    84          if ( is_admin() || empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) { 
     84         if ( is_blog_admin() || is_network_admin() || empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) { 
    8585            wp_set_current_user(0); 
    8686            return false; 
     
    776776    } 
    777777 
    778     if ( $user_id = wp_validate_auth_cookie( '', apply_filters( 'auth_redirect_scheme', '' ) ) ) { 
     778    if ( is_user_admin() ) 
     779        $scheme = 'logged_in'; 
     780    else 
     781        $scheme = apply_filters( 'auth_redirect_scheme', '' ); 
     782 
     783    if ( $user_id = wp_validate_auth_cookie( '',  $scheme) ) { 
    779784        do_action('auth_redirect', $user_id); 
    780785 
  • trunk/wp-includes/vars.php

    r13132 r15746  
    1616if ( is_admin() ) { 
    1717    // wp-admin pages are checked more carefully 
    18     preg_match('#/wp-admin/?(.*?)$#i', $PHP_SELF, $self_matches); 
     18    if ( is_network_admin() ) 
     19        preg_match('#/wp-admin/network/?(.*?)$#i', $PHP_SELF, $self_matches); 
     20    elseif ( is_user_admin() ) 
     21        preg_match('#/wp-admin/user/?(.*?)$#i', $PHP_SELF, $self_matches); 
     22    else 
     23        preg_match('#/wp-admin/?(.*?)$#i', $PHP_SELF, $self_matches); 
    1924    $pagenow = $self_matches[1]; 
    2025    $pagenow = trim($pagenow, '/'); 
  • trunk/wp-login.php

    r15735 r15746  
    573573<?php       exit; 
    574574        } 
    575         // If the user can't edit posts, send them to their profile. 
    576         if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) ) 
     575 
     576        // If the user doesn't belong to a blog, send them to user admin. If the user can't edit posts, send them to their profile. 
     577        if ( is_multisite() && !get_active_blog_for_user($user->id) ) 
     578            $redirect_to = user_admin_url(); 
     579        elseif ( !is_multisite() && !$user->has_cap('read') ) 
     580            $redirect_to = user_admin_url(); 
     581        elseif ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) ) 
    577582            $redirect_to = admin_url('profile.php'); 
    578583        wp_safe_redirect($redirect_to); 
Note: See TracChangeset for help on using the changeset viewer.