From 13f776e0ff0df6fcb02420811118e3e4cb1b7a49 Mon Sep 17 00:00:00 2001 From: sgiehl <stefan@piwik.org> Date: Thu, 13 Feb 2014 14:37:36 +0100 Subject: [PATCH] added detection for some android powered cameras and gaming console --- .../UserAgentParserEnhanced.php | 5 +- .../regexes/mobiles.yml | 19 ++++++- .../UserAgentParserEnhanced/regexes/oss.yml | 2 +- plugins/DevicesDetection/functions.php | 6 ++- .../images/screens/camera.png | Bin 0 -> 644 bytes plugins/DevicesDetection/lang/en.json | 1 + .../userAgentParserEnhancedFixtures.yml | 50 +++++++++++++++++- 7 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 plugins/DevicesDetection/images/screens/camera.png diff --git a/plugins/DevicesDetection/UserAgentParserEnhanced/UserAgentParserEnhanced.php b/plugins/DevicesDetection/UserAgentParserEnhanced/UserAgentParserEnhanced.php index 0e51996f3d..fa5ad4ac60 100644 --- a/plugins/DevicesDetection/UserAgentParserEnhanced/UserAgentParserEnhanced.php +++ b/plugins/DevicesDetection/UserAgentParserEnhanced/UserAgentParserEnhanced.php @@ -19,7 +19,8 @@ class UserAgentParserEnhanced 'console', // 4 'tv', // 5 'car browser', // 6 - 'smart display' // 7 + 'smart display', // 7 + 'camera' // 8 ); public static $deviceBrands = array( @@ -106,12 +107,14 @@ class UserAgentParserEnhanced 'NG' => 'NGM', 'NI' => 'Nintendo', 'NK' => 'Nokia', + 'NN' => 'Nikon', 'NW' => 'Newgen', 'NX' => 'Nexian', 'OD' => 'Onda', 'OP' => 'OPPO', 'OR' => 'Orange', 'OT' => 'O2', + 'OU' => 'OUYA', 'PA' => 'Panasonic', 'PE' => 'PEAQ', 'PH' => 'Philips', diff --git a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/mobiles.yml b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/mobiles.yml index e8e987462e..14ae68db3d 100644 --- a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/mobiles.yml +++ b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/mobiles.yml @@ -761,7 +761,13 @@ Nexian: model: '$1' - regex: 'S?Nexian-([a-z0-9]+)' model: '$1' - + +#Nikon +Nikon: + regex: 'Coolpix S800c' + device: 'camera' + model: 'Coolpix S800c' + # o2 O2: regex: 'Xda|O2[ \-]|COCOON' @@ -798,6 +804,12 @@ Orange: device: 'smartphone' model: 'SPV $1' +#OUYA +OUYA: + regex: 'OUYA' + device: 'console' + model: 'OUYA' + # panasonic Panasonic: regex: 'Panasonic' @@ -851,7 +863,7 @@ Siemens: # Samsung Samsung: - regex: 'SAMSUNG|S(?:CH|GH|PH|EC|AM|HV|HW)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]' + regex: 'SAMSUNG|S(?:CH|GH|PH|EC|AM|HV|HW)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|EK-GC[0-9]{3}' device: 'smartphone' models: - regex: '(GT-(P|N8|N5)[0-9]+[a-z]?)' @@ -867,6 +879,9 @@ Samsung: model: '$1' - regex: '((?:SCH|SGH|SPH|SHV|SHW|GT)-[a-z0-9]+)' model: '$1' + - regex: 'EK-GC([0-9]{3})' + device: 'camera' + model: 'Galaxy Camera $1' - regex: 'SEC-([a-z0-9]+)' model: '$1' - regex: 'SAM-([a-z0-9]+)' diff --git a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml index a42f74c941..5c950d50af 100644 --- a/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml +++ b/plugins/DevicesDetection/UserAgentParserEnhanced/regexes/oss.yml @@ -47,7 +47,7 @@ ########## # Android ########## -- regex: 'Android[ /](\d+\.\d+)' +- regex: 'Android[ /](?:[a-z]+ )?(\d+\.\d+)' name: 'Android' version: '$1' diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php index 37b5ec3ea2..21cfa8ae33 100644 --- a/plugins/DevicesDetection/functions.php +++ b/plugins/DevicesDetection/functions.php @@ -107,7 +107,8 @@ function getDeviceTypeLabel($label) 'console' => 'DevicesDetection_Console', 'tv' => 'DevicesDetection_TV', 'car browser' => 'DevicesDetection_CarBbrowser', - 'smart display' => 'DevicesDetection_SmartDisplay' + 'smart display' => 'DevicesDetection_SmartDisplay', + 'camera' => 'DevicesDetection_Camera' ); if (isset(UserAgentParserEnhanced::$deviceTypes[$label]) && isset($translations[UserAgentParserEnhanced::$deviceTypes[$label]])) { return Piwik::translate($translations[UserAgentParserEnhanced::$deviceTypes[$label]]); @@ -133,7 +134,8 @@ function getDeviceTypeLogo($label) "tv" => "tv.png", "feature phone" => "mobile.gif", "console" => "console.gif", - "car browser" => "carbrowser.png"); + "car browser" => "carbrowser.png", + "camera" => "camera.png"); if (!array_key_exists($label, $deviceTypeLogos) || $label == "Unknown") { $label = 'unknown.gif'; diff --git a/plugins/DevicesDetection/images/screens/camera.png b/plugins/DevicesDetection/images/screens/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9deed867e3cb91fde70f4d68cb670327814ecc GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&C3 z=<CS9u(6-}Pa-P=0|RG)M`SSr1K(i~W;~w1B87p0L8`<xq9iy!t)x7$D3u`~F*C13 z&(AePq0Cs%RL{`B;7id$1_s8@o-U3d7XGn8(b>X*0_Xl4-1MI0>l)y(N<Zr8HTJKT z)AL@a?%sIyYRcxFTORBW$XLqzlesdpTa+dGgKA~yZ7Icmu4jSTPc(1d-CU<G+;{My z!I>K4`!kEv)I@xae6KZXshFp3!g+Jf0SRWuBP@{;N-WAI)$J!F`j2nc<J`H2$>PL| z@4pvc<XDj!xi)O|&751?cxwzKw%mUEu%M&e!Kv~5zM5ZmR$P_0uL&{n*_>b#5wmN1 zLHWaPvJ(F0W}i?0y7bre!QSrmjLxiLS5})^DtSKaP&#R7%C+|BBagdzId^@|9u7@q zy`?v`_WEPdxV&6<RZGF%%q)@TVMbTq*S?-RcfWm|`JO+UH?4{HKEt>^d`@QT-nn;q z51WKt?|R*O=+vv@lP_;)Z!dH`Dmpt&P^RU~)~|EJ*Q>M4w_IwZ^?=V*Ns*sLp<rsk zldPEJWb?|uY#%NeXGbl381hs*(P6>Sl+^m~XFom^wEg6H@W;=;>@yDhocw|P*-z8u zUHKQ!fB5|~<<+A%GS9ypKKXS0{TKXJjnnpQnCGu;QP#R?p>QGZMoZmBv2bm^T`qT> z?`x&b7B*Pvw|w&X=bLZl=uKCidoraY)_?is1Dq{)-<JJcVrXOc{iNI9^b6Mxl*UdM zu*>8Uc9Gnyt#X3ppEAe7t<4=gMT#<<P5Wif{AoB4)HsKMfq}u()z4*}Q$iB}rGOnn literal 0 HcmV?d00001 diff --git a/plugins/DevicesDetection/lang/en.json b/plugins/DevicesDetection/lang/en.json index d364dfb21c..c10124efef 100644 --- a/plugins/DevicesDetection/lang/en.json +++ b/plugins/DevicesDetection/lang/en.json @@ -19,6 +19,7 @@ "UserAgent": "User-Agent", "Smartphone": "Smartphone", "CarBrowser": "Car browser", + "Camera": "Camera", "Tablet": "Tablet", "SmartDisplay": "Smart display", "FeaturePhone": "Feature phone", diff --git a/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml b/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml index c274c1d1c4..c5f04a9170 100644 --- a/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml +++ b/tests/PHPUnit/Fixtures/userAgentParserEnhancedFixtures.yml @@ -16862,4 +16862,52 @@ brand: model: os_family: Android - browser_family: Android Browser \ No newline at end of file + browser_family: Android Browser +- + user_agent: Mozilla/5.0 (Linux; U; Android OUYA 4.1.2; en-us; OUYA Build/JZO54L-OUYA) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 + os: + name: Android + short_name: AND + version: 4.1 + browser: + name: Android Browser + short_name: AN + version: + device: + type: console + brand: OU + model: OUYA + os_family: Android + browser_family: Android Browser +- + user_agent: Mozilla/5.0 (Linux; U; Android 4.0; de-DE; EK-GC100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 + os: + name: Android + short_name: AND + version: 4.0 + browser: + name: Android Browser + short_name: AN + version: + device: + type: camera + brand: SA + model: Galaxy Camera 100 + os_family: Android + browser_family: Android Browser +- + user_agent: Mozilla/5.0 (Linux; Android 4.1.2; EK-GC100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.60140 + os: + name: Android + short_name: AND + version: 4.1 + browser: + name: Opera Mobile + short_name: OM + version: 15.0 + device: + type: camera + brand: SA + model: Galaxy Camera 100 + os_family: Android + browser_family: Opera \ No newline at end of file -- GitLab