From 58bc356fb085148a3ba2c570205997fe6e9f1d24 Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Wed, 1 Feb 2023 19:45:53 +0000 Subject: [PATCH] Media: Fix upload not visible if added after deleting media. Unset GET parameters in the media library so they don't suppress error notifications and messages. Fix an issue where uploading an image after being redirected from deleting media did not show the new upload in the gallery. Props rnitinb, Mista-Flo, desrosj, zebaafiashama, joedolson, antpb. Fixes #49178. git-svn-id: https://develop.svn.wordpress.org/trunk@55178 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/upload.php | 172 +++++++++++++++++++++------------------- 1 file changed, 90 insertions(+), 82 deletions(-) diff --git a/src/wp-admin/upload.php b/src/wp-admin/upload.php index f03cdad8c1..87078001c4 100644 --- a/src/wp-admin/upload.php +++ b/src/wp-admin/upload.php @@ -13,6 +13,90 @@ if ( ! current_user_can( 'upload_files' ) ) { wp_die( __( 'Sorry, you are not allowed to upload files.' ) ); } +$message = ''; +if ( ! empty( $_GET['posted'] ) ) { + $message = __( 'Media file updated.' ); + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'posted' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['posted'] ); +} + +if ( ! empty( $_GET['attached'] ) && absint( $_GET['attached'] ) ) { + $attached = absint( $_GET['attached'] ); + if ( 1 === $attached ) { + $message = __( 'Media file attached.' ); + } else { + /* translators: %s: Number of media files. */ + $message = _n( '%s media file attached.', '%s media files attached.', $attached ); + } + $message = sprintf( $message, $attached ); + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'detach', 'attached' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['detach'], $_GET['attached'] ); +} + +if ( ! empty( $_GET['detach'] ) && absint( $_GET['detach'] ) ) { + $detached = absint( $_GET['detach'] ); + if ( 1 === $detached ) { + $message = __( 'Media file detached.' ); + } else { + /* translators: %s: Number of media files. */ + $message = _n( '%s media file detached.', '%s media files detached.', $detached ); + } + $message = sprintf( $message, $detached ); + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'detach', 'attached' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['detach'], $_GET['attached'] ); +} + +if ( ! empty( $_GET['deleted'] ) && absint( $_GET['deleted'] ) ) { + $deleted = absint( $_GET['deleted'] ); + if ( 1 === $deleted ) { + $message = __( 'Media file permanently deleted.' ); + } else { + /* translators: %s: Number of media files. */ + $message = _n( '%s media file permanently deleted.', '%s media files permanently deleted.', $deleted ); + } + $message = sprintf( $message, $deleted ); + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'deleted' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['deleted'] ); +} + +if ( ! empty( $_GET['trashed'] ) && absint( $_GET['trashed'] ) ) { + $trashed = absint( $_GET['trashed'] ); + if ( 1 === $trashed ) { + $message = __( 'Media file moved to the Trash.' ); + } else { + /* translators: %s: Number of media files. */ + $message = _n( '%s media file moved to the Trash.', '%s media files moved to the Trash.', $trashed ); + } + $message = sprintf( $message, $trashed ); + $message .= ' ' . __( 'Undo' ) . ''; + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'trashed' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['trashed'] ); +} + +if ( ! empty( $_GET['untrashed'] ) && absint( $_GET['untrashed'] ) ) { + $untrashed = absint( $_GET['untrashed'] ); + if ( 1 === $untrashed ) { + $message = __( 'Media file restored from the Trash.' ); + } else { + /* translators: %s: Number of media files. */ + $message = _n( '%s media file restored from the Trash.', '%s media files restored from the Trash.', $untrashed ); + } + $message = sprintf( $message, $untrashed ); + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'untrashed' ), $_SERVER['REQUEST_URI'] ); + unset( $_GET['untrashed'] ); +} + +$messages[1] = __( 'Media file updated.' ); +$messages[2] = __( 'Media file permanently deleted.' ); +$messages[3] = __( 'Error saving media file.' ); +$messages[4] = __( 'Media file moved to the Trash.' ) . ' ' . __( 'Undo' ) . ''; +$messages[5] = __( 'Media file restored from the Trash.' ); + +if ( ! empty( $_GET['message'] ) && isset( $messages[ $_GET['message'] ] ) ) { + $message = $messages[ $_GET['message'] ]; + $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'message' ), $_SERVER['REQUEST_URI'] ); +} + $mode = get_user_option( 'media_library_mode', get_current_user_id() ) ? get_user_option( 'media_library_mode', get_current_user_id() ) : 'grid'; $modes = array( 'grid', 'list' ); @@ -95,6 +179,10 @@ if ( 'grid' === $mode ) {
+ +

+ +

-' . __( 'Undo' ) . ''; - $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'trashed' ), $_SERVER['REQUEST_URI'] ); -} - -if ( ! empty( $_GET['untrashed'] ) && absint( $_GET['untrashed'] ) ) { - $untrashed = absint( $_GET['untrashed'] ); - if ( 1 === $untrashed ) { - $message = __( 'Media file restored from the Trash.' ); - } else { - /* translators: %s: Number of media files. */ - $message = _n( '%s media file restored from the Trash.', '%s media files restored from the Trash.', $untrashed ); - } - $message = sprintf( $message, number_format_i18n( $untrashed ) ); - $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'untrashed' ), $_SERVER['REQUEST_URI'] ); -} - -$messages[1] = __( 'Media file updated.' ); -$messages[2] = __( 'Media file permanently deleted.' ); -$messages[3] = __( 'Error saving media file.' ); -$messages[4] = __( 'Media file moved to the Trash.' ) . ' ' . __( 'Undo' ) . ''; -$messages[5] = __( 'Media file restored from the Trash.' ); - -if ( ! empty( $_GET['message'] ) && isset( $messages[ $_GET['message'] ] ) ) { - $message = $messages[ $_GET['message'] ]; - $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'message' ), $_SERVER['REQUEST_URI'] ); -} - -if ( ! empty( $message ) ) { - ?> +

- +