WordPress.org

Make WordPress Core

Ticket #17433: 17433.diff

File 17433.diff, 3.2 KB (added by kurtpayne, 4 years ago)
  • wp-includes/formatting.php

     
    15221522        if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) { 
    15231523                return apply_filters( 'is_email', false, $email, 'domain_period_limits' ); 
    15241524        } 
     1525         
     1526        // If the domain is one word ... let it through if we can do a DNS lookup on the domain 
     1527        if ( FALSE === strpos($domain, '.') ) { 
     1528                if ( FALSE !== filter_var(gethostbyname($domain), FILTER_VALIDATE_IP) ) 
     1529                        return apply_filters( 'is_email', $email, $email, null ); 
     1530                else 
     1531                        return apply_filters( 'is_email', false, $email, 'domain_no_periods' ); 
     1532        } 
    15251533 
    15261534        // Split the domain into subs 
    15271535        $subs = explode( '.', $domain ); 
     
    17441752                return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' ); 
    17451753        } 
    17461754 
    1747         // Split the domain into subs 
    1748         $subs = explode( '.', $domain ); 
     1755        // If the domain is one word ... let it through if we can do a DNS lookup on the domain 
     1756        if ( FALSE === strpos($domain, '.') ) { 
     1757                $new_domain = preg_replace( '/[^a-z0-9-]+/i', '', $domain ); 
     1758                if ( !empty($new_domain) && FALSE !== filter_var(gethostbyname($domain), FILTER_VALIDATE_IP) ) 
     1759                        $domain = $new_domain; 
     1760                else 
     1761                        return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' ); 
     1762        } else { 
    17491763 
    1750         // Assume the domain will have at least two subs 
    1751         if ( 2 > count( $subs ) ) { 
    1752                 return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' ); 
    1753         } 
     1764                // Split the domain into subs 
     1765                $subs = explode( '.', $domain ); 
    17541766 
    1755         // Create an array that will contain valid subs 
    1756         $new_subs = array(); 
     1767                // Assume the domain will have at least two subs 
     1768                if ( 2 > count( $subs ) ) { 
     1769                        return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' ); 
     1770                } 
    17571771 
    1758         // Loop through each sub 
    1759         foreach ( $subs as $sub ) { 
    1760                 // Test for leading and trailing hyphens 
    1761                 $sub = trim( $sub, " \t\n\r\0\x0B-" ); 
     1772                // Create an array that will contain valid subs 
     1773                $new_subs = array(); 
    17621774 
    1763                 // Test for invalid characters 
    1764                 $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub ); 
     1775                // Loop through each sub 
     1776                foreach ( $subs as $sub ) { 
     1777                        // Test for leading and trailing hyphens 
     1778                        $sub = trim( $sub, " \t\n\r\0\x0B-" ); 
    17651779 
    1766                 // If there's anything left, add it to the valid subs 
    1767                 if ( '' !== $sub ) { 
    1768                         $new_subs[] = $sub; 
     1780                        // Test for invalid characters 
     1781                        $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub ); 
     1782 
     1783                        // If there's anything left, add it to the valid subs 
     1784                        if ( '' !== $sub ) { 
     1785                                $new_subs[] = $sub; 
     1786                        } 
    17691787                } 
    1770         } 
    17711788 
    1772         // If there aren't 2 or more valid subs 
    1773         if ( 2 > count( $new_subs ) ) { 
    1774                 return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' ); 
    1775         } 
     1789                // If there aren't 2 or more valid subs 
     1790                if ( 2 > count( $new_subs ) ) { 
     1791                        return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' ); 
     1792                } 
    17761793 
    1777         // Join valid subs into the new domain 
    1778         $domain = join( '.', $new_subs ); 
     1794                // Join valid subs into the new domain 
     1795                $domain = join( '.', $new_subs ); 
     1796        } 
    17791797 
    17801798        // Put the email back together 
    17811799        $email = $local . '@' . $domain;