Ticket #4529: post-trash-undo.diff
| File post-trash-undo.diff, 8.0 KB (added by caesarsgrunt, 3 years ago) |
|---|
-
wp-admin/post.php
196 196 if ( ! wp_trash_post($post_id) ) 197 197 wp_die( __('Error in moving to trash...') ); 198 198 199 $sendback = wp_get_referer();199 $sendback = remove_query_arg(array('trashed','untrashed','deleted','ids'), wp_get_referer()); 200 200 if ( strpos($sendback, 'post.php') !== false || strpos($sendback, 'post-new.php') !== false ) 201 $sendback = admin_url('edit.php?trashed=1 ');201 $sendback = admin_url('edit.php?trashed=1&ids='.$post_id); 202 202 else 203 $sendback = add_query_arg( 'trashed', 1, $sendback);203 $sendback = add_query_arg(array('trashed' => 1, ids => $post_id), $sendback); 204 204 205 205 wp_redirect($sendback); 206 206 exit(); -
wp-admin/upload.php
73 73 if ( isset($_GET['delete_all']) || isset($_GET['delete_all2']) ) { 74 74 $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type='attachment' AND post_status = 'trash'" ); 75 75 $doaction = 'delete'; 76 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && isset($_GET['media']) ) {77 $post_ids = $_GET['media'];76 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && (isset($_GET['media']) || isset($_GET['ids'])) ) { 77 $post_ids = isset($_GET['media']) ? $_GET['media'] : explode(',', $_GET['ids']); 78 78 $doaction = ($_GET['action'] != -1) ? $_GET['action'] : $_GET['action2']; 79 79 } else 80 80 wp_redirect($_SERVER['HTTP_REFERER']); … … 82 82 $location = 'upload.php'; 83 83 if ( $referer = wp_get_referer() ) { 84 84 if ( false !== strpos($referer, 'upload.php') ) 85 $location = $referer;85 $location = remove_query_arg(array('trashed','untrashed','deleted','message','ids'), $referer); 86 86 } 87 87 88 88 switch ( $doaction ) { … … 94 94 if ( !wp_trash_post($post_id) ) 95 95 wp_die( __('Error in moving to trash...') ); 96 96 } 97 $location = add_query_arg( 'message', 4, $location);97 $location = add_query_arg(array('message' => 4, 'ids' => join(',', $post_ids)), $location); 98 98 break; 99 99 case 'untrash': 100 100 foreach( (array) $post_ids as $post_id ) { … … 202 202 $messages[1] = __('Media attachment updated.'); 203 203 $messages[2] = __('Media permanently deleted.'); 204 204 $messages[3] = __('Error saving media attachment.'); 205 $messages[4] = __('Media moved to the trash.') . ' <a href="' . admin_url('upload.php?status=trash') . '">' . __('View trash') . '</a>';205 $messages[4] = __('Media moved to the trash.') . ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids='.$_GET['ids'], "bulk-media" ) ) . '">' . __('Undo?') . '</a>'; 206 206 $messages[5] = __('Media restored from the trash.'); 207 207 208 208 if ( isset($_GET['message']) && (int) $_GET['message'] ) { -
wp-admin/edit.php
23 23 // Handle bulk actions 24 24 if ( isset($_GET['doaction']) || isset($_GET['doaction2']) || isset($_GET['delete_all']) || isset($_GET['delete_all2']) || isset($_GET['bulk_edit']) ) { 25 25 check_admin_referer('bulk-posts'); 26 $sendback = wp_get_referer();26 $sendback = remove_query_arg(array('trashed','untrashed','deleted','ids'), wp_get_referer()); 27 27 28 28 if ( strpos($sendback, 'post.php') !== false ) 29 29 $sendback = admin_url('post-new.php'); … … 32 32 $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_GET['post_status']); 33 33 $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='post' AND post_status = %s", $post_status ) ); 34 34 $doaction = 'delete'; 35 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && isset($_GET['post']) ) {36 $post_ids = array_map( 'intval', (array) $_GET['post']);35 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && (isset($_GET['post']) || isset($_GET['ids'])) ) { 36 $post_ids = isset($_GET['post']) ? array_map( 'intval', (array) $_GET['post'] ) : explode(',', $_GET['ids']); 37 37 $doaction = ($_GET['action'] != -1) ? $_GET['action'] : $_GET['action2']; 38 38 } else { 39 39 wp_redirect( admin_url('edit.php') ); … … 51 51 52 52 $trashed++; 53 53 } 54 $sendback = add_query_arg( 'trashed', $trashed, $sendback);54 $sendback = add_query_arg(array('trashed' => $trashed, 'ids' => join(',', $post_ids)), $sendback); 55 55 break; 56 56 case 'untrash': 57 57 $untrashed = 0; … … 167 167 168 168 if ( isset($_GET['trashed']) && (int) $_GET['trashed'] ) { 169 169 printf( _n( 'Post moved to the trash.', '%s posts moved to the trash.', $_GET['trashed'] ), number_format_i18n( $_GET['trashed'] ) ); 170 echo ' <a href="' . admin_url('edit.php?post_status=trash') . '">' . __('View trash') . '</a> '; 170 $ids = isset($_GET['ids']) ? $_GET['ids'] : 0; 171 echo ' <a href="' . esc_url( wp_nonce_url( "edit.php?doaction=undo&action=untrash&ids=$ids", "bulk-posts" ) ) . '">' . __('Undo?') . '</a><br />'; 171 172 unset($_GET['trashed']); 172 173 } 173 174 -
wp-admin/page.php
156 156 if ( !wp_trash_post($post_id) ) 157 157 wp_die( __('Error in moving to trash...') ); 158 158 159 $sendback = wp_get_referer();159 $sendback = remove_query_arg(array('trashed','untrashed','deleted','ids'), wp_get_referer()); 160 160 if ( strpos($sendback, 'page.php') !== false || strpos($sendback, 'page-new.php') !== false ) 161 $sendback = admin_url('edit-pages.php?trashed=1 ');161 $sendback = admin_url('edit-pages.php?trashed=1&ids='.$post_id); 162 162 else 163 $sendback = add_query_arg( 'trashed', 1, $sendback);163 $sendback = add_query_arg(array('trashed' => 1, ids => $post_id), $sendback); 164 164 165 165 wp_redirect($sendback); 166 166 exit(); -
wp-admin/edit-pages.php
15 15 // Handle bulk actions 16 16 if ( isset($_GET['doaction']) || isset($_GET['doaction2']) || isset($_GET['delete_all']) || isset($_GET['delete_all2']) || isset($_GET['bulk_edit']) ) { 17 17 check_admin_referer('bulk-pages'); 18 $sendback = wp_get_referer();18 $sendback = remove_query_arg(array('trashed','untrashed','deleted','ids'), wp_get_referer()); 19 19 20 20 if ( strpos($sendback, 'page.php') !== false ) 21 21 $sendback = admin_url('page-new.php'); … … 24 24 $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_GET['post_status']); 25 25 $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status = %s", $post_status ) ); 26 26 $doaction = 'delete'; 27 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && isset($_GET['post']) ) {28 $post_ids = array_map( 'intval', (array) $_GET['post']);27 } elseif ( ($_GET['action'] != -1 || $_GET['action2'] != -1) && (isset($_GET['post']) || isset($_GET['ids'])) ) { 28 $post_ids = isset($_GET['post']) ? array_map( 'intval', (array) $_GET['post'] ) : explode(',', $_GET['ids']); 29 29 $doaction = ($_GET['action'] != -1) ? $_GET['action'] : $_GET['action2']; 30 30 } else { 31 31 wp_redirect( admin_url('edit-pages.php') ); … … 43 43 44 44 $trashed++; 45 45 } 46 $sendback = add_query_arg( 'trashed', $trashed, $sendback);46 $sendback = add_query_arg(array('trashed' => $trashed, 'ids' => join(',', $post_ids)), $sendback); 47 47 break; 48 48 case 'untrash': 49 49 $untrashed = 0; … … 163 163 } 164 164 if ( isset($_GET['trashed']) && (int) $_GET['trashed'] ) { 165 165 printf( _n( 'Page moved to the trash.', '%s pages moved to the trash.', $_GET['trashed'] ), number_format_i18n( $_GET['trashed'] ) ); 166 echo ' <a href="' . admin_url('edit-pages.php?post_status=trash') . '">' . __('View trash') . '</a> '; 166 $ids = isset($_GET['ids']) ? $_GET['ids'] : 0; 167 echo ' <a href="' . esc_url( wp_nonce_url( "edit-pages.php?doaction=undo&action=untrash&ids=$ids", "bulk-pages" ) ) . '">' . __('Undo?') . '</a><br />'; 167 168 unset($_GET['trashed']); 168 169 } 169 170 if ( isset($_GET['untrashed']) && (int) $_GET['untrashed'] ) {
