Make WordPress Core

Changeset 15496


Ignore:
Timestamp:
08/12/2010 11:21:05 PM (16 years ago)
Author:
scribu
Message:

Introduce WP_List_Table::check_permissions() and WP_List_Table::prepare_items(). Fixes #14596; See #14579

Location:
trunk
Files:
16 edited

Legend:

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

    r15493 r15496  
    559559
    560560        require_once( './includes/default-list-tables.php' );
    561         $table = new WP_Terms_Table( 'ajax' );
     561        $table = new WP_Terms_Table();
    562562
    563563        $level = 0;
    … …  
    627627
    628628        require_once( './includes/default-list-tables.php' );
    629         $table = new WP_Comments_Table( 'ajax' );
     629        $table = new WP_Comments_Table();
    630630
    631631        global $comments;
    … …  
    660660
    661661        require_once( './includes/default-list-tables.php' );
    662         $table = new WP_Comments_Table( 'ajax' );
     662        $table = new WP_Comments_Table();
    663663
    664664        global $comments;
    … …  
    686686
    687687        require_once( './includes/default-list-tables.php' );
    688         $table = new WP_Comments_Table( 'ajax' );
     688        $table = new WP_Comments_Table();
    689689
    690690        $comment_post_ID = (int) $_POST['comment_post_ID'];
    … …  
    777777
    778778        require_once( './includes/default-list-tables.php' );
    779         $table = new WP_Comments_Table( 'ajax' );
     779        $table = new WP_Comments_Table();
    780780
    781781        ob_start();
    … …  
    926926
    927927        require_once( './includes/default-list-tables.php' );
    928         $table = new WP_Users_Table( 'ajax' );
     928        $table = new WP_Users_Table();
    929929
    930930        $x = new WP_Ajax_Response( array(
    … …  
    12191219
    12201220        require_once( './includes/default-list-tables.php' );
    1221         $table = new WP_Posts_Table( 'ajax' );
     1221        $table = new WP_Posts_Table();
    12221222
    12231223        $mode = $_POST['post_view'];
    … …  
    12291229        check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' );
    12301230
    1231         $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : false;
    1232         if ( ! $taxonomy )
    1233                 die( __('Cheatin’ uh?') );
    1234         $tax = get_taxonomy($taxonomy);
    1235 
    1236         if ( ! current_user_can( $tax->cap->edit_terms ) )
    1237                 die( __('Cheatin’ uh?') );
     1231        require_once( './includes/default-list-tables.php' );
     1232        $table = new WP_Terms_Table();
     1233
     1234        $table->check_permissions('edit');
    12381235
    12391236        if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
    12401237                die(-1);
    1241 
    1242         $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
    12431238
    12441239        $tag = get_term( $id, $taxonomy );
    … …  
    12531248                        die( __('Item not updated.') );
    12541249                }
    1255 
    1256                 set_current_screen( 'edit-' . $taxonomy );
    1257 
    1258                 require_once( './includes/default-list-tables.php' );
    1259                 $table = new WP_Terms_Table( 'ajax' );
    12601250
    12611251                echo $table->single_row( $tag, 0, $taxonomy );
  • trunk/wp-admin/edit-comments.php

    r15491 r15496  
    1010require_once('./admin.php');
    1111
    12 if ( !current_user_can('edit_posts') )
    13         wp_die(__('Cheatin’ uh?'));
     12require_once( './includes/default-list-tables.php' );
     13
     14$table = new WP_Comments_Table;
     15$table->check_permissions();
    1416
    1517if ( isset( $_REQUEST['doaction'] ) ||  isset( $_REQUEST['doaction2'] ) || isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) {
    … …  
    9698}
    9799
    98 require_once( './includes/default-list-tables.php' );
    99 
    100 $table = new WP_Comments_Table;
     100$table->prepare_items();
    101101
    102102wp_enqueue_script('admin-comments');
  • trunk/wp-admin/edit-tags.php

    r15491 r15496  
    1313
    1414$table = new WP_Terms_Table;
     15$table->check_permissions();
    1516
    1617$title = $tax->labels->name;
    … …  
    151152         exit;
    152153}
     154
     155$table->prepare_items();
    153156
    154157wp_enqueue_script('admin-tags');
  • trunk/wp-admin/edit.php

    r15491 r15496  
    1313
    1414$table = new WP_Posts_Table;
     15$table->check_permissions();
    1516
    1617// Back-compat for viewing comments of an entry
    … …  
    118119        $post_new_file = 'post-new.php';
    119120}
     121
     122$table->prepare_items();
    120123
    121124wp_enqueue_script('inline-edit-post');
  • trunk/wp-admin/includes/default-list-tables.php

    r15491 r15496  
    2323        var $_hierarchical_display;
    2424
    25         function WP_Posts_Table( $context = 'normal' ) {
    26                 global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode, $current_screen;
     25        function WP_Posts_Table() {
     26                global $post_type_object, $post_type, $current_screen;
    2727
    2828                if ( !isset( $_REQUEST['post_type'] ) )
    … …  
    3636                $post_type_object = get_post_type_object( $post_type );
    3737
    38                 if ( !current_user_can( $post_type_object->cap->edit_posts ) )
    39                         wp_die( __( 'Cheatin’ uh?' ) );
    40 
    4138                parent::WP_List_Table( array(
    4239                        'screen' => $current_screen,
    4340                        'plural' => 'posts',
    4441                ) );
    45 
    46                 if ( 'normal' != $context )
    47                         return;
     42        }
     43
     44        function check_permissions() {
     45                global $post_type_object;
     46
     47                if ( !current_user_can( $post_type_object->cap->edit_posts ) )
     48                        wp_die( __( 'Cheatin’ uh?' ) );
     49        }
     50
     51        function prepare_items() {
     52                global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode;
    4853
    4954                $avail_post_stati = wp_edit_posts_query();
    … …  
    10731078class WP_Media_Table extends WP_List_Table {
    10741079
    1075         function WP_Media_Table( $context = 'normal' ) {
    1076                 global $wpdb, $wp_query, $detached, $post_mime_types, $avail_post_mime_types;
    1077 
    1078                 if ( isset( $_REQUEST['find_detached'] ) ) {
    1079                         if ( !current_user_can( 'edit_posts' ) )
    1080                                 wp_die( __( 'You are not allowed to scan for lost attachments.' ) );
    1081 
    1082                         $lost = $wpdb->get_col( "
    1083                                 SELECT ID FROM $wpdb->posts
    1084                                 WHERE post_type = 'attachment' AND post_parent > '0'
    1085                                 AND post_parent NOT IN (
    1086                                         SELECT ID FROM $wpdb->posts
    1087                                         WHERE post_type NOT IN ( 'attachment', '" . join( "', '", get_post_types( array( 'public' => false ) ) ) . "' )
    1088                                 )
    1089                         " );
    1090 
    1091                         $_REQUEST['detached'] = 1;
    1092                 }
    1093 
    1094                 $detached = isset( $_REQUEST['detached'] );
     1080        function WP_Media_Table() {
     1081                global $detached;
     1082
     1083                $detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );
    10951084
    10961085                parent::WP_List_Table( array(
    … …  
    10981087                        'plural' => 'media'
    10991088                ) );
    1100 
    1101                 if ( 'normal' != $context )
    1102                         return;
     1089        }
     1090
     1091        function check_permissions() {
     1092                if ( !current_user_can('upload_files') )
     1093                        wp_die( __( 'You do not have permission to upload files.' ) );
     1094        }               
     1095
     1096        function prepare_items() {
     1097                global $lost, $wpdb, $wp_query, $post_mime_types, $avail_post_mime_types;
    11031098
    11041099                $q = $_REQUEST;
    … …  
    13581353                } else {
    13591354?>
    1360                         <td <?php echo $attributes ?>><?php _e( '( Unattached )' ); ?><br />
     1355                        <td <?php echo $attributes ?>><?php _e( '(Unattached)' ); ?><br />
    13611356                        <a class="hide-if-no-js" onclick="findPosts.open( 'media[]','<?php echo $post->ID ?>' );return false;" href="#the-list"><?php _e( 'Attach' ); ?></a></td>
    13621357<?php
    … …  
    15031498        var $callback_args;
    15041499
    1505         function WP_Terms_Table( $context = 'normal' ) {
     1500        function WP_Terms_Table() {
    15061501                global $post_type, $taxonomy, $tax, $current_screen;
     1502
     1503                wp_reset_vars( array( 'action', 'taxonomy', 'post_type' ) );
     1504
     1505                if ( empty( $taxonomy ) )
     1506                        $taxonomy = 'post_tag';
     1507
     1508                if ( !taxonomy_exists( $taxonomy ) )
     1509                        wp_die( __( 'Invalid taxonomy' ) );
     1510
     1511                $tax = get_taxonomy( $taxonomy );
     1512
     1513                if ( empty( $post_type ) || !in_array( $post_type, get_post_types( array( 'public' => true ) ) ) )
     1514                        $post_type = 'post';
     1515
     1516                if ( !isset( $current_screen ) )
     1517                        set_current_screen( 'edit-' . $taxonomy );
    15071518
    15081519                parent::WP_List_Table( array(
    … …  
    15111522                        'singular' => 'tag',
    15121523                ) );
    1513 
    1514                 if ( 'normal' != $context )
    1515                         return;
    1516 
    1517                 wp_reset_vars( array( 'action', 'tag', 'taxonomy', 'post_type' ) );
    1518 
    1519                 if ( empty( $taxonomy ) )
    1520                         $taxonomy = 'post_tag';
    1521 
    1522                 if ( !taxonomy_exists( $taxonomy ) )
    1523                         wp_die( __( 'Invalid taxonomy' ) );
    1524 
    1525                 $tax = get_taxonomy( $taxonomy );
    1526 
    1527                 if ( ! current_user_can( $tax->cap->manage_terms ) )
     1524        }
     1525
     1526        function check_permissions( $type = 'manage' ) {
     1527                global $tax;
     1528
     1529                $cap = 'manage' == $type ? $tax->cap->manage_terms : $tax->cap->edit_terms;
     1530
     1531                if ( !current_user_can( $tax->cap->manage_terms ) )
    15281532                        wp_die( __( 'Cheatin&#8217; uh?' ) );
    1529 
    1530                 if ( empty( $post_type ) || !in_array( $post_type, get_post_types( array( 'public' => true ) ) ) )
    1531                         $post_type = 'post';
     1533        }
     1534
     1535        function prepare_items() {
     1536                global $taxonomy;
    15321537
    15331538                $tags_per_page = (int) get_user_option( 'edit_' .  $taxonomy . '_per_page' );
    … …  
    18521857class WP_Users_Table extends WP_List_Table {
    18531858
    1854         function WP_Users_Table( $context = 'normal' ) {
     1859        function WP_Users_Table() {
    18551860                global $role, $usersearch;
    18561861
    … …  
    18591864                        'plural' => 'users'
    18601865                ) );
    1861 
    1862                 if ( 'normal' != $context )
    1863                         return;
    1864 
     1866        }
     1867
     1868        function check_permissions() {
     1869                if ( !current_user_can('list_users') )
     1870                        wp_die(__('Cheatin&#8217; uh?'));
     1871        }
     1872
     1873        function prepare_items() {
    18651874                $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
    18661875
    … …  
    20902099class WP_Comments_Table extends WP_List_Table {
    20912100
    2092         function WP_Comments_Table( $context = 'normal' ) {
    2093                 global $comments, $extra_comments, $total_comments, $post_id, $comment_status, $mode;
    2094 
    2095                 $mode = ( empty( $_REQUEST['mode'] ) ) ? 'detail' : $_REQUEST['mode'];
    2096 
     2101        function WP_Comments_Table() {
    20972102                parent::WP_List_Table( array(
    20982103                        'screen' => 'edit-comments',
    20992104                        'plural' => 'comments'
    21002105                ) );
    2101 
    2102                 if ( 'normal' != $context )
    2103                         return;
     2106        }
     2107
     2108        function check_permissions() {
     2109                if ( !current_user_can('edit_posts') )
     2110                        wp_die(__('Cheatin&#8217; uh?'));
     2111        }
     2112
     2113        function prepare_items() {
     2114                global $comments, $extra_comments, $total_comments, $post_id, $comment_status, $mode;
    21042115
    21052116                $post_id = isset( $_REQUEST['post_ID'] ) ? absint( $_REQUEST['post_ID'] ) : 0;
     2117
     2118                $mode = ( empty( $_REQUEST['mode'] ) ) ? 'detail' : $_REQUEST['mode'];
    21062119
    21072120                $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
    … …  
    25092522
    25102523        function WP_Links_Table() {
     2524                parent::WP_List_Table( array(
     2525                        'screen' => 'link-manager',
     2526                        'plural' => 'bookmarks',
     2527                ) );
     2528        }
     2529
     2530        function check_permissions() {
     2531                if ( ! current_user_can( 'manage_links' ) )
     2532                        wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) );
     2533        }
     2534
     2535        function prepare_items() {
    25112536                global $cat_id, $s, $orderby, $order;
    25122537
    … …  
    25252550
    25262551                $this->items = get_bookmarks( $args );
    2527 
    2528                 parent::WP_List_Table( array(
    2529                         'screen' => 'link-manager',
    2530                         'plural' => 'bookmarks',
    2531                 ) );
    2532         }
     2552        }               
    25332553
    25342554        function no_items() {
    … …  
    26912711
    26922712        function WP_Sites_Table() {
     2713                parent::WP_List_Table( array(
     2714                        'screen' => 'ms-sites',
     2715                        'plural' => 'sites',
     2716                ) );
     2717        }
     2718
     2719        function check_permissions() {         
     2720                if ( ! current_user_can( 'manage_sites' ) )
     2721                        wp_die( __( 'You do not have permission to access this page.' ) );
     2722        }
     2723
     2724        function prepare_items() {
    26932725                global $s, $mode, $wpdb;
    26942726
    26952727                $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode'];
    2696 
    2697                 parent::WP_List_Table( array(
    2698                         'callback' => 'site_rows',
    2699                         'screen' => 'ms-sites',
    2700                 ) );
    27012728
    27022729                $pagenum = $this->get_pagenum();
    … …  
    29793006
    29803007        function WP_MS_Users_Table() {
    2981                 global $s, $mode, $wpdb;
    2982 
    2983                 $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode'];
    2984 
    29853008                parent::WP_List_Table( array(
    29863009                        'screen' => 'ms-users',
    29873010                ) );
     3011        }
     3012
     3013        function check_permissions() {                 
     3014                if ( !is_multisite() )
     3015                        wp_die( __( 'Multisite support is not enabled.' ) );
     3016       
     3017                if ( ! current_user_can( 'manage_network_users' ) )
     3018                        wp_die( __( 'You do not have permission to access this page.' ) );
     3019        }
     3020
     3021        function prepare_items() {
     3022                global $s, $mode, $wpdb;
     3023
     3024                $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode'];
    29883025
    29893026                $pagenum = $this->get_pagenum();
    … …  
    32023239
    32033240        function WP_Plugins_Table() {
    3204                 global $status, $plugins, $totals, $page, $orderby, $order, $s;
    3205 
    32063241                parent::WP_List_Table( array(
    32073242                        'screen' => 'plugins',
    32083243                        'plural' => 'plugins',
    32093244                ) );
     3245        }
     3246
     3247        function check_permissions() {
     3248                if ( is_multisite() ) {
     3249                        $menu_perms = get_site_option( 'menu_items', array() );
     3250
     3251                        if ( empty( $menu_perms['plugins'] ) ) {
     3252                                if ( !is_super_admin() )
     3253                                        wp_die( __( 'Cheatin&#8217; uh?' ) );
     3254                        }
     3255                }
     3256
     3257                if ( !current_user_can('activate_plugins') )
     3258                        wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) );
     3259        }
     3260
     3261        function prepare_items() {
     3262                global $status, $plugins, $totals, $page, $orderby, $order, $s;
    32103263
    32113264                wp_reset_vars( array( 'orderby', 'order', 's' ) );
    3212 
    3213                 $default_status = get_user_option( 'plugins_last_view' );
    3214                 if ( empty( $default_status ) )
    3215                         $default_status = 'all';
    3216                 $status = isset( $_REQUEST['plugin_status'] ) ? $_REQUEST['plugin_status'] : $default_status;
    3217                 if ( !in_array( $status, array( 'all', 'active', 'inactive', 'recently_activated', 'upgrade', 'network', 'mustuse', 'dropins', 'search' ) ) )
    3218                         $status = 'all';
    3219                 if ( $status != $default_status && 'search' != $status )
    3220                         update_user_meta( get_current_user_id(), 'plugins_last_view', $status );
    32213265
    32223266                $page = $this->get_pagenum();
    … …  
    35393583
    35403584        function WP_Plugin_Install_Table() {
    3541                 include( ABSPATH . 'wp-admin/includes/plugin-install.php' );
    3542 
    3543                 global $tabs, $tab, $paged, $type, $term;
    3544 
    35453585                parent::WP_List_Table( array(
    35463586                        'screen' => 'plugin-install',
    35473587                ) );
     3588        }
     3589
     3590        function check_permissions() {
     3591                if ( ! current_user_can('install_plugins') )
     3592                        wp_die(__('You do not have sufficient permissions to install plugins on this site.'));         
     3593        }
     3594
     3595        function prepare_items() {
     3596                include( ABSPATH . 'wp-admin/includes/plugin-install.php' );
     3597
     3598                global $tabs, $tab, $paged, $type, $term;
    35483599
    35493600                wp_reset_vars( array( 'tab' ) );
    … …  
    37443795
    37453796        function WP_Themes_Table() {
     3797                parent::__construct( array(
     3798                        'screen' => 'themes',
     3799                ) );
     3800        }
     3801
     3802        function check_permissions() {
     3803                if ( !current_user_can('switch_themes') && !current_user_can('edit_theme_options') )
     3804                        wp_die( __( 'Cheatin&#8217; uh?' ) );
     3805        }
     3806       
     3807        function prepare_items() {
    37463808                global $ct;
    37473809
    … …  
    37583820
    37593821                $this->items = array_slice( $themes, $start, $per_page );
    3760 
    3761                 parent::__construct( array(
    3762                         'screen' => 'themes',
    3763                 ) );
    37643822
    37653823                $this->set_pagination_args( array(
    … …  
    38863944
    38873945        function WP_Theme_Install_Table() {
    3888                 include( ABSPATH . 'wp-admin/includes/theme-install.php' );
    3889 
    3890                 global $tabs, $tab, $paged, $type, $term, $theme_field_defaults;
    3891 
    38923946                parent::WP_List_Table( array(
    38933947                        'screen' => 'theme-install',
    38943948                ) );
    3895 
     3949        }
     3950
     3951        function check_permissions() {
     3952                if ( ! current_user_can('install_themes') )
     3953                        wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) );
     3954        }
     3955
     3956        function prepare_items() {
     3957                include( ABSPATH . 'wp-admin/includes/theme-install.php' );
     3958
     3959                global $tabs, $tab, $paged, $type, $term, $theme_field_defaults;               
     3960               
    38963961                wp_reset_vars( array( 'tab' ) );
    38973962
  • trunk/wp-admin/includes/list-table.php

    r15491 r15496  
    9292                        add_action( 'admin_footer', array( $this, '_js_vars' ) );
    9393                }
     94        }
     95
     96        /**
     97         * Checks the current user's permissions
     98         * @uses wp_die()
     99         *
     100         * @since 3.1.0
     101         * @access public
     102         */
     103        function check_permissions() {
     104                die( 'function WP_List_Table::check_permissions() must be over-ridden in a sub-class.' );
     105        }
     106
     107        /**
     108         * Prepares the list of items for displaying.
     109         * @uses WP_List_Table::set_pagination_args()
     110         *
     111         * @since 3.1.0
     112         * @access public
     113         */
     114        function prepare_items() {
     115                die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' );
    94116        }
    95117
    … …  
    569591         */
    570592        function ajax_response() {
     593                $this->check_permissions();
     594                $this->prepare_items();
     595
    571596                extract( $this->_args );
    572597                extract( $this->_pagination_args );
  • trunk/wp-admin/link-manager.php

    r15491 r15496  
    1010require_once ('admin.php');
    1111
     12require_once( './includes/default-list-tables.php' );
     13
     14$table = new WP_Links_Table;
     15$table->check_permissions();
     16
    1217// Handle bulk deletes
    1318if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['linkcheck'] ) ) {
    … …  
    1520
    1621        $doaction = $_REQUEST['action'] ? $_REQUEST['action'] : $_REQUEST['action2'];
    17 
    18         if ( ! current_user_can( 'manage_links' ) )
    19                 wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) );
    2022
    2123        if ( 'delete' == $doaction ) {
    … …  
    3436}
    3537
    36 require_once( './includes/default-list-tables.php' );
    37 
    38 $table = new WP_Links_Table;
     38$table->prepare_items();
    3939
    4040$title = __('Links');
  • trunk/wp-admin/network/sites.php

    r15494 r15496  
    1313        wp_die( __( 'Multisite support is not enabled.' ) );
    1414
    15 if ( ! current_user_can( 'manage_sites' ) )
    16         wp_die( __( 'You do not have permission to access this page.' ) );
     15require_once( '../includes/default-list-tables.php' );
     16
     17$table = new WP_Sites_Table;
     18$table->check_permissions();
    1719
    1820$title = __( 'Sites' );
    … …  
    349351        case 'list':
    350352        default:
    351                 require_once( '../includes/default-list-tables.php' );
    352 
    353                 $table = new WP_Sites_Table;
     353                $table->prepare_items();
    354354
    355355                require_once( '../admin-header.php' );
  • trunk/wp-admin/network/users.php

    r15494 r15496  
    1010require_once( './admin.php' );
    1111
    12 if ( !is_multisite() )
    13         wp_die( __( 'Multisite support is not enabled.' ) );
     12require_once( '../includes/default-list-tables.php' );
    1413
    15 if ( ! current_user_can( 'manage_network_users' ) )
    16         wp_die( __( 'You do not have permission to access this page.' ) );
     14$table = new WP_MS_Users_Table;
     15$table->check_permissions();
     16$table->prepare_items();
    1717
    1818$title = __( 'Users' );
    … …  
    3232        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    3333);
    34 
    35 require_once( '../includes/default-list-tables.php' );
    36 
    37 $table = new WP_MS_Users_Table;
    3834
    3935require_once( '../admin-header.php' );
  • trunk/wp-admin/plugin-install.php

    r15491 r15496  
    1010require_once('./admin.php');
    1111
    12 if ( ! current_user_can('install_plugins') )
    13         wp_die(__('You do not have sufficient permissions to install plugins on this site.'));
    14 
    1512require_once( './includes/default-list-tables.php' );
    1613
    1714$table = new WP_Plugin_Install_Table;
     15$table->check_permissions();
     16$table->prepare_items();
    1817
    1918$title = __('Install Plugins');
  • trunk/wp-admin/plugins.php

    r15492 r15496  
    99/** WordPress Administration Bootstrap */
    1010require_once('./admin.php');
    11 if ( is_multisite() ) {
    12         $menu_perms = get_site_option( 'menu_items', array() );
    13                
    14         if ( empty( $menu_perms['plugins'] ) ) {
    15                 if ( ! is_super_admin() )
    16                         wp_die( __( 'Cheatin&#8217; uh?' ) );
    17         }
    18 }
    19 
    20 if ( ! current_user_can( 'activate_plugins' ) )
    21         wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) );
     11
     12require_once( ABSPATH . 'wp-admin/includes/default-list-tables.php' );
     13
     14$table = new WP_Plugins_Table;
     15$table->check_permissions();
    2216
    2317if ( isset($_POST['clear-recent-list']) )
    … …  
    300294}
    301295
    302 require_once( ABSPATH . 'wp-admin/includes/default-list-tables.php' );
    303 
    304 $table = new WP_Plugins_Table;
     296$default_status = get_user_option( 'plugins_last_view' );
     297if ( empty( $default_status ) )
     298        $default_status = 'all';
     299$status = isset( $_REQUEST['plugin_status'] ) ? $_REQUEST['plugin_status'] : $default_status;
     300if ( !in_array( $status, array( 'all', 'active', 'inactive', 'recently_activated', 'upgrade', 'network', 'mustuse', 'dropins', 'search' ) ) )
     301        $status = 'all';
     302if ( $status != $default_status && 'search' != $status )
     303        update_user_meta( get_current_user_id(), 'plugins_last_view', $status );
     304
     305$table->prepare_items();
    305306
    306307wp_enqueue_script('plugin-install');
  • trunk/wp-admin/theme-install.php

    r15491 r15496  
    1010require_once('./admin.php');
    1111
    12 if ( ! current_user_can('install_themes') )
    13         wp_die(__('You do not have sufficient permissions to install themes on this site.'));
    14 
    1512require_once( './includes/default-list-tables.php' );
    1613
    1714$table = new WP_Theme_Install_Table;
     15$table->check_permissions();
     16$table->prepare_items();
    1817
    1918$title = __('Install Themes');
  • trunk/wp-admin/themes.php

    r15491 r15496  
    1010require_once('./admin.php');
    1111
    12 if ( !current_user_can('switch_themes') && !current_user_can('edit_theme_options') )
    13         wp_die( __( 'Cheatin&#8217; uh?' ) );
     12require_once( './includes/default-list-tables.php' );
     13
     14$table = new WP_Themes_Table;
     15$table->check_permissions();
    1416
    1517if ( current_user_can('switch_themes') && isset($_GET['action']) ) {
    … …  
    2931}
    3032
    31 require_once( './includes/default-list-tables.php' );
    32 
    33 $table = new WP_Themes_Table;
     33$table->prepare_items();
    3434
    3535$title = __('Manage Themes');
  • trunk/wp-admin/upload.php

    r15491 r15496  
    1010require_once( './admin.php' );
    1111
    12 if ( !current_user_can('upload_files') )
    13         wp_die(__('You do not have permission to upload files.'));
     12require_once( './includes/default-list-tables.php' );
     13
     14$table = new WP_Media_Table;
     15$table->check_permissions();
    1416
    1517// Handle bulk actions
    16 if ( isset( $_REQUEST['found_post_id'] ) && isset( $_REQUEST['media'] ) ) {
     18if ( isset($_REQUEST['find_detached']) ) {
     19        check_admin_referer('bulk-media');
     20
     21        if ( !current_user_can('edit_posts') )
     22                wp_die( __('You are not allowed to scan for lost attachments.') );
     23
     24        $lost = $wpdb->get_col( "
     25                SELECT ID FROM $wpdb->posts
     26                WHERE post_type = 'attachment' AND post_parent > '0'
     27                AND post_parent NOT IN (
     28                        SELECT ID FROM $wpdb->posts
     29                        WHERE post_type NOT IN ( 'attachment', '" . join( "', '", get_post_types( array( 'public' => false ) ) ) . "' )
     30                )
     31        " );
     32
     33        $_REQUEST['detached'] = 1;
     34
     35} elseif ( isset( $_REQUEST['found_post_id'] ) && isset( $_REQUEST['media'] ) ) {
    1736        check_admin_referer( 'bulk-media' );
    1837
    … …  
    112131}
    113132
    114 require_once( './includes/default-list-tables.php' );
    115 
    116 $table = new WP_Media_Table;
     133$table->prepare_items();
    117134
    118135$title = __('Media Library');
  • trunk/wp-admin/users.php

    r15491 r15496  
    1313require_once( ABSPATH . WPINC . '/registration.php');
    1414
    15 if ( !current_user_can('list_users') )
    16         wp_die(__('Cheatin&#8217; uh?'));
     15require_once( './includes/default-list-tables.php' );
     16
     17$table = new WP_Users_Table;
     18$table->check_permissions();
    1719
    1820$title = __('Users');
    … …  
    307309        }
    308310
    309         require_once( './includes/default-list-tables.php' );
    310 
    311         $table = new WP_Users_Table;
     311        $table->prepare_items();
    312312
    313313        include('./admin-header.php');
  • trunk/wp-includes/functions.php

    r15491 r15496  
    26572657 */
    26582658function wp_die( $message, $title = '', $args = array() ) {
     2659        if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
     2660                die('-1');
     2661
    26592662        if ( function_exists( 'apply_filters' ) ) {
    26602663                $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler');
    2661         }else {
     2664        } else {
    26622665                $function = '_default_wp_die_handler';
    26632666        }
Note: See TracChangeset for help on using the changeset viewer.