WordPress.org

Make WordPress Core

Ticket #18268: esc_url-protocols.patch

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

Patch file for esc_url protocols enhancement

  • formatting.php

     
    22502250 
    22512251        if ( '' == $url ) 
    22522252                return $url; 
    2253         $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url); 
    2254         $strip = array('%0d', '%0a', '%0D', '%0A'); 
    2255         $url = _deep_replace($strip, $url); 
    2256         $url = str_replace(';//', '://', $url); 
     2253        $url = preg_replace( '|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url ); 
     2254        $strip = array( '%0d', '%0a', '%0D', '%0A' ); 
     2255        $url = _deep_replace( $strip, $url ); 
     2256        $url = str_replace( ';//', '://', $url ); 
    22572257        /* If the URL doesn't appear to contain a scheme, we 
    22582258         * presume it needs http:// appended (unless a relative 
    22592259         * link starting with /, # or ? or a php file). 
    22602260         */ 
    2261         if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) && 
    2262                 ! preg_match('/^[a-z0-9-]+?\.php/i', $url) ) 
     2261        if ( strpos( $url, ':' ) === false && ! in_array( $url[0], array( '/', '#', '?' ) ) && 
     2262                ! preg_match( '/^[a-z0-9-]+?\.php/i', $url ) ) 
    22632263                $url = 'http://' . $url; 
    22642264 
    22652265        // Replace ampersands and single quotes only when displaying. 
     
    22692269                $url = str_replace( "'", ''', $url ); 
    22702270        } 
    22712271 
    2272         if ( !is_array($protocols) ) 
    2273                 $protocols = array ('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn'); 
     2272        if ( !is_array( $protocols ) ) 
     2273                $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' ) ); 
    22742274        if ( wp_kses_bad_protocol( $url, $protocols ) != $url ) 
    22752275                return ''; 
    22762276 
    2277         return apply_filters('clean_url', $url, $original_url, $_context); 
     2277        return apply_filters( 'clean_url', $url, $original_url, $_context ); 
    22782278} 
    22792279 
    22802280/**