From e15836fdf9b03b18369b938108611f93532a0e37 Mon Sep 17 00:00:00 2001 From: Romain d'Alverny Date: Tue, 5 Apr 2011 13:51:01 +0000 Subject: fix for user-agent string format change --- lib/Downloads.php | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/Downloads.php b/lib/Downloads.php index 25cfa89c3..e64c9ee45 100644 --- a/lib/Downloads.php +++ b/lib/Downloads.php @@ -20,6 +20,13 @@ class Downloads * @param string $ua * * @return array + * + * @todo unit tests or use something else + * Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.1.2 Safari/533.18.5 + * Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20110330 Firefox/4.0 + * other old ones + * + * @todo refactor this */ public static function get_platform($ua = null) { @@ -32,15 +39,21 @@ class Downloads ); $locale = null; + if (preg_match_all('/([.^\(^\)]*) \((.*)\) (.*)/', $ua, $r)) { $r = $r[2][0]; $r = explode(';', $r); - $r = explode(')', trim($r[3])); - if (strlen($r[0]) > 5) - $r = substr($r[0], 0, 5); + if (isset($r[3])) { + $r = explode(')', trim($r[3])); + if (strlen($r[0]) > 5) + $r = substr($r[0], 0, 5); + else + $r = $r[0]; + } else - $r = $r[0]; + $r = null; + $locale = $r; } @@ -70,7 +83,7 @@ class Downloads return array( 'arch' => $arch, 'system' => $sys, - 'locale' => $locale, + 'locale' => $locale, // FIXME (rda) use Accept-Language instead 'browser' => $browser ); } -- cgit v1.2.1