WordPress.org

Make WordPress Core

Ticket #41675: #41675-v2.patch

File #41675-v2.patch, 28.1 KB (added by justinahinon, 2 years ago)
  • src/js/media/views/attachments/browser.js

     
    163163                                priority: -90
    164164                        }).render() );
    165165
    166                         // DateFilter is a <select>, screen reader text needs to be rendered before
    167                         this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    168                                 value: l10n.filterByDate,
    169                                 attributes: {
    170                                         'for': 'media-attachment-date-filters'
    171                                 },
    172                                 priority: -75
    173                         }).render() );
    174                         this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
    175                                 controller: this.controller,
    176                                 model:      this.collection.props,
    177                                 priority: -75
    178                         }).render() );
     166                        if ( showMonths ) {
     167                                // DateFilter is a <select>, screen reader text needs to be rendered before
     168                                this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
     169                                        value: l10n.filterByDate,
     170                                        attributes: {
     171                                                'for': 'media-attachment-date-filters'
     172                                        },
     173                                        priority: -75
     174                                }).render() );
     175                                this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
     176                                        controller: this.controller,
     177                                        model:      this.collection.props,
     178                                        priority: -75
     179                                }).render() );
     180                        }
    179181
    180182                        // BulkSelection is a <div> with subviews, including screen reader text
    181183                        this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({
     
    284286                                }).render() );
    285287                        }
    286288
    287                 } else if ( this.options.date ) {
     289                } else if ( showMonths && this.options.date ) {
    288290                        // DateFilter is a <select>, screen reader text needs to be rendered before
    289291                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    290292                                value: l10n.filterByDate,
  • src/wp-includes/media.php

     
    1717 */
    1818function wp_get_additional_image_sizes() {
    1919        global $_wp_additional_image_sizes;
    20 
    2120        if ( ! $_wp_additional_image_sizes ) {
    2221                $_wp_additional_image_sizes = array();
    2322        }
    24 
    2523        return $_wp_additional_image_sizes;
    2624}
    2725
     
    6866        if ( is_array( $size ) ) {
    6967                $max_width  = $size[0];
    7068                $max_height = $size[1];
    71         } elseif ( $size === 'thumb' || $size === 'thumbnail' ) {
     69        } elseif ( $size == 'thumb' || $size == 'thumbnail' ) {
    7270                $max_width  = intval( get_option( 'thumbnail_size_w' ) );
    7371                $max_height = intval( get_option( 'thumbnail_size_h' ) );
    7472                // last chance thumbnail size defaults
     
    7674                        $max_width  = 128;
    7775                        $max_height = 96;
    7876                }
    79         } elseif ( $size === 'medium' ) {
     77        } elseif ( $size == 'medium' ) {
    8078                $max_width  = intval( get_option( 'medium_size_w' ) );
    8179                $max_height = intval( get_option( 'medium_size_h' ) );
    8280
    83         } elseif ( $size === 'medium_large' ) {
     81        } elseif ( $size == 'medium_large' ) {
    8482                $max_width  = intval( get_option( 'medium_large_size_w' ) );
    8583                $max_height = intval( get_option( 'medium_large_size_h' ) );
    8684
     
    8785                if ( intval( $content_width ) > 0 ) {
    8886                        $max_width = min( intval( $content_width ), $max_width );
    8987                }
    90         } elseif ( $size === 'large' ) {
     88        } elseif ( $size == 'large' ) {
    9189                /*
    9290                 * We're inserting a large size image into the editor. If it's a really
    9391                 * big image we'll scale it down to fit reasonably within the editor
     
    9694                 */
    9795                $max_width  = intval( get_option( 'large_size_w' ) );
    9896                $max_height = intval( get_option( 'large_size_h' ) );
    99 
    10097                if ( intval( $content_width ) > 0 ) {
    10198                        $max_width = min( intval( $content_width ), $max_width );
    10299                }
    103         } elseif ( ! empty( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ), true ) ) {
     100        } elseif ( ! empty( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) {
    104101                $max_width  = intval( $_wp_additional_image_sizes[ $size ]['width'] );
    105102                $max_height = intval( $_wp_additional_image_sizes[ $size ]['height'] );
    106103                // Only in admin. Assume that theme authors know what they're doing.
     
    198195         * @param array|string $size     Size of image. Image size or array of width and height values (in that order).
    199196         *                               Default 'medium'.
    200197         */
    201         $out = apply_filters( 'image_downsize', false, $id, $size );
    202 
    203         if ( $out ) {
     198        if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) {
    204199                return $out;
    205200        }
    206201
    207202        $img_url          = wp_get_attachment_url( $id );
    208203        $meta             = wp_get_attachment_metadata( $id );
    209         $width            = 0;
    210         $height           = 0;
     204        $width            = $height = 0;
    211205        $is_intermediate  = false;
    212206        $img_url_basename = wp_basename( $img_url );
    213207
     
    225219        }
    226220
    227221        // try for a new style intermediate size
    228         $intermediate = image_get_intermediate_size( $id, $size );
    229 
    230         if ( $intermediate ) {
     222        if ( $intermediate = image_get_intermediate_size( $id, $size ) ) {
    231223                $img_url         = str_replace( $img_url_basename, $intermediate['file'], $img_url );
    232224                $width           = $intermediate['width'];
    233225                $height          = $intermediate['height'];
    234226                $is_intermediate = true;
    235         } elseif ( $size === 'thumbnail' ) {
     227        } elseif ( $size == 'thumbnail' ) {
    236228                // fall back to the old thumbnail
    237                 $thumb_file = wp_get_attachment_thumb_file( $id );
    238                 $info       = null;
    239 
    240                 if ( $thumb_file ) {
    241                         $info = @getimagesize( $thumb_file );
    242                 }
    243 
    244                 if ( $thumb_file && $info ) {
     229                if ( ( $thumb_file = wp_get_attachment_thumb_file( $id ) ) && $info = getimagesize( $thumb_file ) ) {
    245230                        $img_url         = str_replace( $img_url_basename, wp_basename( $thumb_file ), $img_url );
    246231                        $width           = $info[0];
    247232                        $height          = $info[1];
     
    248233                        $is_intermediate = true;
    249234                }
    250235        }
    251 
    252236        if ( ! $width && ! $height && isset( $meta['width'], $meta['height'] ) ) {
    253237                // any other type: use the real image
    254238                $width  = $meta['width'];
     
    261245
    262246                return array( $img_url, $width, $height, $is_intermediate );
    263247        }
     248        return false;
    264249
    265         return false;
    266250}
    267251
    268252/**
     
    428412                return array( $current_width, $current_height );
    429413        }
    430414
    431         $width_ratio  = 1.0;
    432         $height_ratio = 1.0;
    433         $did_width    = false;
    434         $did_height   = false;
     415        $width_ratio = $height_ratio = 1.0;
     416        $did_width   = $did_height = false;
    435417
    436418        if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width ) {
    437419                $width_ratio = $max_width / $current_width;
     
    464446        // Thus we look for dimensions that are one pixel shy of the max value and bump them up
    465447
    466448        // Note: $did_width means it is possible $smaller_ratio == $width_ratio.
    467         if ( $did_width && $w === $max_width - 1 ) {
     449        if ( $did_width && $w == $max_width - 1 ) {
    468450                $w = $max_width; // Round it up
    469451        }
    470452
    471453        // Note: $did_height means it is possible $smaller_ratio == $height_ratio.
    472         if ( $did_height && $h === $max_height - 1 ) {
     454        if ( $did_height && $h == $max_height - 1 ) {
    473455                $h = $max_height; // Round it up
    474456        }
    475457
     
    538520         *                           An array can specify positioning of the crop area. Default false.
    539521         */
    540522        $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop );
    541 
    542523        if ( null !== $output ) {
    543524                return $output;
    544525        }
     
    595576        }
    596577
    597578        // if the resulting image would be the same size or larger we don't want to resize it
    598         if ( $new_w >= $orig_w && $new_h >= $orig_h && intval( $dest_w ) !== intval( $orig_w ) && intval( $dest_h ) !== intval( $orig_h ) ) {
     579        if ( $new_w >= $orig_w && $new_h >= $orig_h && $dest_w != $orig_w && $dest_h != $orig_h ) {
    599580                return false;
    600581        }
    601582
     
    706687 * }
    707688 */
    708689function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
    709         $imagedata = wp_get_attachment_metadata( $post_id );
    710 
    711         if ( ! $size || ! is_array( $imagedata ) || empty( $imagedata['sizes'] ) ) {
     690        if ( ! $size || ! is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) || empty( $imagedata['sizes'] ) ) {
    712691                return false;
    713692        }
    714693
     
    725704
    726705                foreach ( $imagedata['sizes'] as $_size => $data ) {
    727706                        // If there's an exact match to an existing image size, short circuit.
    728                         if ( intval( $data['width'] ) === intval( $size[0] ) && intval( $data['height'] ) === intval( $size[1] ) ) {
     707                        if ( $data['width'] == $size[0] && $data['height'] == $size[1] ) {
    729708                                $candidates[ $data['width'] * $data['height'] ] = $data;
    730709                                break;
    731710                        }
     
    806785 * @return array Returns a filtered array of image size strings.
    807786 */
    808787function get_intermediate_image_sizes() {
    809         $default_sizes    = array( 'thumbnail', 'medium', 'medium_large', 'large' );
    810         $additional_sizes = wp_get_additional_image_sizes();
    811 
    812         if ( ! empty( $additional_sizes ) ) {
    813                 $default_sizes = array_merge( $default_sizes, array_keys( $additional_sizes ) );
     788        $_wp_additional_image_sizes = wp_get_additional_image_sizes();
     789        $image_sizes                = array( 'thumbnail', 'medium', 'medium_large', 'large' ); // Standard sizes
     790        if ( ! empty( $_wp_additional_image_sizes ) ) {
     791                $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
    814792        }
    815793
    816794        /**
     
    818796         *
    819797         * @since 2.5.0
    820798         *
    821          * @param array $default_sizes An array of intermediate image sizes. Defaults
    822          *                             are 'thumbnail', 'medium', 'medium_large', 'large'.
     799         * @param array $image_sizes An array of intermediate image sizes. Defaults
     800         *                           are 'thumbnail', 'medium', 'medium_large', 'large'.
    823801         */
    824         return apply_filters( 'intermediate_image_sizes', $default_sizes );
     802        return apply_filters( 'intermediate_image_sizes', $image_sizes );
    825803}
    826804
    827805/**
    828  * Returns a normalized list of all currently registered image sub-sizes.
    829  *
    830  * @since 5.3.0
    831  * @uses wp_get_additional_image_sizes()
    832  * @uses get_intermediate_image_sizes()
    833  *
    834  * @return array Associative array of the registered image sub-sizes.
    835  */
    836 function wp_get_registered_image_subsizes() {
    837         $additional_sizes = wp_get_additional_image_sizes();
    838         $all_sizes        = array();
    839 
    840         foreach ( get_intermediate_image_sizes() as $size_name ) {
    841                 $size_data = array(
    842                         'width'  => 0,
    843                         'height' => 0,
    844                         'crop'   => false,
    845                 );
    846 
    847                 if ( isset( $additional_sizes[ $size_name ]['width'] ) ) {
    848                         // For sizes added by plugins and themes.
    849                         $size_data['width'] = intval( $additional_sizes[ $size_name ]['width'] );
    850                 } else {
    851                         // For default sizes set in options.
    852                         $size_data['width'] = intval( get_option( "{$size_name}_size_w" ) );
    853                 }
    854 
    855                 if ( isset( $additional_sizes[ $size_name ]['height'] ) ) {
    856                         $size_data['height'] = intval( $additional_sizes[ $size_name ]['height'] );
    857                 } else {
    858                         $size_data['height'] = intval( get_option( "{$size_name}_size_h" ) );
    859                 }
    860 
    861                 if ( empty( $size_data['width'] ) && empty( $size_data['height'] ) ) {
    862                         // This size isn't set.
    863                         continue;
    864                 }
    865 
    866                 if ( isset( $additional_sizes[ $size_name ]['crop'] ) ) {
    867                         $size_data['crop'] = $additional_sizes[ $size_name ]['crop'];
    868                 } else {
    869                         $size_data['crop'] = get_option( "{$size_name}_crop" );
    870                 }
    871 
    872                 if ( ! is_array( $size_data['crop'] ) || empty( $size_data['crop'] ) ) {
    873                         $size_data['crop'] = (bool) $size_data['crop'];
    874                 }
    875 
    876                 $all_sizes[ $size_name ] = $size_data;
    877         }
    878 
    879         return $all_sizes;
    880 }
    881 
    882 /**
    883806 * Retrieve an image to represent an attachment.
    884807 *
    885808 * A mime icon for files, thumbnail or intermediate size for images.
     
    903826        if ( ! $image ) {
    904827                $src = false;
    905828
    906                 if ( $icon ) {
    907                         $src = wp_mime_type_icon( $attachment_id );
     829                if ( $icon && $src = wp_mime_type_icon( $attachment_id ) ) {
     830                        /** This filter is documented in wp-includes/post.php */
     831                        $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );
    908832
    909                         if ( $src ) {
    910                                 /** This filter is documented in wp-includes/post.php */
    911                                 $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );
    912 
    913                                 $src_file               = $icon_dir . '/' . wp_basename( $src );
    914                                 list( $width, $height ) = @getimagesize( $src_file );
    915                         }
     833                        $src_file                = $icon_dir . '/' . wp_basename( $src );
     834                        @list( $width, $height ) = getimagesize( $src_file );
    916835                }
    917836
    918837                if ( $src && $width && $height ) {
     
    10951014 * @return string|bool A 'srcset' value string or false.
    10961015 */
    10971016function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $image_meta = null ) {
    1098         $image = wp_get_attachment_image_src( $attachment_id, $size );
    1099 
    1100         if ( ! $image ) {
     1017        if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
    11011018                return false;
    11021019        }
    11031020
     
    12291146
    12301147                // If the file name is part of the `src`, we've confirmed a match.
    12311148                if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image['file'] ) ) {
    1232                         $src_matched = true;
    1233                         $is_src      = true;
     1149                        $src_matched = $is_src = true;
    12341150                }
    12351151
    12361152                // Filter out images that are from previous edits.
     
    13161232 * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
    13171233 */
    13181234function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    1319         $image = wp_get_attachment_image_src( $attachment_id, $size );
    1320 
    1321         if ( ! $image ) {
     1235        if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
    13221236                return false;
    13231237        }
    13241238
     
    14041318                return $content;
    14051319        }
    14061320
    1407         $selected_images = array();
    1408         $attachment_ids  = array();
     1321        $selected_images = $attachment_ids = array();
    14091322
    14101323        foreach ( $matches[0] as $image ) {
    1411                 if ( false === strpos( $image, ' srcset=' ) && preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) ) {
    1412                         $attachment_id = absint( $class_id[1] );
     1324                if ( false === strpos( $image, ' srcset=' ) && preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) &&
     1325                        ( $attachment_id = absint( $class_id[1] ) ) ) {
    14131326
    1414                         if ( $attachment_id ) {
    1415                                 /*
    1416                                  * If exactly the same image tag is used more than once, overwrite it.
    1417                                  * All identical tags will be replaced later with 'str_replace()'.
    1418                                  */
    1419                                 $selected_images[ $image ] = $attachment_id;
    1420                                 // Overwrite the ID when the same image is included more than once.
    1421                                 $attachment_ids[ $attachment_id ] = true;
    1422                         }
     1327                        /*
     1328                         * If exactly the same image tag is used more than once, overwrite it.
     1329                         * All identical tags will be replaced later with 'str_replace()'.
     1330                         */
     1331                        $selected_images[ $image ] = $attachment_id;
     1332                        // Overwrite the ID when the same image is included more than once.
     1333                        $attachment_ids[ $attachment_id ] = true;
    14231334                }
    14241335        }
    14251336
     
    16281539         * @param string $content The image element, possibly wrapped in a hyperlink.
    16291540         */
    16301541        $output = apply_filters( 'img_caption_shortcode', '', $attr, $content );
    1631 
    1632         if ( ! empty( $output ) ) {
     1542        if ( $output != '' ) {
    16331543                return $output;
    16341544        }
    16351545
     
    16471557        );
    16481558
    16491559        $atts['width'] = (int) $atts['width'];
    1650 
    16511560        if ( $atts['width'] < 1 || empty( $atts['caption'] ) ) {
    16521561                return $content;
    16531562        }
    16541563
    1655         $id          = '';
    1656         $caption_id  = '';
    1657         $describedby = '';
     1564        $id = $caption_id = $describedby = '';
    16581565
    16591566        if ( $atts['id'] ) {
    16601567                $atts['id'] = sanitize_html_class( $atts['id'] );
     
    16961603        $caption_width = apply_filters( 'img_caption_shortcode_width', $width, $atts, $content );
    16971604
    16981605        $style = '';
    1699 
    17001606        if ( $caption_width ) {
    17011607                $style = 'style="width: ' . (int) $caption_width . 'px" ';
    17021608        }
     
    17991705         * @param int    $instance Unique numeric ID of this gallery shortcode instance.
    18001706         */
    18011707        $output = apply_filters( 'post_gallery', '', $attr, $instance );
    1802 
    1803         if ( ! empty( $output ) ) {
     1708        if ( $output != '' ) {
    18041709                return $output;
    18051710        }
    18061711
     
    19451850        $output = apply_filters( 'gallery_style', $gallery_style . $gallery_div );
    19461851
    19471852        $i = 0;
    1948 
    19491853        foreach ( $attachments as $id => $attachment ) {
    19501854
    19511855                $attr = ( trim( $attachment->post_excerpt ) ) ? array( 'aria-describedby' => "$selector-$id" ) : '';
    1952 
    19531856                if ( ! empty( $atts['link'] ) && 'file' === $atts['link'] ) {
    19541857                        $image_output = wp_get_attachment_link( $id, $atts['size'], false, false, false, $attr );
    19551858                } elseif ( ! empty( $atts['link'] ) && 'none' === $atts['link'] ) {
     
    19571860                } else {
    19581861                        $image_output = wp_get_attachment_link( $id, $atts['size'], true, false, false, $attr );
    19591862                }
    1960 
    19611863                $image_meta = wp_get_attachment_metadata( $id );
    19621864
    19631865                $orientation = '';
    1964 
    19651866                if ( isset( $image_meta['height'], $image_meta['width'] ) ) {
    19661867                        $orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
    19671868                }
    1968 
    19691869                $output .= "<{$itemtag} class='gallery-item'>";
    19701870                $output .= "
    19711871                        <{$icontag} class='gallery-icon {$orientation}'>
    19721872                                $image_output
    19731873                        </{$icontag}>";
    1974 
    19751874                if ( $captiontag && trim( $attachment->post_excerpt ) ) {
    19761875                        $output .= "
    19771876                                <{$captiontag} class='wp-caption-text gallery-caption' id='$selector-$id'>
     
    19781877                                " . wptexturize( $attachment->post_excerpt ) . "
    19791878                                </{$captiontag}>";
    19801879                }
    1981 
    19821880                $output .= "</{$itemtag}>";
    1983 
    1984                 if ( ! $html5 && $columns > 0 && ++$i % $columns === 0 ) {
     1881                if ( ! $html5 && $columns > 0 && ++$i % $columns == 0 ) {
    19851882                        $output .= '<br style="clear: both" />';
    19861883                }
    19871884        }
     
    21282025         * @param int    $instance Unique numeric ID of this playlist shortcode instance.
    21292026         */
    21302027        $output = apply_filters( 'post_playlist', '', $attr, $instance );
    2131 
    2132         if ( ! empty( $output ) ) {
     2028        if ( $output != '' ) {
    21332029                return $output;
    21342030        }
    21352031
     
    24392335         * @param int    $instance Unique numeric ID of this audio shortcode instance.
    24402336         */
    24412337        $override = apply_filters( 'wp_audio_shortcode_override', '', $attr, $content, $instance );
    2442 
    24432338        if ( '' !== $override ) {
    24442339                return $override;
    24452340        }
     
    24642359        $primary = false;
    24652360        if ( ! empty( $atts['src'] ) ) {
    24662361                $type = wp_check_filetype( $atts['src'], wp_get_mime_types() );
    2467 
    2468                 if ( ! in_array( strtolower( $type['ext'] ), $default_types, true ) ) {
     2362                if ( ! in_array( strtolower( $type['ext'] ), $default_types ) ) {
    24692363                        return sprintf( '<a class="wp-embedded-audio" href="%s">%s</a>', esc_url( $atts['src'] ), esc_html( $atts['src'] ) );
    24702364                }
    2471 
    24722365                $primary = true;
    24732366                array_unshift( $default_types, 'src' );
    24742367        } else {
     
    24752368                foreach ( $default_types as $ext ) {
    24762369                        if ( ! empty( $atts[ $ext ] ) ) {
    24772370                                $type = wp_check_filetype( $atts[ $ext ], wp_get_mime_types() );
    2478 
    24792371                                if ( strtolower( $type['ext'] ) === $ext ) {
    24802372                                        $primary = true;
    24812373                                }
     
    24852377
    24862378        if ( ! $primary ) {
    24872379                $audios = get_attached_media( 'audio', $post_id );
    2488 
    24892380                if ( empty( $audios ) ) {
    24902381                        return;
    24912382                }
     
    24922383
    24932384                $audio       = reset( $audios );
    24942385                $atts['src'] = wp_get_attachment_url( $audio->ID );
    2495 
    24962386                if ( empty( $atts['src'] ) ) {
    24972387                        return;
    24982388                }
     
    25082398         * @param string $library Media library used for the audio shortcode.
    25092399         */
    25102400        $library = apply_filters( 'wp_audio_shortcode_library', 'mediaelement' );
    2511 
    25122401        if ( 'mediaelement' === $library && did_action( 'init' ) ) {
    25132402                wp_enqueue_style( 'wp-mediaelement' );
    25142403                wp_enqueue_script( 'wp-mediaelement' );
     
    25422431        }
    25432432
    25442433        $attr_strings = array();
    2545 
    25462434        foreach ( $html_atts as $k => $v ) {
    25472435                $attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
    25482436        }
    25492437
    25502438        $html = '';
    2551 
    25522439        if ( 'mediaelement' === $library && 1 === $instance ) {
    25532440                $html .= "<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->\n";
    25542441        }
    2555 
    25562442        $html .= sprintf( '<audio %s controls="controls">', join( ' ', $attr_strings ) );
    25572443
    25582444        $fileurl = '';
    25592445        $source  = '<source type="%s" src="%s" />';
    2560 
    25612446        foreach ( $default_types as $fallback ) {
    25622447                if ( ! empty( $atts[ $fallback ] ) ) {
    25632448                        if ( empty( $fileurl ) ) {
    25642449                                $fileurl = $atts[ $fallback ];
    25652450                        }
    2566 
    25672451                        $type  = wp_check_filetype( $atts[ $fallback ], wp_get_mime_types() );
    25682452                        $url   = add_query_arg( '_', $instance, $atts[ $fallback ] );
    25692453                        $html .= sprintf( $source, $type['type'], esc_url( $url ) );
     
    25732457        if ( 'mediaelement' === $library ) {
    25742458                $html .= wp_mediaelement_fallback( $fileurl );
    25752459        }
    2576 
    25772460        $html .= '</audio>';
    25782461
    25792462        /**
     
    26612544         * @param int    $instance Unique numeric ID of this video shortcode instance.
    26622545         */
    26632546        $override = apply_filters( 'wp_video_shortcode_override', '', $attr, $content, $instance );
    2664 
    26652547        if ( '' !== $override ) {
    26662548                return $override;
    26672549        }
     
    27002582                }
    27012583        }
    27022584
    2703         $is_vimeo      = false;
    2704         $is_youtube    = false;
     2585        $is_vimeo      = $is_youtube = false;
    27052586        $yt_pattern    = '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#';
    27062587        $vimeo_pattern = '#^https?://(.+\.)?vimeo\.com/.*#';
    27072588
     
    27092590        if ( ! empty( $atts['src'] ) ) {
    27102591                $is_vimeo   = ( preg_match( $vimeo_pattern, $atts['src'] ) );
    27112592                $is_youtube = ( preg_match( $yt_pattern, $atts['src'] ) );
    2712 
    27132593                if ( ! $is_youtube && ! $is_vimeo ) {
    27142594                        $type = wp_check_filetype( $atts['src'], wp_get_mime_types() );
    2715 
    2716                         if ( ! in_array( strtolower( $type['ext'] ), $default_types, true ) ) {
     2595                        if ( ! in_array( strtolower( $type['ext'] ), $default_types ) ) {
    27172596                                return sprintf( '<a class="wp-embedded-video" href="%s">%s</a>', esc_url( $atts['src'] ), esc_html( $atts['src'] ) );
    27182597                        }
    27192598                }
     
    29342813        );
    29352814
    29362815        foreach ( $attachments as $k => $attachment ) {
    2937                 if ( intval( $attachment->ID ) === intval( $post->ID ) ) {
     2816                if ( $attachment->ID == $post->ID ) {
    29382817                        break;
    29392818                }
    29402819        }
     
    29872866        } elseif ( is_array( $attachment ) ) {
    29882867                $attachment = (object) $attachment;
    29892868        }
    2990 
    29912869        if ( ! is_object( $attachment ) ) {
    29922870                return array();
    29932871        }
     
    30002878        if ( false !== strpos( $filename, '.' ) ) {
    30012879                $objects[] = 'attachment:' . substr( $filename, strrpos( $filename, '.' ) + 1 );
    30022880        }
    3003 
    30042881        if ( ! empty( $attachment->post_mime_type ) ) {
    30052882                $objects[] = 'attachment:' . $attachment->post_mime_type;
    3006 
    30072883                if ( false !== strpos( $attachment->post_mime_type, '/' ) ) {
    30082884                        foreach ( explode( '/', $attachment->post_mime_type ) as $token ) {
    30092885                                if ( ! empty( $token ) ) {
     
    30142890        }
    30152891
    30162892        $taxonomies = array();
    3017 
    30182893        foreach ( $objects as $object ) {
    3019                 $taxes = get_object_taxonomies( $object, $output );
    3020 
    3021                 if ( $taxes ) {
     2894                if ( $taxes = get_object_taxonomies( $object, $output ) ) {
    30222895                        $taxonomies = array_merge( $taxonomies, $taxes );
    30232896                }
    30242897        }
     
    30442917 */
    30452918function get_taxonomies_for_attachments( $output = 'names' ) {
    30462919        $taxonomies = array();
    3047 
    30482920        foreach ( get_taxonomies( array(), 'objects' ) as $taxonomy ) {
    30492921                foreach ( $taxonomy->object_type as $object_type ) {
    3050                         if ( 'attachment' === $object_type || 0 === strpos( $object_type, 'attachment:' ) ) {
    3051                                 if ( 'names' === $output ) {
     2922                        if ( 'attachment' == $object_type || 0 === strpos( $object_type, 'attachment:' ) ) {
     2923                                if ( 'names' == $output ) {
    30522924                                        $taxonomies[] = $taxonomy->name;
    30532925                                } else {
    30542926                                        $taxonomies[ $taxonomy->name ] = $taxonomy;
     
    33213193 * @return array|void Array of attachment details.
    33223194 */
    33233195function wp_prepare_attachment_for_js( $attachment ) {
    3324         $attachment = get_post( $attachment );
    3325 
    3326         if ( ! $attachment ) {
     3196        if ( ! $attachment = get_post( $attachment ) ) {
    33273197                return;
    33283198        }
    33293199
    3330         if ( 'attachment' !== $attachment->post_type ) {
     3200        if ( 'attachment' != $attachment->post_type ) {
    33313201                return;
    33323202        }
    33333203
     
    34463316                foreach ( $possible_sizes as $size => $label ) {
    34473317
    34483318                        /** This filter is documented in wp-includes/media.php */
    3449                         $downsize = apply_filters( 'image_downsize', false, $attachment->ID, $size );
    3450 
    3451                         if ( $downsize ) {
     3319                        if ( $downsize = apply_filters( 'image_downsize', false, $attachment->ID, $size ) ) {
    34523320                                if ( empty( $downsize[3] ) ) {
    34533321                                        continue;
    34543322                                }
     
    35603428 * @since 3.5.0
    35613429 *
    35623430 * @global int       $content_width
    3563  * @global wpdb      $wpdb          WordPress database abstraction object.
    3564  * @global WP_Locale $wp_locale     WordPress date and time locale object.
     3431 * @global wpdb      $wpdb
     3432 * @global WP_Locale $wp_locale
    35653433 *
    35663434 * @param array $args {
    35673435 *     Arguments for enqueuing media scripts.
     
    36753543        }
    36763544
    36773545        /**
    3678          * Allows overriding the list of months displayed in the media library.
     3546         * Allows showing or hiding the months select in the media library.
    36793547         *
    3680          * By default (if this filter does not return an array), a query will be
    3681          * run to determine the months that have media items.  This query can be
    3682          * expensive for large media libraries, so it may be desirable for sites to
    3683          * override this behavior.
     3548         * By default, the months select will always be shown in the media library
     3549         * and a list of months will be generated to populate the select with.
     3550         * If `false` is returned the 'media_library_months_with_files' filter
     3551         * will not be run and no select will be shown.
    36843552         *
    36853553         * @since 4.7.4
    36863554         *
    36873555         * @link https://core.trac.wordpress.org/ticket/31071
    36883556         *
     3557         * @link https://core.trac.wordpress.org/ticket/41675
     3558         *
    36893559         * @param array|null An array of objects with `month` and `year`
    36903560         *                   properties, or `null` (or any other non-array value)
    36913561         *                   for default behavior.
    36923562         */
     3563        $show_months_select = apply_filters( 'media_library_months_with_files', true );
     3564        $months = null;
    36933565        $months = apply_filters( 'media_library_months_with_files', null );
    3694         if ( ! is_array( $months ) ) {
    3695                 $months = $wpdb->get_results(
    3696                         $wpdb->prepare(
    3697                                 "
    3698                         SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
    3699                         FROM $wpdb->posts
    3700                         WHERE post_type = %s
    3701                         ORDER BY post_date DESC
    3702                 ",
    3703                                 'attachment'
    3704                         )
    3705                 );
     3566        if ( $show_months_select === true ) {
     3567                if ( ! is_array( $months ) ) {
     3568                        $months = $wpdb->get_results(
     3569                                $wpdb->prepare(
     3570                                        "
     3571                                SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
     3572                                FROM $wpdb->posts
     3573                                WHERE post_type = %s
     3574                                ORDER BY post_date DESC
     3575                        ",
     3576                                        'attachment'
     3577                                )
     3578                        );
     3579                }
     3580                foreach ( $months as $month_year ) {
     3581                        $month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
     3582                }
    37063583        }
    3707         foreach ( $months as $month_year ) {
    3708                 $month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
    3709         }
    37103584
    37113585        $settings = array(
    37123586                'tabs'             => $tabs,
     
    37303604                'embedMimes'       => $ext_mimes,
    37313605                'contentWidth'     => $content_width,
    37323606                'months'           => $months,
     3607                'showMonths'       => $show_months_select,
    37333608                'mediaTrash'       => MEDIA_TRASH ? 1 : 0,
    37343609        );
    37353610
     
    39483823 * @return array Found attachments.
    39493824 */
    39503825function get_attached_media( $type, $post = 0 ) {
    3951         $post = get_post( $post );
    3952 
    3953         if ( ! $post ) {
     3826        if ( ! $post = get_post( $post ) ) {
    39543827                return array();
    39553828        }
    39563829
     
    40403913 *               from the expanded shortcode.
    40413914 */
    40423915function get_post_galleries( $post, $html = true ) {
    4043         $post = get_post( $post );
    4044 
    4045         if ( ! $post ) {
     3916        if ( ! $post = get_post( $post ) ) {
    40463917                return array();
    40473918        }
    40483919
     
    41634034 * @param WP_Post $attachment Attachment object.
    41644035 */
    41654036function wp_maybe_generate_attachment_metadata( $attachment ) {
    4166         if ( empty( $attachment ) || empty( $attachment->ID ) ) {
     4037        if ( empty( $attachment ) || ( empty( $attachment->ID ) || ! $attachment_id = (int) $attachment->ID ) ) {
    41674038                return;
    41684039        }
    41694040
    4170         $attachment_id = (int) $attachment->ID;
    4171         $file          = get_attached_file( $attachment_id );
    4172         $meta          = wp_get_attachment_metadata( $attachment_id );
    4173 
     4041        $file = get_attached_file( $attachment_id );
     4042        $meta = wp_get_attachment_metadata( $attachment_id );
    41744043        if ( empty( $meta ) && file_exists( $file ) ) {
    4175                 $_meta = get_post_meta( $attachment_id );
    4176                 $_lock = 'wp_generating_att_' . $attachment_id;
    4177 
    4178                 if ( ! array_key_exists( '_wp_attachment_metadata', $_meta ) && ! get_transient( $_lock ) ) {
    4179                         set_transient( $_lock, $file );
     4044                $_meta             = get_post_meta( $attachment_id );
     4045                $regeneration_lock = 'wp_generating_att_' . $attachment_id;
     4046                if ( ! array_key_exists( '_wp_attachment_metadata', $_meta ) && ! get_transient( $regeneration_lock ) ) {
     4047                        set_transient( $regeneration_lock, $file );
    41804048                        wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
    4181                         delete_transient( $_lock );
     4049                        delete_transient( $regeneration_lock );
    41824050                }
    41834051        }
    41844052}
     
    42114079                $path = substr( $path, strlen( $dir['baseurl'] . '/' ) );
    42124080        }
    42134081
    4214         $sql = $wpdb->prepare(
     4082        $sql     = $wpdb->prepare(
    42154083                "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s",
    42164084                $path
    42174085        );
    4218 
    42194086        $post_id = $wpdb->get_var( $sql );
    42204087
    42214088        /**