<!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>[40430] trunk/src/wp-includes/media.php: Media: Default to always showing the "Create Audio/Video Playlist" buttons.</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 { 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/40430">40430</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/40430","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>jnylen0</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2017-04-14 11:25:00 +0000 (Fri, 14 Apr 2017)</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: Default to always showing the "Create Audio/Video Playlist" buttons.

This avoids a couple of expensive queries that attempt to determine whether the media library contains any audio or video items, and also makes the UI for creating playlists more discoverable.

<a href="https://core.trac.wordpress.org/changeset/40382">[40382]</a> and <a href="https://core.trac.wordpress.org/changeset/40421">[40421]</a> added filters to allow overriding this behavior; this commit changes the default value of the filters to always show these UI buttons and never run the expensive queries.  The old behavior can still be restored using the filters if desired.

Props sboisvert, adamsilverstein, joemcgill, jnylen0.
Fixes <a href="https://core.trac.wordpress.org/ticket/31071">#31071</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesmediaphp">trunk/src/wp-includes/media.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesmediaphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/media.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/media.php   2017-04-14 09:33:35 UTC (rev 40429)
+++ trunk/src/wp-includes/media.php     2017-04-14 11:25:00 UTC (rev 40430)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3324,18 +3324,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Allows showing or hiding the "Create Audio Playlist" button in the media library.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * By default (if this filter returns `null`), a query will be run to
-        * determine whether the media library contains any audio items.  This
-        * query is expensive for large media libraries, so it may be desirable for
-        * sites to override this behavior.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * By default, the "Create Audio Playlist" button will always be shown in
+        * the media library.  If this filter returns `null`, a query will be run
+        * to determine whether the media library contains any audio items.  This
+        * was the default behavior prior to version 4.8.0, but this query is
+        * expensive for large media libraries.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.7.4
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 4.8.0 The filter's default value is `true` rather than `null`.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @link https://core.trac.wordpress.org/ticket/31071
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param bool|null Whether to show the button, or `null` for default behavior.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param bool|null Whether to show the button, or `null` to decide based
+        *                  on whether any audio files exist in the media library.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $show_audio_playlist = apply_filters( 'media_library_show_audio_playlist', null );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $show_audio_playlist = apply_filters( 'media_library_show_audio_playlist', true );
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( null === $show_audio_playlist ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $show_audio_playlist = $wpdb->get_var( "
</span><span class="cx" style="display: block; padding: 0 10px">                        SELECT ID
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3349,18 +3352,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Allows showing or hiding the "Create Video Playlist" button in the media library.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * By default (if this filter returns `null`), a query will be run to
-        * determine whether the media library contains any video items.  This
-        * query is expensive for large media libraries, so it may be desirable for
-        * sites to override this behavior.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * By default, the "Create Video Playlist" button will always be shown in
+        * the media library.  If this filter returns `null`, a query will be run
+        * to determine whether the media library contains any video items.  This
+        * was the default behavior prior to version 4.8.0, but this query is
+        * expensive for large media libraries.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.7.4
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 4.8.0 The filter's default value is `true` rather than `null`.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @link https://core.trac.wordpress.org/ticket/31071
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param bool|null Whether to show the button, or `null` for default behavior.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param bool|null Whether to show the button, or `null` to decide based
+        *                  on whether any video files exist in the media library.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $show_video_playlist = apply_filters( 'media_library_show_video_playlist', null );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $show_video_playlist = apply_filters( 'media_library_show_video_playlist', true );
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( null === $show_video_playlist ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $show_video_playlist = $wpdb->get_var( "
</span><span class="cx" style="display: block; padding: 0 10px">                        SELECT ID
</span></span></pre>
</div>
</div>

</body>
</html>