WordPress.org

Make WordPress Core

Ticket #23572: 23572.2.diff

File 23572.2.diff, 5.4 KB (added by wonderboymusic, 9 years ago)
  • wp-includes/media.php

    diff --git wp-includes/media.php wp-includes/media.php
    index b5e721b..bffba5e 100644
    function get_post_gallery_images( $post_id = 0 ) { 
    19461946
    19471947/**
    19481948 * Retrieve video attached to the passed post
     1949 *
     1950 * @since 3.6.0
     1951 *
    19491952 * @return array Found video attachments
    19501953 */
    19511954function get_post_video( $post_id = 0 ) {
    function get_post_audio( $post_id = 0 ) { 
    19901993}
    19911994
    19921995/**
     1996 * Extract the srcs from the post's [audio] <source>s
     1997 *
     1998 * @since 3.6.0
     1999 *
     2000 * @param string $content A string which might contain audio data.
     2001 * @param boolean $remove Whether to remove the found URL from the passed content.
     2002 * @return array A list of lists. Each item has a list of sources corresponding
     2003 *              to a [audio]'s primary src and specified fallbacks
     2004 */
     2005function get_content_audio( &$content, $remove = false ) {
     2006        $src = '';
     2007        $audios = array();
     2008        $matches = array();
     2009
     2010        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     2011                foreach ( $matches as $shortcode ) {
     2012                        if ( 'audio' === $shortcode[2] ) {
     2013                                $srcs = array();
     2014                                $count = 1;
     2015                                if ( $remove )
     2016                                        $content = str_replace( $shortcode[0], '', $content, $count );
     2017
     2018                                $audio = do_shortcode_tag( $shortcode );
     2019                                preg_match_all( '#src=[\'"](.+?)[\'"]#is', $audio, $src, PREG_SET_ORDER );
     2020                                if ( ! empty( $src ) ) {
     2021                                        foreach ( $src as $s )
     2022                                                $srcs[] = $s[1];
     2023
     2024                                        $audios[] = array_values( array_unique( $srcs ) );
     2025                                }
     2026                        }
     2027                }
     2028        }
     2029        return $audios;
     2030}
     2031
     2032/**
     2033 * Check the content blob for an <audio>, <object>, <embed>, or <iframe>, in that order
     2034 * If no HTML tag is found, check the first line of the post for a URL
     2035 *
     2036 * @since 3.6.0
     2037 *
     2038 * @param string $content A string which might contain audio data.
     2039 * @param boolean $remove Whether to remove the found URL from the passed content.
     2040 * @return array A list of found HTML audio embeds and possibly a URL by itself
     2041 */
     2042function get_embedded_audio( &$content, $remove = false ) {
     2043        $html = array();
     2044        $matches = '';
     2045
     2046        foreach ( array( 'audio', 'object', 'embed', 'iframe' ) as $tag ) {
     2047                if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) {
     2048                        $html[] = $matches[1];
     2049                        if ( $remove )
     2050                                $content = str_replace( $matches[0], '', $content );
     2051
     2052                        return $html;
     2053                }
     2054        }
     2055
     2056        $lines = explode( "\n", trim( $content ) );
     2057        $line = trim( array_shift( $lines  ) );
     2058
     2059        if ( 0 === stripos( $line, 'http' ) ) {
     2060                if ( $remove )
     2061                        $content = join( "\n", $lines );
     2062
     2063                $html[] = $line;
     2064        }
     2065        return $html;
     2066}
     2067
     2068/**
     2069 * Extract the srcs from the post's [video] <source>s
     2070 *
     2071 * @since 3.6.0
     2072 *
     2073 * @param string $content A string which might contain video data.
     2074 * @param boolean $remove Whether to remove the found URL from the passed content.
     2075 * @return array A list of lists. Each item has a list of sources corresponding
     2076 *              to a [video]'s primary src and specified fallbacks
     2077 */
     2078function get_content_video( &$content, $remove = false ) {
     2079        $src = '';
     2080        $videos = array();
     2081        $matches = array();
     2082
     2083        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     2084                foreach ( $matches as $shortcode ) {
     2085                        if ( 'video' === $shortcode[2] ) {
     2086                                $srcs = array();
     2087                                $count = 1;
     2088                                if ( $remove )
     2089                                        $content = str_replace( $shortcode[0], '', $content, $count );
     2090
     2091                                $video = do_shortcode_tag( $shortcode );
     2092                                preg_match_all( '#src=[\'"](.+?)[\'"]#is', $video, $src, PREG_SET_ORDER );
     2093                                if ( ! empty( $src ) ) {
     2094                                        foreach ( $src as $s )
     2095                                                $srcs[] = $s[1];
     2096
     2097                                        $videos[] = array_values( array_unique( $srcs ) );
     2098                                }
     2099                        }
     2100                }
     2101        }
     2102        return $videos;
     2103}
     2104
     2105/**
     2106 * Check the content blob for a <video>, <object>, <embed>, or <iframe>, in that order
     2107 * If no HTML tag is found, check the first line of the post for a URL
     2108 *
     2109 * @since 3.6.0
     2110 *
     2111 * @param string $content A string which might contain video data.
     2112 * @param boolean $remove Whether to remove the found URL from the passed content.
     2113 * @return array A list of found HTML video embeds and possibly a URL by itself
     2114 */
     2115function get_embedded_video( &$content, $remove = false ) {
     2116        $html = array();
     2117        $matches = '';
     2118        foreach ( array( 'video', 'object', 'embed', 'iframe' ) as $tag ) {
     2119                if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) {
     2120                        $html[] = $matches[1];
     2121                        if ( $remove )
     2122                                $content = str_replace( $matches[0], '', $content );
     2123                }
     2124        }
     2125
     2126        $lines = explode( "\n", trim( $content ) );
     2127        $line = trim( array_shift( $lines  ) );
     2128
     2129        if ( 0 === stripos( $line, 'http' ) ) {
     2130                if ( $remove )
     2131                        $content = join( "\n", $lines );
     2132
     2133                $html[] = $line;
     2134        }
     2135        return $html;
     2136}
     2137
     2138/**
    19932139 * Audio embed handler callback.
    19942140 *
     2141 * @since 3.6.0
     2142 *
    19952143 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
    19962144 * @param array $attr Embed attributes.
    19972145 * @param string $url The original URL that was matched by the regex.
    wp_embed_register_handler( 'wp_audio_embed', '#https?://.+?\.(' . join( '|', wp_ 
    20092157/**
    20102158 * Video embed handler callback.
    20112159 *
     2160 * @since 3.6.0
     2161 *
    20122162 * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
    20132163 * @param array $attr Embed attributes.
    20142164 * @param string $url The original URL that was matched by the regex.