diff options
author | sgiehl <stefan@piwik.org> | 2014-06-08 21:51:46 +0400 |
---|---|---|
committer | sgiehl <stefan@piwik.org> | 2014-06-08 21:51:46 +0400 |
commit | 6229e8ff5403b004e5994cf02d6721367474d17e (patch) | |
tree | bb99e41d8c3a6965439063d9307c095467cab6e2 /core/Tracker | |
parent | 08537777dacbc8888b2ff4b2bde29480d89a83a6 (diff) |
introduce devicedetector factory to get singleton instances of devicedetector based on the given user agent. That provides the possibility to reuse DeviceDetector for bot and visitor data detection.
Diffstat (limited to 'core/Tracker')
-rw-r--r-- | core/Tracker/Settings.php | 14 | ||||
-rw-r--r-- | core/Tracker/VisitExcluded.php | 6 |
2 files changed, 5 insertions, 15 deletions
diff --git a/core/Tracker/Settings.php b/core/Tracker/Settings.php index 65bb17fb94..08d4341d20 100644 --- a/core/Tracker/Settings.php +++ b/core/Tracker/Settings.php @@ -9,6 +9,7 @@ namespace Piwik\Tracker; use Piwik\DeviceDetectorCache; +use Piwik\DeviceDetectorFactory; use Piwik\Tracker; use DeviceDetector\DeviceDetector; @@ -37,18 +38,7 @@ class Settings $resolution = $this->request->getParam('res'); $userAgent = $this->request->getUserAgent(); - static $deviceDetectorsCache = array(); - if (array_key_exists($userAgent, $deviceDetectorsCache)) { - $deviceDetector = $deviceDetectorsCache[$userAgent]; - } - else { - $deviceDetector = new DeviceDetector($userAgent); - $deviceDetector->discardBotInformation(); - $deviceDetector->setCache(new DeviceDetectorCache('tracker', 86400)); - $deviceDetector->parse(); - - $deviceDetectorsCache[$userAgent] = $deviceDetector; - } + $deviceDetector = DeviceDetectorFactory::getInstance($userAgent); $aBrowserInfo = $deviceDetector->getClient(); if ($aBrowserInfo['type'] != 'browser') { diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php index 60b26a8867..d7af157b4a 100644 --- a/core/Tracker/VisitExcluded.php +++ b/core/Tracker/VisitExcluded.php @@ -11,6 +11,7 @@ namespace Piwik\Tracker; use DeviceDetector\Parser\Bot; use Piwik\Common; use Piwik\Config; +use Piwik\DeviceDetectorFactory; use Piwik\IP; use Piwik\Piwik; @@ -156,11 +157,10 @@ class VisitExcluded { $allowBots = $this->request->getParam('bots'); - $botParser = new Bot($this->userAgent); - $botParser->discardDetails(); + $deviceDetector = DeviceDetectorFactory::getInstance($this->userAgent); return !$allowBots - && ($botParser->parse() === true + && ($deviceDetector->isBot() || IP::isIpInRange($this->ip, $this->getBotIpRanges())); } |