WordPress.org

Make WordPress Core

Ticket #18626: current_web_browser.patch

File current_web_browser.patch, 5.2 KB (added by azaozz, 7 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?>