WordPress.org

Make WordPress Core

Ticket #18268: esc_url-protocols-2.patch

File esc_url-protocols-2.patch, 1.9 KB (added by sanchothefat, 7 years ago)

2nd patch with a few extra protocols including skype

  • formatting.php

     
    22462246
    22472247        if ( '' == $url )
    22482248                return $url;
    2249         $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
    2250         $strip = array('%0d', '%0a', '%0D', '%0A');
    2251         $url = _deep_replace($strip, $url);
    2252         $url = str_replace(';//', '://', $url);
     2249        $url = preg_replace( '|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url );
     2250        $strip = array( '%0d', '%0a', '%0D', '%0A' );
     2251        $url = _deep_replace( $strip, $url );
     2252        $url = str_replace( ';//', '://', $url );
    22532253        /* If the URL doesn't appear to contain a scheme, we
    22542254         * presume it needs http:// appended (unless a relative
    22552255         * link starting with /, # or ? or a php file).
    22562256         */
    2257         if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
    2258                 ! preg_match('/^[a-z0-9-]+?\.php/i', $url) )
     2257        if ( strpos( $url, ':' ) === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
     2258                ! preg_match( '/^[a-z0-9-]+?\.php/i', $url ) )
    22592259                $url = 'http://' . $url;
    22602260
    22612261        // Replace ampersands and single quotes only when displaying.
     
    22652265                $url = str_replace( "'", ''', $url );
    22662266        }
    22672267
    2268         if ( !is_array($protocols) )
    2269                 $protocols = array ('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn');
     2268        if ( ! is_array( $protocols ) )
     2269                $protocols = apply_filters( 'esc_url_protocols', array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'callto', 'tel', 'sms', 'fax', 'skype', 'git' ) );
    22702270        if ( wp_kses_bad_protocol( $url, $protocols ) != $url )
    22712271                return '';
    22722272
    2273         return apply_filters('clean_url', $url, $original_url, $_context);
     2273        return apply_filters( 'clean_url', $url, $original_url, $_context );
    22742274}
    22752275
    22762276/**