WordPress.org

Make WordPress Core

Ticket #19826: 19826.diff

File 19826.diff, 6.1 KB (added by piontkowski, 7 years ago)
  • wp-admin/edit.php

     
    7575
    7676        switch ( $doaction ) {
    7777                case 'trash':
    78                         $trashed = $locked = 0;
     78                        $trashed = $nottrashed = $locked = 0;
    7979
    8080                        foreach( (array) $post_ids as $post_id ) {
    81                                 if ( !current_user_can( 'delete_post', $post_id) )
    82                                         wp_die( __('You are not allowed to move this item to the Trash.') );
     81                                if ( !current_user_can( 'delete_post', $post_id) ) {
     82                                        $nottrashed++;
     83                                        continue;
     84                                }
    8385
    8486                                if ( wp_check_post_lock( $post_id ) ) {
    8587                                        $locked++;
     
    9294                                $trashed++;
    9395                        }
    9496
    95                         $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback );
     97                        $sendback = add_query_arg( array( 'trashed' => $trashed, 'nottrashed' => $nottrashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback );
    9698                        break;
    9799                case 'untrash':
    98                         $untrashed = 0;
     100                        $untrashed = $notuntrashed = 0;
    99101                        foreach( (array) $post_ids as $post_id ) {
    100                                 if ( !current_user_can( 'delete_post', $post_id) )
    101                                         wp_die( __('You are not allowed to restore this item from the Trash.') );
     102                                if ( !current_user_can( 'delete_post', $post_id) ) {
     103                                    $notuntrashed++;
     104                                    continue;
     105                                }
    102106
    103107                                if ( !wp_untrash_post($post_id) )
    104108                                        wp_die( __('Error in restoring from Trash.') );
    105109
    106110                                $untrashed++;
    107111                        }
    108                         $sendback = add_query_arg('untrashed', $untrashed, $sendback);
     112                        $sendback = add_query_arg( array( 'untrashed' => $untrashed, 'notuntrashed' => $notuntrashed ), $sendback );
    109113                        break;
    110114                case 'delete':
    111                         $deleted = 0;
     115                        $deleted = $notdeleted = 0;
    112116                        foreach( (array) $post_ids as $post_id ) {
    113117                                $post_del = get_post($post_id);
    114118
    115                                 if ( !current_user_can( 'delete_post', $post_id ) )
    116                                         wp_die( __('You are not allowed to delete this item.') );
     119                                if ( !current_user_can( 'delete_post', $post_id ) ) {
     120                                        $notdeleted++;
     121                                        continue;
     122                                }
    117123
    118124                                if ( $post_del->post_type == 'attachment' ) {
    119125                                        if ( ! wp_delete_attachment($post_id) )
     
    124130                                }
    125131                                $deleted++;
    126132                        }
    127                         $sendback = add_query_arg('deleted', $deleted, $sendback);
     133                        $sendback = add_query_arg( array( 'deleted' => $deleted, 'notdeleted' => $notdeleted ), $sendback );
    128134                        break;
    129135                case 'edit':
    130136                        if ( isset($_REQUEST['bulk_edit']) ) {
     
    232238        'untrashed' => isset( $_REQUEST['untrashed'] ) ? absint( $_REQUEST['untrashed'] ) : 0,
    233239);
    234240
     241$bulk_error_counts = array(
     242        'notdeleted'   => isset( $_REQUEST['notdeleted'] )   ? absint( $_REQUEST['notdeleted'] )   : 0,
     243        'nottrashed'   => isset( $_REQUEST['nottrashed'] )   ? absint( $_REQUEST['nottrashed'] )   : 0,
     244        'notuntrashed' => isset( $_REQUEST['notuntrashed'] ) ? absint( $_REQUEST['notuntrashed'] ) : 0,
     245);
     246
    235247$bulk_messages = array();
    236248$bulk_messages['post'] = array(
    237249        'updated'   => _n( '%s post updated.', '%s posts updated.', $bulk_counts['updated'] ),
     
    248260        'untrashed' => _n( '%s page restored from the Trash.', '%s pages restored from the Trash.', $bulk_counts['untrashed'] ),
    249261);
    250262
     263$bulk_error_messages = array();
     264$bulk_error_messages['post'] = array(
     265        'notdeleted'   => _n( '%s post not permanently deleted.', '%s posts not permanently deleted.', $bulk_error_counts['notdeleted'] ),
     266        'nottrashed'   => _n( '%s post not moved to the Trash.', '%s posts not moved to the Trash.', $bulk_error_counts['nottrashed'] ),
     267        'notuntrashed' => _n( '%s post not restored from the Trash.', '%s posts not restored from the Trash.', $bulk_error_counts['notuntrashed'] ),
     268);
     269$bulk_error_messages['page'] = array(
     270        'notdeleted'   => _n( '%s page not permanently deleted.', '%s pages not permanently deleted.', $bulk_error_counts['notdeleted'] ),
     271        'nottrashed'   => _n( '%s page not moved to the Trash.', '%s pages not moved to the Trash.', $bulk_error_counts['nottrashed'] ),
     272        'notuntrashed' => _n( '%s page not restored from the Trash.', '%s pages not restored from the Trash.', $bulk_error_counts['notuntrashed'] ),
     273);
     274
    251275/**
    252276 * Filter the bulk action updated messages.
    253277 *
     
    262286$bulk_messages = apply_filters( 'bulk_post_updated_messages', $bulk_messages, $bulk_counts );
    263287$bulk_counts = array_filter( $bulk_counts );
    264288
     289/** This filter documented in wp-admin/edit.php */
     290$bulk_error_messages = apply_filters( 'bulk_post_updated_messages', $bulk_error_messages, $bulk_error_counts );
     291$bulk_error_counts = array_filter( $bulk_error_counts );
     292
    265293require_once( ABSPATH . 'wp-admin/admin-header.php' );
    266294?>
    267295<div class="wrap">
     
    276304<?php
    277305// If we have a bulk message to issue:
    278306$messages = array();
     307$error_messages = array();
    279308foreach ( $bulk_counts as $message => $count ) {
    280309        if ( isset( $bulk_messages[ $post_type ][ $message ] ) )
    281310                $messages[] = sprintf( $bulk_messages[ $post_type ][ $message ], number_format_i18n( $count ) );
     
    287316                $messages[] = '<a href="' . esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", "bulk-posts" ) ) . '">' . __('Undo') . '</a>';
    288317        }
    289318}
     319foreach ( $bulk_error_counts as $message => $count ) {
     320        if ( isset( $bulk_error_messages[ $post_type ][ $message ] ) )
     321                $error_messages[] = sprintf( $bulk_error_messages[ $post_type ][ $message ], number_format_i18n( $count ) );
     322        elseif ( isset( $bulk_error_messages['post'][ $message ] ) )
     323                $error_messages[] = sprintf( $bulk_error_messages['post'][ $message ], number_format_i18n( $count ) );
     324}
    290325
    291326if ( $messages )
    292327        echo '<div id="message" class="updated"><p>' . join( ' ', $messages ) . '</p></div>';
     328if ( $error_messages )
     329    echo '<div id="errormessage" class="error"><p>' . join( ' ', $error_messages ) . '</p></div>';
    293330unset( $messages );
     331unset( $error_messgaes );
    294332
    295 $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] );
     333$_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed', 'notdeleted', 'nottrashed', 'notuntrashed' ), $_SERVER['REQUEST_URI'] );
    296334?>
    297335
    298336<?php $wp_list_table->views(); ?>