diff options
Diffstat (limited to 'plugins/DevicesDetection/functions.php')
-rw-r--r-- | plugins/DevicesDetection/functions.php | 86 |
1 files changed, 60 insertions, 26 deletions
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php index 1cf8c87e95..af76162f01 100644 --- a/plugins/DevicesDetection/functions.php +++ b/plugins/DevicesDetection/functions.php @@ -9,8 +9,10 @@ namespace Piwik\Plugins\DevicesDetection; -use DeviceDetector; use Piwik\Piwik; +use DeviceDetector\Parser\OperatingSystem AS OperatingSystemParser; +use DeviceDetector\Parser\Device\DeviceParserAbstract AS DeviceParser; +use DeviceDetector\Parser\Client\Browser AS BrowserParser; function getBrandLogo($label) { @@ -25,7 +27,7 @@ function getBrandLogo($label) function getBrowserFamilyFullNameExtended($label) { - foreach (DeviceDetector::$browserFamilies as $name => $family) { + foreach (BrowserParser::getAvailableBrowserFamilies() as $name => $family) { if (in_array($label, $family)) { return $name; } @@ -35,8 +37,9 @@ function getBrowserFamilyFullNameExtended($label) function getBrowserFamilyLogoExtended($label) { - if (array_key_exists($label, DeviceDetector::$browserFamilies)) { - return getBrowserLogoExtended(DeviceDetector::$browserFamilies[$label][0]); + $browserFamilies = BrowserParser::getAvailableBrowserFamilies(); + if (!empty($label) && array_key_exists($label, $browserFamilies)) { + return getBrowserLogoExtended($browserFamilies[$label][0]); } return getBrowserLogoExtended($label); } @@ -45,8 +48,9 @@ function getBrowserNameExtended($label) { $short = substr($label, 0, 2); $ver = substr($label, 3, 10); - if (array_key_exists($short, DeviceDetector::$browsers)) { - return trim(ucfirst(DeviceDetector::$browsers[$short]) . ' ' . $ver); + $browsers = BrowserParser::getAvailableBrowsers(); + if (array_key_exists($short, $browsers)) { + return trim(ucfirst($browsers[$short]) . ' ' . $ver); } else { return Piwik::translate('General_Unknown'); } @@ -70,8 +74,8 @@ function getBrowserLogoExtended($short) // If name is given instead of short code, try to find matching shortcode if (strlen($short) > 2) { - if (in_array($short, DeviceDetector::$browsers)) { - $flippedBrowsers = array_flip(DeviceDetector::$browsers); + if (in_array($short, BrowserParser::getAvailableBrowsers())) { + $flippedBrowsers = array_flip(BrowserParser::getAvailableBrowsers()); $short = $flippedBrowsers[$short]; } else { $short = substr($short, 0, 2); @@ -80,18 +84,27 @@ function getBrowserLogoExtended($short) $family = getBrowserFamilyFullNameExtended($short); - if (array_key_exists($short, DeviceDetector::$browsers) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) { + $browserFamilies = BrowserParser::getAvailableBrowserFamilies(); + + if (!empty($short) && + array_key_exists($short, BrowserParser::getAvailableBrowsers()) && + file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) { + return sprintf($path, $short); - } elseif (array_key_exists($family, DeviceDetector::$browserFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$browserFamilies[$family][0]))) { - return sprintf($path, DeviceDetector::$browserFamilies[$family][0]); + + } elseif (!empty($short) && + array_key_exists($family, $browserFamilies) && + file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $browserFamilies[$family][0]))) { + + return sprintf($path, $browserFamilies[$family][0]); } return sprintf($path, 'UNK'); } function getDeviceBrandLabel($label) { - if (array_key_exists($label, DeviceDetector::$deviceBrands)) { - return ucfirst(DeviceDetector::$deviceBrands[$label]); + if (array_key_exists($label, DeviceParser::$deviceBrands)) { + return ucfirst(DeviceParser::$deviceBrands[$label]); } else { return Piwik::translate('General_Unknown'); } @@ -110,8 +123,14 @@ function getDeviceTypeLabel($label) 'smart display' => 'DevicesDetection_SmartDisplay', 'camera' => 'DevicesDetection_Camera' ); - if (isset(DeviceDetector::$deviceTypes[$label]) && isset($translations[DeviceDetector::$deviceTypes[$label]])) { - return Piwik::translate($translations[DeviceDetector::$deviceTypes[$label]]); + + $deviceTypes = DeviceParser::getAvailableDeviceTypes(); + + if (is_numeric($label) && + in_array($label, $deviceTypes) && + isset($translations[array_search($label, $deviceTypes)])) { + + return Piwik::translate($translations[array_search($label, $deviceTypes)]); } else if (isset($translations[$label])) { return Piwik::translate($translations[$label]); } else { @@ -121,8 +140,8 @@ function getDeviceTypeLabel($label) function getDeviceTypeLogo($label) { - if (is_numeric($label) && isset(DeviceDetector::$deviceTypes[$label])) { - $label = DeviceDetector::$deviceTypes[$label]; + if (is_numeric($label) && in_array($label, DeviceParser::getAvailableDeviceTypes())) { + $label = array_search($label, DeviceParser::getAvailableDeviceTypes()); } $label = strtolower($label); @@ -156,7 +175,10 @@ function getModelName($label) function getOSFamilyFullNameExtended($label) { - $label = DeviceDetector::getOsFamily($label); + if ($label == \Piwik\Tracker\Settings::OS_BOT) { + return 'Bot'; + } + $label = OperatingSystemParser::getOsFamily($label); if($label !== false) { return $label; } @@ -165,18 +187,22 @@ function getOSFamilyFullNameExtended($label) function getOsFamilyLogoExtended($label) { - if (array_key_exists($label, DeviceDetector::$osFamilies)) { - return getOsLogoExtended(DeviceDetector::$osFamilies[$label][0]); + $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies(); + if (!empty($label) && array_key_exists($label, $osFamilies)) { + return getOsLogoExtended($osFamilies[$label][0]); } return getOsLogoExtended($label); } function getOsFullNameExtended($label) { + if (substr($label, 0, 3) == \Piwik\Tracker\Settings::OS_BOT) { + return 'Bot'; + } if (!empty($label) && $label != ";") { $os = substr($label, 0, 3); $ver = substr($label, 4, 15); - $name = DeviceDetector::getOsNameFromId($os, $ver); + $name = OperatingSystemParser::getNameFromId($os, $ver); if (!empty($name)) { return $name; } @@ -202,19 +228,27 @@ function getOsLogoExtended($short) // If name is given instead of short code, try to find matching shortcode if (strlen($short) > 3) { - if (array_key_exists($short, DeviceDetector::$osShorts)) { - $short = DeviceDetector::$osShorts[$short]; + if (in_array($short, OperatingSystemParser::getAvailableOperatingSystems())) { + $short = array_search($short, OperatingSystemParser::getAvailableOperatingSystems()); } else { $short = substr($short, 0, 3); } } $family = getOsFamilyFullNameExtended($short); + $osFamilies = OperatingSystemParser::getAvailableOperatingSystemFamilies(); + + if (!empty($short) && + array_key_exists($short, OperatingSystemParser::getAvailableOperatingSystems()) && + file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) { - if (in_array($short, DeviceDetector::$osShorts) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $short))) { return sprintf($path, $short); - } elseif (array_key_exists($family, DeviceDetector::$osFamilies) && file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, DeviceDetector::$osFamilies[$family][0]))) { - return sprintf($path, DeviceDetector::$osFamilies[$family][0]); + + } elseif (!empty($family) && + array_key_exists($family, $osFamilies) && + file_exists(PIWIK_INCLUDE_PATH.'/'.sprintf($path, $osFamilies[$family][0]))) { + + return sprintf($path, $osFamilies[$family][0]); } return sprintf($path, 'UNK'); } |