Ticket #11863: conflict.4.patch
File conflict.4.patch, 3.4 KB (added by , 15 years ago) |
---|
-
wp-includes/post.php
2437 2437 } elseif ( in_array( $post_type, $hierarchical_post_types ) ) { 2438 2438 // Page slugs must be unique within their own trees. Pages are in a separate 2439 2439 // namespace than posts so page slugs are allowed to overlap post slugs. 2440 $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "' ) AND ID != %d AND post_parent = %d LIMIT 1";2440 $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "' ) AND ID != %d AND post_parent = %d AND post_status <> 'trash' LIMIT 1"; 2441 2441 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID, $post_parent ) ); 2442 2442 2443 2443 if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( '@^(page)?\d+$@', $slug ) ) { … … 2451 2451 } 2452 2452 } else { 2453 2453 // Post slugs must be unique across all posts. 2454 $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";2454 $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_status <> 'trash' LIMIT 1"; 2455 2455 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID ) ); 2456 2456 2457 2457 if ( $post_name_check || in_array( $slug, $feeds ) ) { -
wp-admin/post.php
220 220 if ( !current_user_can($post_type_object->delete_cap, $post_id) ) 221 221 wp_die( __('You are not allowed to move this item to the Trash.') ); 222 222 223 if ( ! 223 if ( !wp_trash_post($post_id) ) 224 224 wp_die( __('Error in moving to Trash.') ); 225 225 226 226 wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) ); … … 233 233 if ( !current_user_can($post_type_object->delete_cap, $post_id) ) 234 234 wp_die( __('You are not allowed to move this item out of the Trash.') ); 235 235 236 if ( ! wp_untrash_post($post_id) ) 236 $orig_permalink = get_permalink($post_id); 237 238 if ( !wp_untrash_post($post_id) ) 237 239 wp_die( __('Error in restoring from Trash.') ); 238 240 239 wp_redirect( add_query_arg('untrashed', 1, $sendback) ); 241 if ( $orig_permalink != get_permalink($post_id) ) 242 $permalink_conflict = $post_id; 243 244 wp_redirect( add_query_arg(array('untrashed' => 1, 'conflict' => $permalink_conflict), $sendback) ); 240 245 exit(); 241 246 break; 242 247 -
wp-admin/edit.php
205 205 206 206 if ( isset($_GET['untrashed']) && (int) $_GET['untrashed'] ) { 207 207 printf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $_GET['untrashed'] ), number_format_i18n( $_GET['untrashed'] ) ); 208 if ( isset($_GET['conflict']) && (int) $_GET['conflict']) { 209 echo ' ' . sprintf(__("There was a permalink conflict with the restored post. It's permalink was updated to: %s"), '<a href="' . esc_url( get_permalink( $_GET['conflict'] ) ). '">' .get_permalink( $_GET['conflict'] ).'</a>'); 210 } 208 211 unset($_GET['undeleted']); 209 212 } 210 213