WordPress.org

Make WordPress Core

Ticket #24202: 24202.2.diff

File 24202.2.diff, 25.8 KB (added by DrewAPicture, 5 years ago)

Second pass with docblocks

  • wp-includes/media.php

     
    18971897/**
    18981898 * Extract and parse {media type} shortcodes or srcs from the passed content
    18991899 *
     1900 * Default arguments:
     1901 * string  'type'                Type of media: audio or video.
     1902 * string  'content'             A string that might contain media data.
     1903 * boolean 'return_html'         Whether to return HTML or URLs.
     1904 * boolean 'remove_from_content' Whether to remove the found URL from the passed content.
     1905 * int     'media_count'         The number of medias to return.
     1906 *
    19001907 * @since 3.6.0
    19011908 *
    1902  * @param string $type Type of media: audio or video
    1903  * @param string $content A string which might contain media data.
    1904  * @param boolean $html Whether to return HTML or URLs
    1905  * @param boolean $remove Whether to remove the found URL from the passed content.
    1906  * @param int $limit Optional. The number of medias to return
     1909 * @param array $args An array of arguments.
    19071910 * @return array A list of parsed shortcodes or extracted srcs
    19081911 */
    1909 function get_content_media( $type, &$content, $html = true, $remove = false, $limit = 0 ) {
     1912function get_content_media( $args = array() ) {
     1913        $defaults = array(
     1914                'type'                => null,
     1915                'content'             => &$content,
     1916                'return_html'         => true,
     1917                'remove_from_content' => false,
     1918                'media_count'         => 0
     1919        );
     1920       
     1921        $args = wp_parse_args( $args, $defaults );
     1922       
     1923        if ( null == $args['type'] )
     1924                return;
     1925
    19101926        $items = array();
    19111927
    1912         if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     1928        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $args['content'], $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
    19131929                foreach ( $matches as $shortcode ) {
    1914                         if ( $type === $shortcode[2] ) {
     1930                        if ( $args['type'] === $shortcode[2] ) {
    19151931                                $count = 1;
    1916                                 if ( $remove )
    1917                                         $content =& str_replace( $shortcode[0], '', $content, $count );
     1932                                if ( $args['remove_from_content'] )
     1933                                        $args['content'] =& str_replace( $shortcode[0], '', $args['content'], $count );
    19181934
    19191935                                $items[] = do_shortcode_tag( $shortcode );
    1920                                 if ( $limit > 0 && count( $items ) >= $limit )
     1936                                if ( $args['media_count'] > 0 && count( $items ) >= $args['media_count'] )
    19211937                                        break;
    19221938                        }
    19231939                }
    19241940        }
    19251941
    1926         if ( $html )
     1942        if ( $args['return_html'] )
    19271943                return $items;
    19281944
    19291945        $data = array();
     
    19461962 * Check the content blob for an <{media type}>, <object>, <embed>, or <iframe>, in that order
    19471963 * If no HTML tag is found, check the first line of the post for a URL
    19481964 *
     1965 * Default arguments:
     1966 * string  'type'                Type of media: audio or video.
     1967 * string  'content'             A string that might contain media data.
     1968 * boolean 'remove_from_content' Whether to remove the found URL from the passed content.
     1969 * int     'media_count'         The number of medias to return.
     1970 *
    19491971 * @since 3.6.0
    19501972 *
    1951  * @param string $type Type of media: audio or video
    1952  * @param string $content A string which might contain media data.
    1953  * @param boolean $remove Whether to remove the found URL from the passed content.
    1954  * @param int $limit Optional. The number of galleries to return
     1973 * @param array $args (optional) An array of arguments.
    19551974 * @return array A list of found HTML media embeds and possibly a URL by itself
    19561975 */
    1957 function get_embedded_media( $type, &$content, $remove = false, $limit = 0 ) {
     1976function get_embedded_media( $args = array() ) {
     1977        $defaults = array(
     1978                'type'                => null,
     1979                'content'             => &$content,
     1980                'remove_from_content' => false,
     1981                'media_count'         => 0
     1982        );
     1983       
     1984        $args = wp_parse_args( $args, $defaults );
     1985       
     1986        if ( null == $args['type'] )
     1987                return;
     1988       
    19581989        $html = array();
    19591990
    1960         foreach ( array( $type, 'object', 'embed', 'iframe' ) as $tag ) {
    1961                 if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $content, $matches ) ) {
     1991        foreach ( array( $args['type'], 'object', 'embed', 'iframe' ) as $tag ) {
     1992                if ( preg_match( '#' . get_tag_regex( $tag ) . '#', $args['content'], $matches ) ) {
    19621993                        $html[] = $matches[0];
    1963                         if ( $remove )
    1964                                 $content = str_replace( $matches[0], '', $content );
     1994                        if ( $args['remove_from_content'] )
     1995                                $args['content'] = str_replace( $matches[0], '', $args['content'] );
    19651996
    1966                         if ( $limit > 0 && count( $html ) >= $limit )
     1997                        if ( $args['media_count'] > 0 && count( $html ) >= $args['media_count'] )
    19671998                                break;
    19681999                }
    19692000        }
    19702001
    1971         if ( ! empty( $html ) && count( $html ) >= $limit )
     2002        if ( ! empty( $html ) && count( $html ) >= $args['media_count'] )
    19722003                return $html;
    19732004
    1974         $lines = explode( "\n", trim( $content ) );
     2005        $lines = explode( "\n", trim( $args['content'] ) );
    19752006        $line = trim( array_shift( $lines  ) );
    19762007        if ( 0 === stripos( $line, 'http' ) ) {
    1977                 if ( $remove )
    1978                         $content = join( "\n", $lines );
     2008                if ( $args['remove_from_content'] )
     2009                        $args['content'] = join( "\n", $lines );
    19792010
    19802011                $html[] = $line;
    19812012        }
     
    19872018 *
    19882019 * @since 3.6.0
    19892020 *
    1990  * @param string $content A string which might contain audio data.
    1991  * @param boolean $html Whether to return HTML or URLs
    1992  * @param boolean $remove Whether to remove the found URL from the passed content.
     2021 * @uses get_content_media()
     2022 *
     2023 * @param array $args (optional) An array of arguments.
    19932024 * @return array A list of lists. Each item has a list of HTML or srcs corresponding
    19942025 *              to an [audio]'s HTML or primary src and specified fallbacks
    19952026 */
    1996 function get_content_audio( &$content, $html = true, $remove = false ) {
    1997         return get_content_media( 'audio', $content, $html, $remove );
     2027function get_content_audio( $args = array() ) {
     2028        return get_content_media( array_merge( $args, array( 'type' => 'audio' ) ) );
    19982029}
    19992030
    20002031/**
     
    20032034 *
    20042035 * @since 3.6.0
    20052036 *
    2006  * @param string $content A string which might contain audio data.
    2007  * @param boolean $remove Whether to remove the found URL from the passed content.
     2037 * @uses get_embedded_media()
     2038 *
     2039 * @param array $args (optional) An array of arguments.
    20082040 * @return array A list of found HTML audio embeds and possibly a URL by itself
    20092041 */
    2010 function get_embedded_audio( &$content, $remove = false ) {
    2011         return get_embedded_media( 'audio', $content, $remove );
     2042function get_embedded_audio( $args = array() ) {
     2043        return get_embedded_media( array_merge( $args, array( 'type' => 'audio' ) ) );
    20122044}
    20132045
    20142046/**
     
    20162048 *
    20172049 * @since 3.6.0
    20182050 *
    2019  * @param string $content A string which might contain video data.
    2020  * @param boolean $html Whether to return HTML or URLs
    2021  * @param boolean $remove Whether to remove the found URL from the passed content.
     2051 * @uses get_content_media()
     2052 *
     2053 * @param array $args (optional) An array of arguments.
    20222054 * @return array A list of lists. Each item has a list of HTML or srcs corresponding
    20232055 *              to a [video]'s HTML or primary src and specified fallbacks
    20242056 */
    2025 function get_content_video( &$content, $html = true, $remove = false ) {
    2026         return get_content_media( 'video', $content, $html, $remove );
     2057function get_content_video( $args = array() ) {
     2058        return get_content_media( array_merge( $args, array( 'type' => 'video' ) ) );
    20272059}
    20282060
    20292061/**
     
    20322064 *
    20332065 * @since 3.6.0
    20342066 *
    2035  * @param string $content A string which might contain video data.
    2036  * @param boolean $remove Whether to remove the found URL from the passed content.
     2067 * @uses get_embedded_media()
     2068 *
     2069 * @param array $args (optional) An array of arguments.
    20372070 * @return array A list of found HTML video embeds and possibly a URL by itself
    20382071 */
    2039 function get_embedded_video( &$content, $remove = false ) {
    2040         return get_embedded_media( 'video', $content, $remove );
     2072function get_embedded_video( $args = array() ) {
     2073        return get_embedded_media( array_merge( $args, array( 'type' => 'video' ) ) );
    20412074}
    20422075
    20432076/**
     
    20462079 *
    20472080 * @since 3.6.0
    20482081 *
     2082 * @uses get_content_media()
     2083 * @uses get_embedded_media()
     2084 *
    20492085 * @param string $type Required. 'audio' or 'video'
    20502086 * @param WP_Post $post Optional. Used instead of global $post when passed.
    20512087 * @param int $limit Optional. The number of medias to remove if content is scanned.
     
    21022138        // these functions expect a reference, so we should make a copy of post content to avoid changing it
    21032139        $content = $post->post_content;
    21042140
    2105         $htmls = get_content_media( $type, $content, true, true, $limit );
     2141        $htmls = get_content_media( array(
     2142                'type'                => $type,
     2143                'content'             => $content,
     2144                'return_html'         => true,
     2145                'remove_from_content' => true,
     2146                'media_count'         => $limit
     2147        ) );
     2148
    21062149        if ( ! empty( $htmls ) ) {
    21072150                $html = reset( $htmls );
    21082151                $post->split_content = $content;
     
    21102153                return $post->format_content[ $cache_key ];
    21112154        }
    21122155
    2113         $embeds = get_embedded_media( $type, $content, true, 1 );
     2156        $embeds = get_embedded_media( array(
     2157                'type'                => $type,
     2158                'content'             => $content,
     2159                'remove_from_content' => true,
     2160                'media_count'         => 1
     2161        ) );
     2162       
    21142163        if ( ! empty( $embeds ) ) {
    21152164                $embed = reset( $embeds );
    21162165                $post->split_content = $content;
     
    21942243/**
    21952244 * Check the content blob for images or image srcs
    21962245 *
     2246 * Default arguments:
     2247 * string  'content'             A string that might contain media data.
     2248 * boolean 'return_html'         Whether to return HTML or URLs.
     2249 * boolean 'remove_from_content' Whether to remove the found URL from the passed content.
     2250 * int     'media_count'         The number of medias to return.
     2251 *
    21972252 * @since 3.6.0
    21982253 *
    2199  * @param string $content A string which might contain image data.
    2200  * @param boolean $html Whether to return HTML or URLs
    2201  * @param boolean $remove Whether to remove the found data from the passed content.
    2202  * @param int $limit Optional. The number of image srcs to return
     2254 * @param array $args (optional) An array of arguments.
    22032255 * @return array The found images or srcs
    22042256 */
    2205 function get_content_images( &$content, $html = true, $remove = false, $limit = 0 ) {
     2257function get_content_images( $args = array() ) {
     2258        $defaults = array(
     2259                'content'             => &$content,
     2260                'return_html'         => true,
     2261                'remove_from_content' => false,
     2262                'media_count'         => 0
     2263        );
     2264       
     2265        $args = wp_parse_args( $args, $defaults );
     2266
    22062267        $tags = array();
    22072268        $captions = array();
    22082269
    2209         if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     2270        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $args['content'], $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
    22102271                foreach ( $matches as $shortcode ) {
    22112272                        if ( 'caption' === $shortcode[2] ) {
    22122273                                $captions[] = $shortcode[0];
    2213                                 if ( $html )
     2274                                if ( $args['return_html'] )
    22142275                                        $tags[] = do_shortcode( $shortcode[0] );
    22152276                        }
    22162277
    2217                         if ( $limit > 0 && count( $tags ) >= $limit )
     2278                        if ( $args['media_count'] > 0 && count( $tags ) >= $args['media_count'] )
    22182279                                break;
    22192280                }
    22202281        }
    22212282
    22222283        foreach ( array( 'a', 'img' ) as $tag ) {
    2223                 if ( preg_match_all( '#' . get_tag_regex( $tag ) .  '#i', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     2284                if ( preg_match_all( '#' . get_tag_regex( $tag ) .  '#i', $args['content'], $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
    22242285                        foreach ( $matches as $node ) {
    22252286                                if ( ! strstr( $node[0], '<img ' ) )
    22262287                                        continue;
     
    22312292                                foreach ( $captions as $caption ) {
    22322293                                        if ( strstr( $caption, $node[0] ) ) {
    22332294                                                $found = true;
    2234                                                 if ( $remove )
    2235                                                         $content = str_replace( $caption, '', $content, $count );
     2295                                                if ( $args['remove_from_content'] )
     2296                                                        $args['content'] = str_replace( $caption, '', $args['content'], $count );
    22362297                                        }
    22372298                                }
    22382299
    2239                                 if ( $remove )
    2240                                         $content = str_replace( $node[0], '', $content, $count );
     2300                                if ( $args['remove_from_content'] )
     2301                                        $content = str_replace( $node[0], '', $args['content'], $count );
    22412302
    22422303                                if ( ! $found )
    22432304                                        $tags[] = $node[0];
    22442305
    2245                                 if ( $limit > 0 && count( $tags ) >= $limit )
     2306                                if ( $args['media_count'] > 0 && count( $tags ) >= $args['media_count'] )
    22462307                                        break 2;
    22472308                        }
    22482309                }
    22492310        }
    22502311
    2251         if ( $html )
     2312        if ( $args['return_html'] )
    22522313                return $tags;
    22532314
    22542315        $srcs = array();
     
    22572318                preg_match( '#src=[\'"](.+?)[\'"]#is', $tag, $src );
    22582319                if ( ! empty( $src[1] ) ) {
    22592320                        $srcs[] = $src[1];
    2260                         if ( $limit > 0 && count( $srcs ) >= $limit )
     2321                        if ( $args['media_count'] > 0 && count( $srcs ) >= $args['media_count'] )
    22612322                                break;
    22622323                }
    22632324        }
    22642325
    2265         return apply_filters( 'content_images', array_values( array_unique( $srcs ) ), $content );
     2326        return apply_filters( 'content_images', array_values( array_unique( $srcs ) ), $args['content'] );
    22662327}
    22672328
    22682329/**
    22692330 * Check the content blob for images or srcs and return the first
    22702331 *
     2332 * Default arguments:
     2333 * string  'content'             A string that might contain media data.
     2334 * boolean 'return_html'         Whether to return HTML or URLs.
     2335 * boolean 'remove_from_content' Whether to remove the found URL from the passed content.
     2336 *
    22712337 * @since 3.6.0
    22722338 *
    2273  * @param string $content A string which might contain image data.
    2274  * @param boolean $html Whether to return HTML or URLs
    2275  * @param boolean $remove Whether to remove the found data from the passed content.
     2339 * @uses get_content_images()
     2340 *
     2341 * @param array $args (optional) An array of arguments.
    22762342 * @return string The found data
    22772343 */
    2278 function get_content_image( &$content, $html = true, $remove = false ) {
    2279         $srcs = get_content_images( $content, $html, $remove, 1 );
     2344function get_content_image( $args = array() ) {
     2345        $defaults = array(
     2346                'content' => &$content,
     2347                'return_html' => true,
     2348                'remove_from_content' => false
     2349        );
     2350       
     2351        $args = wp_parse_args( $args, $defaults );
     2352       
     2353        $srcs = get_content_images( array_merge( $args, array( 'media_count' => 1 ) ) );
    22802354        if ( empty( $srcs ) )
    22812355                return '';
    22822356
    2283         return apply_filters( 'content_image', reset( $srcs ), $content );
     2357        return apply_filters( 'content_image', reset( $srcs ), $args['content'] );
    22842358}
    22852359
    22862360/**
    22872361 * Check the content blob for galleries and return their image srcs
    22882362 *
     2363 * Default arguments:
     2364 * string  'content'             A string that might contain media data.
     2365 * boolean 'return_html'         Whether to return HTML or URLs.
     2366 * boolean 'remove_from_content' Whether to remove the found URL from the passed content.
     2367 * int     'media_count'         The number of medias to return.
     2368 *
    22892369 * @since 3.6.0
    22902370 *
    2291  * @param string $content A string which might contain image data.
    2292  * @param boolean $html Whether to return HTML or data
    2293  * @param boolean $remove Optional. Whether to remove the found data from the passed content.
    2294  * @param int $limit Optional. The number of galleries to return
     2371 * @param array $args (optional) An array of arguments.
    22952372 * @return array A list of galleries, which in turn are a list of their srcs in order
    22962373 */
    2297 function get_content_galleries( &$content, $html = true, $remove = false, $limit = 0 ) {
     2374function get_content_galleries( $args = array() ) {
     2375        $defaults = array(
     2376                'content'             => &$content,
     2377                'return_html'         => true,
     2378                'remove_from_content' => false,
     2379                'media_count'         => 0
     2380        );
     2381       
     2382        $args = wp_parse_args( $args, $defaults );
     2383
    22982384        $galleries = array();
    22992385
    2300         if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
     2386        if ( preg_match_all( '/' . get_shortcode_regex() . '/s', $args['content'], $matches, PREG_SET_ORDER ) && ! empty( $matches ) ) {
    23012387                foreach ( $matches as $shortcode ) {
    23022388                        if ( 'gallery' === $shortcode[2] ) {
    23032389                                $srcs = array();
    23042390                                $count = 1;
    2305                                 if ( $remove )
    2306                                         $content = str_replace( $shortcode[0], '', $content, $count );
     2391                                if ( $args['remove_from_content'] )
     2392                                        $args['content'] = str_replace( $shortcode[0], '', $args['content'], $count );
    23072393
    23082394                                $data = shortcode_parse_atts( $shortcode[3] );
    23092395                                $gallery = do_shortcode_tag( $shortcode );
    2310                                 if ( $html ) {
     2396                                if ( $args['return_html'] ) {
    23112397                                        $galleries[] = $gallery;
    23122398                                } else {
    23132399                                        preg_match_all( '#src=[\'"](.+?)[\'"]#is', $gallery, $src, PREG_SET_ORDER );
     
    23202406                                        $galleries[] = $data;
    23212407                                }
    23222408
    2323                                 if ( $limit > 0 && count( $galleries ) >= $limit )
     2409                                if ( $args['media_count'] > 0 && count( $galleries ) >= $args['media_count'] )
    23242410                                        break;
    23252411                        }
    23262412                }
    23272413        }
    23282414
    2329         return apply_filters( 'content_galleries', $galleries, $content );
     2415        return apply_filters( 'content_galleries', $galleries, $args['content'] );
    23302416}
    23312417
    23322418/**
    23332419 * Retrieve galleries from the passed post's content
    23342420 *
     2421 * Default arguments:
     2422 * int     'id'          The post id.
     2423 * boolean 'return_html' Whether to return HTML or data.
     2424 *
    23352425 * @since 3.6.0
    23362426 *
    2337  * @param int $post_id Optional. Post ID.
    2338  * @param boolean $html Whether to return HTML or data
     2427 * @uses get_content_galleries()
     2428 *
     2429 * @param array $args (optional) An array of arguments.
    23392430 * @return array A list of arrays, each containing gallery data and srcs parsed
    23402431 *              from the expanded shortcode
    23412432 */
    2342 function get_post_galleries( $post_id = 0, $html = true ) {
    2343         $post = empty( $post_id ) ? clone get_post() : get_post( $post_id );
     2433function get_post_galleries( $args = array() ) {
     2434        $defaults = array(
     2435                'id'          => 0,
     2436                'return_html' => true
     2437        );
     2438       
     2439        $args = wp_parse_args( $args, $defaults );
     2440
     2441        $post = 0 == $args['id'] ? clone get_post() : get_post( $args['id'] );
    23442442        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' )  )
    23452443                return array();
    23462444
    2347         return get_content_galleries( $post->post_content, $html );
     2445        $galleries = get_content_galleries( array(
     2446                'content'     => $post->post_content,
     2447                'return_html' => $args['return_html']
     2448        ) );
     2449       
     2450        return $galleries;
    23482451}
    23492452
    23502453/**
     
    23522455 *
    23532456 * @since 3.6.0
    23542457 *
    2355  * @param int $post_id Optional. Post ID.
     2458 * @uses get_content_galleries()
     2459 *
     2460 * @param int $post_id (optional) The post id.
    23562461 * @return array A list of lists, each containing image srcs parsed
    23572462 *              from an expanded shortcode
    23582463 */
     
    23612466        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' )  )
    23622467                return array();
    23632468
    2364         $data = get_content_galleries( $post->post_content, false );
     2469        $data = get_content_galleries( array(
     2470                'content'     => $post->post_content,
     2471                'return_html' => false
     2472        ) );
     2473
    23652474        return wp_list_pluck( $data, 'src' );
    23662475}
    23672476
    23682477/**
    23692478 * Check a specified post's content for gallery and, if present, return the first
    23702479 *
     2480 * Default arguments:
     2481 * int     'id'          The post id.
     2482 * boolean 'return_html' Whether to return HTML or URLs.
     2483 *
    23712484 * @since 3.6.0
    23722485 *
    2373  * @param int $post_id Optional. Post ID.
    2374  * @param boolean $html Whether to return HTML or data
     2486 * @uses get_content_galleries()
     2487 *
     2488 * @param array $args (optional) An array of arguments.
    23752489 * @return array Gallery data and srcs parsed from the expanded shortcode
    23762490 */
    2377 function get_post_gallery( $post_id = 0, $html = true ) {
    2378         $post = empty( $post_id ) ? clone get_post() : get_post( $post_id );
     2491function get_post_gallery( $args = array() ) {
     2492        $defaults = array(
     2493                'id'          => 0,
     2494                'return_html' => true
     2495        );
     2496       
     2497        $args = wp_parse_args( $args, $defaults );
     2498
     2499        $post = 0 == $args['id'] ? clone get_post() : get_post( $args['id'] );
    23792500        if ( empty( $post ) || ! has_shortcode( $post->post_content, 'gallery' ) )
    23802501                return array();
    23812502
    2382         $data = get_content_galleries( $post->post_content, $html, false, 1 );
     2503        $data = get_content_galleries( array(
     2504                'content'             => $post->post_content,
     2505                'return_html'         => $args['return_html'],
     2506                'remove_from_content' => false,
     2507                'media_count'         => 1
     2508        ) );
     2509
    23832510        return reset( $data );
    23842511}
    23852512
     
    24012528 * @return array A list of a gallery's image srcs in order
    24022529 */
    24032530function get_post_gallery_images( $post_id = 0 ) {
    2404         $gallery = get_post_gallery( $post_id, false );
     2531        $gallery = get_post_gallery( array(
     2532                'id'          => $post_id,
     2533                'return_html' => false
     2534        ) );
     2535
    24052536        if ( empty( $gallery['src'] ) )
    24062537                return array();
    24072538
     
    24132544 *
    24142545 * @since 3.6.0
    24152546 *
     2547 * @uses get_content_images()
     2548 *
    24162549 * @param string $attached_size If an attached image is found, the size to display it.
    24172550 * @param WP_Post $post Optional. Used instead of global $post when passed.
    24182551 */
     
    25292662        }
    25302663
    25312664        $content = $post->post_content;
    2532         $htmls = get_content_images( $content, true, true, 1 );
     2665        $htmls = get_content_images( array(
     2666                'content'             => $content,
     2667                'return_html'         => true,
     2668                'remove_from_content' => true,
     2669                'media_count'         => 1
     2670        ) );
     2671
    25332672        if ( ! empty( $htmls ) ) {
    25342673                $html = reset( $htmls );
    25352674                $post->split_content = $content;
  • wp-includes/post-formats.php

     
    353353                                if ( ! preg_match( '#' . $esc_url . '[^/&\?]?#', $content ) ) {
    354354                                        $url = $meta['link_url'];
    355355                                } else {
    356                                         $url = get_content_url( $content, true );
     356                                        $url = get_content_url( array( 'content' => $content, 'remove_from_content' => true ) );
    357357                                }
    358358                        } else {
    359359                                $content_before = $content;
    360                                 $url = get_content_url( $content, true );
     360                                $url = get_content_url( array( 'content' => $content, 'remove_from_content' => true ) );
    361361                                if ( $content_before == $content )
    362362                                        $url = '';
    363363                        }
     
    529529 * @param boolean $remove Whether to remove the found data from the passed content.
    530530 * @return array A chat log as structured data
    531531 */
    532 function get_content_chat( &$content, $remove = false ) {
     532function get_content_chat( $args = array() ) {
    533533        global $_wp_chat_parsers;
    534534
    535         $trimmed = strip_tags( trim( $content ) );
     535        $defaults = array(
     536                'content'             => &$content,
     537                'remove_from_content' => false
     538        );
     539
     540        $args = wp_parse_args( $args, $defaults );
     541
     542        $trimmed = strip_tags( trim( $args['content'] ) );
    536543        if ( empty( $trimmed ) )
    537544                return array();
    538545
     
    620627        if ( ! empty( $stanza ) )
    621628                $stanzas[] = $stanza;
    622629
    623         if ( $remove ) {
     630        if ( $args['remove_from_content'] ) {
    624631                if ( 0 === $found_index ) {
    625632                        $removed = array_slice( $lines, $last_index );
    626633                } else {
     
    628635                        $after = array_slice( $lines, $last_index + 1 );
    629636                        $removed = array_filter( array_merge( $before, $after ) );
    630637                }
    631                 $content = trim( join( "\n", $removed ) );
     638                $args['content'] = trim( join( "\n", $removed ) );
    632639        }
    633640
    634641        return $stanzas;
     
    639646 *
    640647 * @since 3.6.0
    641648 *
    642  * @param int $id (optional) The post ID.
     649 * @uses get_content_chat()
     650 *
     651 * @param int $post_id (optional) The post ID.
    643652 * @return array The chat content.
    644653 */
    645 function get_the_post_format_chat( $id = 0 ) {
    646         $post = empty( $id ) ? clone get_post() : get_post( $id );
     654function get_the_post_format_chat( $post_id = 0 ) {
     655        $post = empty( $post_id ) ? clone get_post() : get_post( $post_id );
    647656        if ( empty( $post ) )
    648657                return array();
    649658
    650         $data = get_content_chat( get_paged_content( $post->post_content ) );
     659        $data = get_content_chat( array( 'content' => get_paged_content( $post->post_content ) ) );
    651660        if ( empty( $data ) )
    652661                return array();
    653662
     
    704713 * @param string $replace (optional) Content to replace the quote content with.
    705714 * @return string The quote content.
    706715 */
    707 function get_content_quote( &$content, $remove = false, $replace = '' ) {
    708         if ( empty( $content ) )
     716function get_content_quote( $args = array() ) {
     717        $defaults = array(
     718                'content' => &$content,
     719                'remove_from_content' => false,
     720                'replace_with' => ''
     721        );
     722       
     723        $args = wp_parse_args( $args, $defaults );
     724       
     725        if ( empty( $args['content'] ) )
    709726                return '';
    710727
    711         if ( ! preg_match( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', $content, $matches ) ) {
    712                 $quote = $content;
    713                 if ( $remove || ! empty( $replace ) )
    714                         $content = $replace;
     728        if ( ! preg_match( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', $args['content'], $matches ) ) {
     729                $quote = $args['content'];
     730                if ( $args['remove_from_content'] || ! empty( $args['replace_with'] ) )
     731                        $args['content'] = $args['replace_with'];
    715732                return $quote;
    716733        }
    717734
    718         if ( $remove || ! empty( $replace ) )
    719                 $content = preg_replace( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', addcslashes( $replace, '\\$' ), $content, 1 );
     735        if ( $args['remove_from_content'] || ! empty( $args['replace_with'] ) )
     736                $args['content'] = preg_replace( '/<blockquote[^>]*>(.+?)<\/blockquote>/is', addcslashes( $args['replace_with'], '\\$' ), $args['content'], 1 );
    720737
    721738        return $matches[1];
    722739}
     
    739756                return '';
    740757
    741758        $content = $post->post_content;
    742         $quote = get_content_quote( $content, true );
     759        $quote = get_content_quote( array(
     760                'content'             => $content,
     761                'remove_from_content' => true
     762        ) );
     763
    743764        $post->split_content = $content;
    744765
    745766        if ( ! empty( $quote ) )
     
    778799 * @return string The found URL.
    779800 */
    780801function get_content_url( &$content, $remove = false ) {
    781         if ( empty( $content ) )
     802        $defaults = array(
     803                'content'             => &$content,
     804                'remove_from_content' => false
     805        );
     806       
     807        $args = wp_parse_args( $args, $defaults );
     808       
     809        if ( empty( $args['content'] ) )
    782810                return '';
    783811
    784812        // the content is a URL
    785         $trimmed = trim( $content );
     813        $trimmed = trim( $args['content'] );
    786814        if ( 0 === stripos( $trimmed, 'http' ) && ! preg_match( '#\s#', $trimmed ) ) {
    787                 if ( $remove )
    788                         $content = '';
     815                if ( $args['remove_from_content'] )
     816                        $args['content'] = '';
    789817
    790818                return $trimmed;
    791819        // the content is HTML so we grab the first href
    792         } elseif ( preg_match( '/<a\s[^>]*?href=[\'"](.+?)[\'"]/is', $content, $matches ) ) {
     820        } elseif ( preg_match( '/<a\s[^>]*?href=[\'"](.+?)[\'"]/is', $args['content'], $matches ) ) {
    793821                return esc_url_raw( $matches[1] );
    794822        }
    795823
     
    798826
    799827        // the content is a URL followed by content
    800828        if ( 0 === stripos( $line, 'http' ) ) {
    801                 if ( $remove )
    802                         $content = trim( join( "\n", $lines ) );
     829                if ( $args['remove_from_content'] )
     830                        $args['content'] = trim( join( "\n", $lines ) );
    803831
    804832                return esc_url_raw( $line );
    805833        }
     
    845873        }
    846874
    847875        if ( ! empty( $post->post_content ) )
    848                 return apply_filters( 'get_the_post_format_url', get_content_url( $post->post_content ), $post );
     876                return apply_filters( 'get_the_post_format_url', get_content_url( array( 'content' => $post->post_content ) ), $post );
    849877}
    850878
    851879/**