Make WordPress Core

Ticket #32878: 32878.diff

File 32878.diff, 5.0 KB (added by dd32, 9 years ago)
  • src/wp-admin/includes/class-wp-press-this.php

    class WP_Press_This { 
    390390        /**
    391391         * Utility method to limit image source URLs.
    392392         *
    393393         * Excluded URLs include share-this type buttons, loaders, spinners, spacers, WP interface images,
    394394         * tiny buttons or thumbs, mathtag.com or quantserve.com images, or the WP stats gif.
    395395         *
    396396         * @ignore
    397397         * @since 4.2.0
    398398         *
    399399         * @param string $src Image source URL.
    400400         * @return string If not matched an excluded URL type, the original URL, empty string otherwise.
    401401         */
    402402        private function _limit_img( $src ) {
    403403                $src = $this->_limit_url( $src );
    404404
    405                 if ( preg_match( '/\/ad[sx]{1}?\//', $src ) ) {
     405                if ( preg_match( '!/ad[sx]?/!i', $src ) ) {
    406406                        // Ads
    407407                        return '';
    408                 } else if ( preg_match( '/(\/share-?this[^\.]+?\.[a-z0-9]{3,4})(\?.*)?$/', $src ) ) {
     408                } else if ( preg_match( '!(/share-?this[^.]+?\.[a-z0-9]{3,4})(\?.*)?$!i', $src ) ) {
    409409                        // Share-this type button
    410410                        return '';
    411                 } else if ( preg_match( '/\/(spinner|loading|spacer|blank|rss)\.(gif|jpg|png)/', $src ) ) {
     411                } else if ( preg_match( '!/(spinner|loading|spacer|blank|rss)\.(gif|jpg|png)!i', $src ) ) {
    412412                        // Loaders, spinners, spacers
    413413                        return '';
    414                 } else if ( preg_match( '/\/([^\.\/]+[-_]{1})?(spinner|loading|spacer|blank)s?([-_]{1}[^\.\/]+)?\.[a-z0-9]{3,4}/', $src ) ) {
     414                } else if ( preg_match( '!/([^./]+[-_])?(spinner|loading|spacer|blank)s?([-_][^./]+)?\.[a-z0-9]{3,4}!i', $src ) ) {
    415415                        // Fancy loaders, spinners, spacers
    416416                        return '';
    417                 } else if ( preg_match( '/([^\.\/]+[-_]{1})?thumb[^.]*\.(gif|jpg|png)$/', $src ) ) {
     417                } else if ( preg_match( '!([^./]+[-_])?thumb[^.]*\.(gif|jpg|png)$!i', $src ) ) {
    418418                        // Thumbnails, too small, usually irrelevant to context
    419419                        return '';
    420                 } else if ( preg_match( '/\/wp-includes\//', $src ) ) {
     420                } else if ( preg_match( '!/wp-includes/!', $src ) ) {
    421421                        // Classic WP interface images
    422422                        return '';
    423                 } else if ( preg_match( '/[^\d]{1}\d{1,2}x\d+\.(gif|jpg|png)$/', $src ) ) {
     423                } else if ( preg_match( '![^\d]\d{1,2}x\d+\.(gif|jpg|png)$!i', $src ) ) {
    424424                        // Most often tiny buttons/thumbs (< 100px wide)
    425425                        return '';
    426                 } else if ( preg_match( '/\/pixel\.(mathtag|quantserve)\.com/', $src ) ) {
     426                } else if ( preg_match( '!/pixel\.(mathtag|quantserve)\.com!i', $src ) ) {
    427427                        // See mathtag.com and https://www.quantcast.com/how-we-do-it/iab-standard-measurement/how-we-collect-data/
    428428                        return '';
    429                 } else if ( preg_match( '/\/[gb]\.gif(\?.+)?$/', $src ) ) {
     429                } else if ( preg_match( '!/[gb]\.gif(\?.+)?$!i', $src ) ) {
    430430                        // Classic WP stats gif
    431431                        return '';
    432432                }
    433433
    434434                return $src;
    435435        }
    436436
    437437        /**
    438438         * Limit embed source URLs to specific providers.
    439439         *
    440440         * Not all core oEmbed providers are supported. Supported providers include YouTube, Vimeo,
    441441         * Vine, Daily Motion, SoundCloud, and Twitter.
    442442         *
    443443         * @ignore
    444444         * @since 4.2.0
    445445         *
    446446         * @param string $src Embed source URL.
    447447         * @return string If not from a supported provider, an empty string. Otherwise, a reformattd embed URL.
    448448         */
    449449        private function _limit_embed( $src ) {
    450450                $src = $this->_limit_url( $src );
    451451
    452452                if ( empty( $src ) )
    453453                        return '';
    454454
    455                 if ( preg_match( '/\/\/(m|www)\.youtube\.com\/(embed|v)\/([^\?]+)\?.+$/', $src, $src_matches ) ) {
     455                if ( preg_match( '!//(m|www)\.youtube\.com/(embed|v)/([^?]+)\?.+$!i', $src, $src_matches ) ) {
    456456                        // Embedded Youtube videos (www or mobile)
    457457                        $src = 'https://www.youtube.com/watch?v=' . $src_matches[3];
    458                 } else if ( preg_match( '/\/\/player\.vimeo\.com\/video\/([\d]+)([\?\/]{1}.*)?$/', $src, $src_matches ) ) {
     458                } else if ( preg_match( '!//player\.vimeo\.com/video/([\d]+)([?/].*)?$!i', $src, $src_matches ) ) {
    459459                        // Embedded Vimeo iframe videos
    460460                        $src = 'https://vimeo.com/' . (int) $src_matches[1];
    461                 } else if ( preg_match( '/\/\/vimeo\.com\/moogaloop\.swf\?clip_id=([\d]+)$/', $src, $src_matches ) ) {
     461                } else if ( preg_match( '!//vimeo\.com/moogaloop\.swf\?clip_id=([\d]+)$!i', $src, $src_matches ) ) {
    462462                        // Embedded Vimeo Flash videos
    463463                        $src = 'https://vimeo.com/' . (int) $src_matches[1];
    464                 } else if ( preg_match( '/\/\/vine\.co\/v\/([^\/]+)\/embed/', $src, $src_matches ) ) {
     464                } else if ( preg_match( '!//vine\.co/v/([^/]+)/embed!i', $src, $src_matches ) ) {
    465465                        // Embedded Vine videos
    466466                        $src = 'https://vine.co/v/' . $src_matches[1];
    467                 } else if ( preg_match( '/\/\/(www\.)?dailymotion\.com\/embed\/video\/([^\/\?]+)([\/\?]{1}.+)?/', $src, $src_matches ) ) {
     467                } else if ( preg_match( '!//(www\.)?dailymotion\.com/embed/video/([^/?]+)([/?].+)?!i', $src, $src_matches ) ) {
    468468                        // Embedded Daily Motion videos
    469469                        $src = 'https://www.dailymotion.com/video/' . $src_matches[2];
    470470                } else {
    471471                        require_once( ABSPATH . WPINC . '/class-oembed.php' );
    472472                        $oembed = _wp_oembed_get_object();
    473473
    474474                        if ( ! $oembed->get_provider( $src, array( 'discover' => false ) ) ) {
    475475                                $src = '';
    476476                        }
    477477                }
    478478
    479479                return $src;
    480480        }
    481481
    482482        /**