WordPress.org

Make WordPress Core

Ticket #18268: esc_url-protocols.patch

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