WordPress.org

Make WordPress Core

Ticket #18626: current_web_browser.patch

File current_web_browser.patch, 5.2 KB (added by azaozz, 3 years ago)
  • wp-includes/general-template.php

     
    17141714 * @return bool 
    17151715 */ 
    17161716function user_can_richedit() { 
    1717         global $wp_rich_edit, $pagenow, $is_iphone; 
     1717        global $current_web_browser; 
     1718        static $can_richedit = null; 
    17181719 
    1719         if ( !isset( $wp_rich_edit) ) { 
    1720                 if ( get_user_option( 'rich_editing' ) == 'true' && 
    1721                         !$is_iphone && // this includes all Safari mobile browsers 
    1722                         ( ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval($match[1]) >= 420 ) || 
    1723                                 !preg_match( '!opera[ /][2-8]|konqueror|safari!i', $_SERVER['HTTP_USER_AGENT'] ) ) 
    1724                 ) { 
    1725                         $wp_rich_edit = true; 
    1726                 } else { 
    1727                         $wp_rich_edit = false; 
    1728                 } 
     1720        if ( $can_richedit === null ) { 
     1721                if ( get_user_option( 'rich_editing' ) == 'true' && !empty($current_web_browser['richedit']) ) 
     1722                        $can_richedit = true; 
     1723                else 
     1724                        $can_richedit = false; 
    17291725        } 
    17301726 
    1731         return apply_filters('user_can_richedit', $wp_rich_edit); 
     1727        return apply_filters('user_can_richedit', $can_richedit); 
    17321728} 
    17331729 
    17341730/** 
  • wp-includes/vars.php

     
    4343// Simple browser detection 
    4444$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iphone = false; 
    4545 
     46$current_web_browser = array( 
     47        'name' => '', 
     48        'engine' => '', 
     49        'engine_version' => '', 
     50        'os' => '', 
     51        'device' => '', 
     52        'richedit' => false, 
     53        'platform' => '' 
     54); 
     55 
    4656if ( isset($_SERVER['HTTP_USER_AGENT']) ) { 
    47         if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false ) { 
     57        if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false ) { // is this still needed? 
    4858                $is_lynx = true; 
     59                $current_web_browser['name'] = 'Lynx'; 
     60                $current_web_browser['os'] = 'Linux'; 
    4961        } elseif ( stripos($_SERVER['HTTP_USER_AGENT'], 'chrome') !== false ) { 
    5062                if ( stripos( $_SERVER['HTTP_USER_AGENT'], 'chromeframe' ) !== false ) { 
    5163                        if ( $is_chrome = apply_filters( 'use_google_chrome_frame', is_admin() ) ) 
     
    5466                } else { 
    5567                        $is_chrome = true; 
    5668                } 
     69                $current_web_browser['name'] = 'Chrome'; 
     70                $current_web_browser['engine'] = 'WebKit'; 
    5771        } elseif ( stripos($_SERVER['HTTP_USER_AGENT'], 'safari') !== false ) { 
    5872                $is_safari = true; 
     73                $current_web_browser['name'] = 'Safari'; 
     74                $current_web_browser['engine'] = 'WebKit'; 
    5975        } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false ) { 
    6076                $is_gecko = true; 
    61         } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false ) { 
    62                 $is_winIE = true; 
    63         } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false ) { 
    64                 $is_macIE = true; 
     77                $current_web_browser['engine'] = 'Gecko'; 
     78 
     79                if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false ) 
     80                        $current_web_browser['name'] = 'Firefox'; 
     81 
     82        } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false ) { 
     83                $is_IE = $is_winIE = true; 
     84                $current_web_browser['name'] = $current_web_browser['engine'] = 'MSIE'; 
    6585        } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false ) { 
    6686                $is_opera = true; 
    67         } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false ) { 
    68                 $is_NS4 = true; 
     87                $current_web_browser['name'] = 'Opera'; 
     88                $current_web_browser['engine'] = 'Presto'; 
    6989        } 
    7090} 
    7191 
    72 if ( $is_safari && stripos($_SERVER['HTTP_USER_AGENT'], 'mobile') !== false ) 
    73         $is_iphone = true; 
     92function _current_web_browser() { 
     93        global $current_web_browser, $is_safari, $is_iphone; 
    7494 
    75 $is_IE = ( $is_macIE || $is_winIE ); 
     95        $matches = array(); 
     96        if ( stripos($_SERVER['HTTP_USER_AGENT'], 'mobile') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) { 
     97                $current_web_browser['platform'] = 'mobile'; 
    7698 
     99                if ( preg_match('/(iphone|ipod|ipad|blackberry|android)/i', $_SERVER['HTTP_USER_AGENT'], $matches) ) 
     100                        $current_web_browser['device'] = $matches[1]; 
     101 
     102                // back compat 
     103                if ( $is_safari ) 
     104                        $is_iphone = true; 
     105 
     106        } elseif ( preg_match('/(spider|crawl|slurp|bot)/i', $_SERVER['HTTP_USER_AGENT']) ) { 
     107                $current_web_browser['platform'] = 'bot'; 
     108        } 
     109 
     110        if ( preg_match('/(windows|linux|macintosh|solaris|bsd)/i', $_SERVER['HTTP_USER_AGENT'], $matches) ) { 
     111                $current_web_browser['os'] = $matches[1]; 
     112 
     113                if ( empty($current_web_browser['platform']) ) { 
     114                        $current_web_browser['platform'] = 'desktop'; 
     115                        $current_web_browser['device'] = 'pc'; // includes laptops 
     116                        $current_web_browser['richedit'] = true; 
     117                } 
     118        } 
     119 
     120        if ( preg_match('!(?:AppleWebKit/|Gecko/|Presto/|MSIE )([0-9.]+)!', $_SERVER['HTTP_USER_AGENT'], $matches) ) 
     121                $current_web_browser['engine_version'] = round( (float) $matches[1], 2 ); 
     122 
     123        if ( $current_web_browser['engine'] == 'WebKit' && $current_web_browser['engine_version'] >= 534 ) 
     124                $current_web_browser['richedit'] = true; 
     125} 
     126_current_web_browser(); 
     127 
    77128// Server detection 
    78129 
    79130/** 
     
    94145 */ 
    95146$is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false); 
    96147 
    97 ?> 
    98  No newline at end of file 
     148?>