WordPress.org

Make WordPress Core

Ticket #18268: esc_url-protocols-2.patch

File esc_url-protocols-2.patch, 1.9 KB (added by sanchothefat, 4 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/**