<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[55178] trunk/src/wp-admin/upload.php: Media: Fix upload not visible if added after deleting media.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/55178">55178</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/55178","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>joedolson</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2023-02-01 19:45:53 +0000 (Wed, 01 Feb 2023)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>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 <a href="https://core.trac.wordpress.org/ticket/49178">#49178</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminuploadphp">trunk/src/wp-admin/upload.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminuploadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/upload.php     2023-02-01 18:36:08 UTC (rev 55177)
+++ trunk/src/wp-admin/upload.php       2023-02-01 19:45:53 UTC (rev 55178)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,6 +13,90 @@
</span><span class="cx" style="display: block; padding: 0 10px">        wp_die( __( 'Sorry, you are not allowed to upload files.' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$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               .= ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids=' . ( isset( $_GET['ids'] ) ? $_GET['ids'] : '' ), 'bulk-media' ) ) . '">' . __( 'Undo' ) . '</a>';
+       $_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.' ) . ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids=' . ( isset( $_GET['ids'] ) ? $_GET['ids'] : '' ), 'bulk-media' ) ) . '">' . __( 'Undo' ) . '</a>';
+$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'] );
+}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> $mode  = get_user_option( 'media_library_mode', get_current_user_id() ) ? get_user_option( 'media_library_mode', get_current_user_id() ) : 'grid';
</span><span class="cx" style="display: block; padding: 0 10px"> $modes = array( 'grid', 'list' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,6 +179,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <hr class="wp-header-end">
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                <?php if ( ! empty( $message ) ) : ?>
+                       <div id="message" class="updated notice is-dismissible"><p><?php echo $message; ?></p></div>
+               <?php endif; ?>
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 <div class="error hide-if-js">
</span><span class="cx" style="display: block; padding: 0 10px">                        <p>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -297,89 +385,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> <hr class="wp-header-end">
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-$message = '';
-if ( ! empty( $_GET['posted'] ) ) {
-       $message                = __( 'Media file updated.' );
-       $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'posted' ), $_SERVER['REQUEST_URI'] );
-}
-
-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, number_format_i18n( $attached ) );
-       $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'detach', 'attached' ), $_SERVER['REQUEST_URI'] );
-}
-
-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, number_format_i18n( $detached ) );
-       $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'detach', 'attached' ), $_SERVER['REQUEST_URI'] );
-}
-
-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, number_format_i18n( $deleted ) );
-       $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'deleted' ), $_SERVER['REQUEST_URI'] );
-}
-
-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, number_format_i18n( $trashed ) );
-       $message               .= ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids=' . ( isset( $_GET['ids'] ) ? $_GET['ids'] : '' ), 'bulk-media' ) ) . '">' . __( 'Undo' ) . '</a>';
-       $_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.' ) . ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids=' . ( isset( $_GET['ids'] ) ? $_GET['ids'] : '' ), 'bulk-media' ) ) . '">' . __( 'Undo' ) . '</a>';
-$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 ) ) {
-       ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php if ( ! empty( $message ) ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> <div id="message" class="updated notice is-dismissible"><p><?php echo $message; ?></p></div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php } ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php endif; ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> <form id="posts-filter" method="get">
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>