WordPress.org

Make WordPress Core

Changeset 17277


Ignore:
Timestamp:
01/13/11 00:50:35 (3 years ago)
Author:
nacin
Message:

Revert [17275] and [17276]. The rabbit hole is too deep. see #16166.

Location:
trunk/wp-admin
Files:
3 edited

Legend:

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

    r17276 r17277  
    3939 
    4040if ( $doaction ) { 
    41     $wp_list_table->do_bulk_actions( $doaction ); 
     41    check_admin_referer('bulk-posts'); 
     42 
     43    $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); 
     44    $sendback = $wp_list_table->add_query_args( $sendback ); 
     45    if ( strpos($sendback, 'post.php') !== false ) 
     46        $sendback = admin_url($post_new_file); 
     47 
     48    if ( 'delete_all' == $doaction ) { 
     49        $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); 
     50        if ( get_post_status_object($post_status) ) // Check the post status exists first 
     51            $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); 
     52        $doaction = 'delete'; 
     53    } elseif ( isset( $_REQUEST['media'] ) ) { 
     54        $post_ids = $_REQUEST['media']; 
     55    } elseif ( isset( $_REQUEST['ids'] ) ) { 
     56        $post_ids = explode( ',', $_REQUEST['ids'] ); 
     57    } elseif ( !empty( $_REQUEST['post'] ) ) { 
     58        $post_ids = array_map('intval', $_REQUEST['post']); 
     59    } 
     60 
     61    if ( !isset( $post_ids ) ) { 
     62        wp_redirect( admin_url("edit.php?post_type=$post_type") ); 
     63        exit; 
     64    } 
     65 
     66    switch ( $doaction ) { 
     67        case 'trash': 
     68            $trashed = 0; 
     69            foreach( (array) $post_ids as $post_id ) { 
     70                if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
     71                    wp_die( __('You are not allowed to move this item to the Trash.') ); 
     72 
     73                if ( !wp_trash_post($post_id) ) 
     74                    wp_die( __('Error in moving to Trash.') ); 
     75 
     76                $trashed++; 
     77            } 
     78            $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback ); 
     79            break; 
     80        case 'untrash': 
     81            $untrashed = 0; 
     82            foreach( (array) $post_ids as $post_id ) { 
     83                if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
     84                    wp_die( __('You are not allowed to restore this item from the Trash.') ); 
     85 
     86                if ( !wp_untrash_post($post_id) ) 
     87                    wp_die( __('Error in restoring from Trash.') ); 
     88 
     89                $untrashed++; 
     90            } 
     91            $sendback = add_query_arg('untrashed', $untrashed, $sendback); 
     92            break; 
     93        case 'delete': 
     94            $deleted = 0; 
     95            foreach( (array) $post_ids as $post_id ) { 
     96                $post_del = & get_post($post_id); 
     97 
     98                if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
     99                    wp_die( __('You are not allowed to delete this item.') ); 
     100 
     101                if ( $post_del->post_type == 'attachment' ) { 
     102                    if ( ! wp_delete_attachment($post_id) ) 
     103                        wp_die( __('Error in deleting...') ); 
     104                } else { 
     105                    if ( !wp_delete_post($post_id) ) 
     106                        wp_die( __('Error in deleting...') ); 
     107                } 
     108                $deleted++; 
     109            } 
     110            $sendback = add_query_arg('deleted', $deleted, $sendback); 
     111            break; 
     112        case 'edit': 
     113            $done = bulk_edit_posts($_REQUEST); 
     114 
     115            if ( is_array($done) ) { 
     116                $done['updated'] = count( $done['updated'] ); 
     117                $done['skipped'] = count( $done['skipped'] ); 
     118                $done['locked'] = count( $done['locked'] ); 
     119                $sendback = add_query_arg( $done, $sendback ); 
     120            } 
     121            break; 
     122    } 
     123 
     124    $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view'), $sendback ); 
     125 
     126    wp_redirect($sendback); 
     127    exit(); 
    42128} elseif ( ! empty($_REQUEST['_wp_http_referer']) ) { 
    43129     wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) ); 
  • trunk/wp-admin/includes/class-wp-posts-list-table.php

    r17276 r17277  
    10141014<?php 
    10151015    } 
    1016  
    1017     function do_bulk_actions( $doaction = null ) { 
    1018         if ( null === $doaction ) 
    1019             $doaction = $this->current_action(); 
    1020  
    1021         if ( ! $doaction ) 
    1022             return; 
    1023  
    1024         check_admin_referer('bulk-posts'); 
    1025  
    1026         $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); 
    1027         if ( strpos($sendback, 'post.php') !== false ) 
    1028             $sendback = admin_url($post_new_file); 
    1029  
    1030         if ( 'delete_all' == $doaction ) { 
    1031             $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); 
    1032             if ( get_post_status_object($post_status) ) // Check the post status exists first 
    1033                 $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); 
    1034             $doaction = 'delete'; 
    1035         } elseif ( isset( $_REQUEST['media'] ) ) { 
    1036             $post_ids = $_REQUEST['media']; 
    1037         } elseif ( isset( $_REQUEST['ids'] ) ) { 
    1038             $post_ids = explode( ',', $_REQUEST['ids'] ); 
    1039         } elseif ( !empty( $_REQUEST['post'] ) ) { 
    1040             $post_ids = array_map('intval', $_REQUEST['post']); 
    1041         } 
    1042  
    1043         if ( !isset( $post_ids ) ) { 
    1044             wp_redirect( admin_url("edit.php?post_type=$post_type") ); 
    1045             exit; 
    1046         } 
    1047  
    1048         switch ( $doaction ) { 
    1049             case 'trash': 
    1050                 $trashed = 0; 
    1051                 foreach( (array) $post_ids as $post_id ) { 
    1052                     if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
    1053                         wp_die( __('You are not allowed to move this item to the Trash.') ); 
    1054  
    1055                     if ( !wp_trash_post($post_id) ) 
    1056                         wp_die( __('Error in moving to Trash.') ); 
    1057  
    1058                     $trashed++; 
    1059                 } 
    1060                 $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback ); 
    1061                 break; 
    1062             case 'untrash': 
    1063                 $untrashed = 0; 
    1064                 foreach( (array) $post_ids as $post_id ) { 
    1065                     if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
    1066                         wp_die( __('You are not allowed to restore this item from the Trash.') ); 
    1067  
    1068                     if ( !wp_untrash_post($post_id) ) 
    1069                         wp_die( __('Error in restoring from Trash.') ); 
    1070  
    1071                     $untrashed++; 
    1072                 } 
    1073                 $sendback = add_query_arg('untrashed', $untrashed, $sendback); 
    1074                 break; 
    1075             case 'delete': 
    1076                 $deleted = 0; 
    1077                 foreach( (array) $post_ids as $post_id ) { 
    1078                     $post_del = & get_post($post_id); 
    1079  
    1080                     if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) 
    1081                         wp_die( __('You are not allowed to delete this item.') ); 
    1082  
    1083                     if ( $post_del->post_type == 'attachment' ) { 
    1084                         if ( ! wp_delete_attachment($post_id) ) 
    1085                             wp_die( __('Error in deleting...') ); 
    1086                     } else { 
    1087                         if ( !wp_delete_post($post_id) ) 
    1088                             wp_die( __('Error in deleting...') ); 
    1089                     } 
    1090                     $deleted++; 
    1091                 } 
    1092                 $sendback = add_query_arg('deleted', $deleted, $sendback); 
    1093                 break; 
    1094             case 'edit': 
    1095                 $done = bulk_edit_posts($_REQUEST); 
    1096  
    1097                 if ( is_array($done) ) { 
    1098                     $done['updated'] = count( $done['updated'] ); 
    1099                     $done['skipped'] = count( $done['skipped'] ); 
    1100                     $done['locked'] = count( $done['locked'] ); 
    1101                     $sendback = add_query_arg( $done, $sendback ); 
    1102                 } 
    1103                 break; 
    1104             default : 
    1105                 $sendback = apply_filters( "bulk_actions-posts-$doaction", $sendback, $doaction ); 
    1106                 break; 
    1107         } 
    1108  
    1109         $sendback = remove_query_arg( array( 'action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view' ), $sendback ); 
    1110         $sendback = $this->add_query_args( $sendback ); 
    1111         wp_redirect( $sendback ); 
    1112         exit(); 
    1113     } 
    1114  
    11151016} 
    11161017 
  • trunk/wp-admin/users.php

    r17275 r17277  
    4343$update = ''; 
    4444 
    45 if ( $doaction = $wp_list_table->current_action() ) { 
    46  
    47 switch ( $doaction ) { 
     45switch ( $wp_list_table->current_action() ) { 
    4846 
    4947/* Bulk Dropdown menu Role changes */ 
     
    5149    check_admin_referer('bulk-users'); 
    5250 
    53     if ( empty($_REQUEST['users']) ) 
    54         break; 
     51    if ( empty($_REQUEST['users']) ) { 
     52        wp_redirect($redirect); 
     53        exit(); 
     54    } 
    5555 
    5656    $editable_roles = get_editable_roles(); 
     
    6666            wp_die(__('You can&#8217;t edit that user.')); 
    6767        // The new role of the current user must also have promote_users caps 
    68         if ( $id == $current_user->ID && ! current_user_can('promote_users') ) { 
     68        if ( $id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('promote_users') ) { 
    6969            $update = 'err_admin_role'; 
    7070            continue; 
     
    7979    } 
    8080 
    81     $redirect = add_query_arg( 'update', $update, $redirect ); 
     81    wp_redirect(add_query_arg('update', $update, $redirect)); 
     82    exit(); 
    8283 
    8384break; 
     
    8990    check_admin_referer('delete-users'); 
    9091 
    91     if ( empty($_REQUEST['users']) ) 
    92         break; 
     92    if ( empty($_REQUEST['users']) ) { 
     93        wp_redirect($redirect); 
     94        exit(); 
     95    } 
    9396 
    9497    if ( ! current_user_can( 'delete_users' ) ) 
     
    123126 
    124127    $redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect); 
     128    wp_redirect($redirect); 
     129    exit(); 
    125130 
    126131break; 
     
    132137    check_admin_referer('bulk-users'); 
    133138 
    134     if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) 
    135         break; 
     139    if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { 
     140        wp_redirect($redirect); 
     141        exit(); 
     142    } 
    136143 
    137144    if ( ! current_user_can( 'delete_users' ) ) 
     
    142149    else 
    143150        $userids = $_REQUEST['users']; 
    144  
    145     $redirect = false; 
    146151 
    147152    include ('admin-header.php'); 
     
    187192</form> 
    188193<?php 
    189 include('./admin-footer.php'); 
    190194 
    191195break; 
     
    194198    check_admin_referer('remove-users'); 
    195199 
    196     if ( empty($_REQUEST['users']) ) 
    197         break; 
     200    if ( empty($_REQUEST['users']) ) { 
     201        wp_redirect($redirect); 
     202        exit; 
     203    } 
    198204 
    199205    if ( !current_user_can('remove_users')  ) 
     
    217223 
    218224    $redirect = add_query_arg( array('update' => $update), $redirect); 
     225    wp_redirect($redirect); 
     226    exit; 
    219227 
    220228break; 
     
    224232    check_admin_referer('bulk-users'); 
    225233 
    226     if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) 
    227         break; 
     234    if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { 
     235        wp_redirect($redirect); 
     236        exit(); 
     237    } 
    228238 
    229239    if ( !current_user_can('remove_users') ) 
     
    234244    else 
    235245        $userids = $_REQUEST['users']; 
    236  
    237     $redirect = false; 
    238246 
    239247    include ('admin-header.php'); 
     
    272280</form> 
    273281<?php 
    274 include('./admin-footer.php'); 
    275282 
    276283break; 
     
    278285default: 
    279286 
    280 } // end of the $doaction switch 
    281  
    282     if ( $redirect ) 
    283         wp_redirect( $redirect ); 
    284     exit(); 
    285  
    286 } // end of the $doaction if 
    287 elseif ( !empty($_GET['_wp_http_referer']) ) { 
     287    if ( !empty($_GET['_wp_http_referer']) ) { 
    288288        wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']))); 
    289289        exit; 
    290 } 
     290    } 
    291291 
    292292    $wp_list_table->prepare_items(); 
     
    379379</div> 
    380380<?php 
     381break; 
     382 
     383} // end of the $doaction switch 
    381384 
    382385include('./admin-footer.php'); 
Note: See TracChangeset for help on using the changeset viewer.