Jelajahi Sumber

[ZF-11857] Zend_Http_UserAgent
Opera 9.7 UA for HTC HD2 browser causes E_NOTICE


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24540 44c647ce-9c0f-0410-b52a-842ac1e357ba

adamlundrigan 14 tahun lalu
induk
melakukan
8d4089e6cd

+ 8 - 2
library/Zend/Http/UserAgent/AbstractDevice.php

@@ -698,10 +698,16 @@ abstract class Zend_Http_UserAgent_AbstractDevice
                 }
             }
 
-            // UA ends with 'Opera X.XX'
+            // UA ends with 'Opera X.XX' or 'Opera/X.XX'
             if ($result['others']['detail'][0][1] == 'Opera') {
                 $result['browser_name']    = $result['others']['detail'][0][1];
-                $result['browser_version'] = $result['others']['detail'][1][1];
+                // Opera X.XX
+                if (isset($result['others']['detail'][1][1])) {
+                    $result['browser_version'] = $result['others']['detail'][1][1];
+                // Opera/X.XX
+                } elseif (isset($result['others']['detail'][0][2])) {
+                    $result['browser_version'] = $result['others']['detail'][0][2];
+                }
             }
 
             // Opera Mini

+ 10 - 0
tests/Zend/Http/UserAgent/AbstractDeviceTest.php

@@ -10118,4 +10118,14 @@ audio/vnd.qcelp, application/xhtml+xml'
         $capabilities = Zend_Http_UserAgent_AbstractDevice::extractFromUserAgent($userAgent);
         $this->assertEquals('Mozilla', $capabilities['browser_name']);
     }
+    
+    /**
+     * @group ZF-11857
+     */
+    public function testOperaOnHtcHd2UserAgentShouldNotResultInNotices()
+    {
+        $userAgent = 'HTC_HD2_T8585 Opera/9.7 (Windows NT 5.1; U; de)';
+        $capabilities = Zend_Http_UserAgent_AbstractDevice::extractFromUserAgent($userAgent);
+        $this->assertEquals('Opera', $capabilities['browser_name']);
+    }
 }