Make WordPress Core

Ticket #28619: 28619.4.patch

File 28619.4.patch, 7.2 KB (added by Fab1en, 10 years ago)
  • wp-includes/media.php

    diff --git a/wp-includes/media.php b/wp-includes/media.php
    index 974aa79..216f6fc 100644
    a b function wp_audio_shortcode( $attr, $content = '' ) { 
    15711571                $attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
    15721572        }
    15731573
    1574         $html = '';
    1575         if ( 'mediaelement' === $library && 1 === $instances )
    1576                 $html .= "<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->\n";
     1574        /**
     1575         * Filters the HTML added inside the audio shortcode output.
     1576         *
     1577         * Give the possibility to insert some HTML code before the <audio> tag
     1578         * generated by an audio shortcode.
     1579         *
     1580         * @since 4.0.0
     1581         *
     1582         * @param string $html      Empty variable to be replaced with the HTML snippet to insert before the <audio> tag.
     1583         * @param string $library   Media library used for the audio shortcode.
     1584         * @param int    $instances Unique numeric ID of this audio shortcode instance.
     1585         */
     1586        $html = apply_filters('wp_audio_shortcode_pre_html', '', $library, $instances);
    15771587        $html .= sprintf( '<audio %s controls="controls">', join( ' ', $attr_strings ) );
    15781588
    15791589        $fileurl = '';
    function wp_audio_shortcode( $attr, $content = '' ) { 
    15881598                }
    15891599        }
    15901600
    1591         if ( 'mediaelement' === $library )
    1592                 $html .= wp_mediaelement_fallback( $fileurl );
     1601        /**
     1602         * Filters the HTML added inside the audio shortcode output.
     1603         *
     1604         * Give the possibility to insert some HTML code inside the <audio> tag
     1605         * generated by an audio shortcode.
     1606         *
     1607         * @since 4.0.0
     1608         *
     1609         * @param string $html    Empty variable to be replaced with the HTML snippet to append into the <audio> tag.
     1610         * @param string $library Media library used for the audio shortcode.
     1611         * @param string $fileurl The URL of the audio file.
     1612         * @param int    $post_id Post ID.
     1613         */
     1614        $html .= apply_filters('wp_audio_shortcode_inside_html', '', $library, $fileurl, $post_id);
    15931615        $html .= '</audio>';
    15941616
    15951617        /**
    function wp_audio_shortcode( $attr, $content = '' ) { 
    16071629}
    16081630add_shortcode( 'audio', 'wp_audio_shortcode' );
    16091631
     1632function wp_mediaelement_audio_shortcode_pre_html($html, $library, $instances) {
     1633        if ( 'mediaelement' === $library && 1 === $instances )
     1634                $html .= "<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->\n";
     1635        return $html;
     1636}
     1637add_filter('wp_audio_shortcode_pre_html', 'wp_mediaelement_audio_shortcode_pre_html', 10, 3);
     1638
     1639function wp_mediaelement_audio_shortcode_inside_html($html, $library, $fileurl, $post_id) {
     1640        if ( 'mediaelement' === $library )
     1641                $html .= wp_mediaelement_fallback( $fileurl );
     1642        return $html;
     1643}
     1644add_filter('wp_audio_shortcode_inside_html', 'wp_mediaelement_audio_shortcode_inside_html', 10, 4);
     1645
    16101646/**
    16111647 * Return a filtered list of WP-supported video formats
    16121648 *
    function wp_video_shortcode( $attr, $content = '' ) { 
    17111747                }
    17121748        }
    17131749
    1714         $yt_pattern = '#^https?://(:?www\.)?(:?youtube\.com/watch|youtu\.be/)#';
     1750        /**
     1751         * Filters the default external video providers patterns used for the video shortcode.
     1752         *
     1753         * @since 4.0.0
     1754         *
     1755         * @param array $patterns An associative array listing the external video providers.
     1756         */
     1757        $ext_providers_patterns = apply_filters( 'wp_video_external_providers', array(
     1758                'youtube' => array(
     1759                        'pattern' => '#^https?://(:?www\.)?(:?youtube\.com/watch|youtu\.be/)#',
     1760                        'mimetype'    => 'video/youtube',
     1761                ),
     1762        ));
    17151763
    17161764        $primary = false;
     1765        $match = false;
    17171766        if ( ! empty( $src ) ) {
    1718                 if ( ! preg_match( $yt_pattern, $src ) ) {
     1767                foreach($ext_providers_patterns as $provider) {
     1768                        if( preg_match( $provider['pattern'], $src ) ) {
     1769                                $match = true;
     1770                                break;
     1771                        }
     1772                }
     1773                if ( ! $match ) {
    17191774                        $type = wp_check_filetype( $src, wp_get_mime_types() );
    17201775                        if ( ! in_array( strtolower( $type['ext'] ), $default_types ) ) {
    17211776                                return sprintf( '<a class="wp-embedded-video" href="%s">%s</a>', esc_url( $src ), esc_html( $src ) );
    function wp_video_shortcode( $attr, $content = '' ) { 
    17881843                $attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
    17891844        }
    17901845
    1791         $html = '';
    1792         if ( 'mediaelement' === $library && 1 === $instances )
    1793                 $html .= "<!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->\n";
     1846        /**
     1847         * Filters the HTML added before the video shortcode output.
     1848         *
     1849         * Give the possibility to insert some HTML code before the <video> tag
     1850         * generated by a video shortcode.
     1851         *
     1852         * @since 4.0.0
     1853         *
     1854         * @param string $html      Empty variable to be replaced with the HTML snippet to insert before the <video> tag.
     1855         * @param string $library   Media library used for the video shortcode.
     1856         * @param int    $instances Unique numeric ID of this video shortcode instance.
     1857         */
     1858        $html = apply_filters('wp_video_shortcode_pre_html', '', $library, $instances);
    17941859        $html .= sprintf( '<video %s controls="controls">', join( ' ', $attr_strings ) );
    17951860
    17961861        $fileurl = '';
    function wp_video_shortcode( $attr, $content = '' ) { 
    18001865                        if ( empty( $fileurl ) )
    18011866                                $fileurl = $$fallback;
    18021867
    1803                         if ( 'src' === $fallback && preg_match( $yt_pattern, $src ) ) {
    1804                                 $type = array( 'type' => 'video/youtube' );
    1805                         } else {
     1868                        $match = false;
     1869                        foreach( $ext_providers_patterns as $provider ) {
     1870                                if( 'src' === $fallback && preg_match( $provider['pattern'], $src ) ) {
     1871                                        $match = true;
     1872                                        $type = array( 'type' => $provider['mimetype'] );
     1873                                        break;
     1874                                }
     1875                        }
     1876                        if ( ! $match ) {
    18061877                                $type = wp_check_filetype( $$fallback, wp_get_mime_types() );
    18071878                        }
    18081879                        $url = add_query_arg( '_', $instances, $$fallback );
    function wp_video_shortcode( $attr, $content = '' ) { 
    18171888                $html .= trim( $content );
    18181889        }
    18191890
    1820         if ( 'mediaelement' === $library )
    1821                 $html .= wp_mediaelement_fallback( $fileurl );
     1891        /**
     1892         * Filters the HTML added inside the video shortcode output.
     1893         *
     1894         * Give the possibility to insert some HTML code inside the <video> tag
     1895         * generated by a video shortcode.
     1896         *
     1897         * @since 4.0.0
     1898         *
     1899         * @param string $html    Empty variable to be replaced with the HTML snippet to append into the <video> tag.
     1900         * @param string $library Media library used for the video shortcode.
     1901         * @param string $fileurl The URL of the video file.
     1902         * @param int    $post_id Post ID.
     1903         */
     1904        $html .= apply_filters('wp_video_shortcode_inside_html', '', $library, $fileurl, $post_id);
    18221905        $html .= '</video>';
    18231906
    18241907        $html = sprintf( '<div style="width: %dpx; max-width: 100%%;" class="wp-video">%s</div>', $width, $html );
    function wp_video_shortcode( $attr, $content = '' ) { 
    18381921}
    18391922add_shortcode( 'video', 'wp_video_shortcode' );
    18401923
     1924function wp_mediaelement_video_shortcode_pre_html($html, $library, $instances) {
     1925        if ( 'mediaelement' === $library && 1 === $instances )
     1926                $html .= "<!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->\n";
     1927        return $html;
     1928}
     1929add_filter('wp_video_shortcode_pre_html', 'wp_mediaelement_video_shortcode_pre_html', 10, 3);
     1930
     1931function wp_mediaelement_video_shortcode_inside_html($html, $library, $fileurl, $post_id) {
     1932        if ( 'mediaelement' === $library )
     1933                $html .= wp_mediaelement_fallback( $fileurl );
     1934        return $html;
     1935}
     1936add_filter('wp_video_shortcode_inside_html', 'wp_mediaelement_video_shortcode_inside_html', 10, 4);
     1937
    18411938/**
    18421939 * Display previous image link that has the same post parent.
    18431940 *