Download plugins/DevicesDetection/VisitorDetails.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 5.85 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/DevicesDetection/VisitorDetails.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/DevicesDetection/VisitorDetails.php
-
curl -L -o VisitorDetails.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/DevicesDetection/VisitorDetails.php
5.85 kB
| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| namespace Piwik\Plugins\DevicesDetection; | |
| use Piwik\Piwik; | |
| use Piwik\Plugins\Live\VisitorDetailsAbstract; | |
| require_once PIWIK_INCLUDE_PATH . '/plugins/DevicesDetection/functions.php'; | |
| class VisitorDetails extends VisitorDetailsAbstract | |
| { | |
| public function extendVisitorDetails(&$visitor) | |
| { | |
| $visitor['deviceType'] = $this->getDeviceType(); | |
| $visitor['deviceTypeIcon'] = $this->getDeviceTypeIcon(); | |
| $visitor['deviceBrand'] = $this->getDeviceBrand(); | |
| $visitor['deviceModel'] = $this->getDeviceModel(); | |
| $visitor['operatingSystem'] = $this->getOperatingSystem(); | |
| $visitor['operatingSystemName'] = $this->getOperatingSystemName(); | |
| $visitor['operatingSystemIcon'] = $this->getOperatingSystemIcon(); | |
| $visitor['operatingSystemCode'] = $this->getOperatingSystemCode(); | |
| $visitor['operatingSystemVersion'] = $this->getOperatingSystemVersion(); | |
| $visitor['browserFamily'] = $this->getBrowserEngine(); | |
| $visitor['browserFamilyDescription'] = $this->getBrowserEngineDescription(); | |
| $visitor['browser'] = $this->getBrowser(); | |
| $visitor['browserName'] = $this->getBrowserName(); | |
| $visitor['browserIcon'] = $this->getBrowserIcon(); | |
| $visitor['browserCode'] = $this->getBrowserCode(); | |
| $visitor['browserVersion'] = $this->getBrowserVersion(); | |
| } | |
| protected function getDeviceType() | |
| { | |
| return getDeviceTypeLabel($this->details['config_device_type']); | |
| } | |
| protected function getDeviceTypeIcon() | |
| { | |
| return getDeviceTypeLogo($this->details['config_device_type']); | |
| } | |
| protected function getDeviceBrand() | |
| { | |
| return getDeviceBrandLabel($this->details['config_device_brand']); | |
| } | |
| protected function getDeviceModel() | |
| { | |
| return getModelName($this->details['config_device_model']); | |
| } | |
| protected function getOperatingSystemCode() | |
| { | |
| return $this->details['config_os']; | |
| } | |
| protected function getOperatingSystem() | |
| { | |
| return getOsFullName($this->details['config_os'] . ";" . $this->details['config_os_version']); | |
| } | |
| protected function getOperatingSystemName() | |
| { | |
| return getOsFullName($this->details['config_os']); | |
| } | |
| protected function getOperatingSystemVersion() | |
| { | |
| return $this->details['config_os_version']; | |
| } | |
| protected function getOperatingSystemIcon() | |
| { | |
| return getOsLogo($this->details['config_os']); | |
| } | |
| protected function getBrowserEngineDescription() | |
| { | |
| return getBrowserEngineName($this->getBrowserEngine()); | |
| } | |
| protected function getBrowserEngine() | |
| { | |
| return $this->details['config_browser_engine']; | |
| } | |
| protected function getBrowserCode() | |
| { | |
| return $this->details['config_browser_name']; | |
| } | |
| protected function getBrowserVersion() | |
| { | |
| return $this->details['config_browser_version']; | |
| } | |
| protected function getBrowser() | |
| { | |
| return getBrowserNameWithVersion($this->details['config_browser_name'] . ";" . $this->details['config_browser_version']); | |
| } | |
| protected function getBrowserName() | |
| { | |
| return getBrowserName($this->details['config_browser_name']); | |
| } | |
| protected function getBrowserIcon() | |
| { | |
| return getBrowserLogo($this->details['config_browser_name'] . ";" . $this->details['config_browser_version']); | |
| } | |
| private $devices = array(); | |
| public function initProfile($visits, &$profile) | |
| { | |
| $this->devices = array(); | |
| } | |
| public function handleProfileVisit($visit, &$profile) | |
| { | |
| $deviceType = $visit->getColumn('deviceType'); | |
| $deviceTypeIcon = $visit->getColumn('deviceTypeIcon'); | |
| $deviceBrand = $visit->getColumn('deviceBrand'); | |
| $deviceModel = $visit->getColumn('deviceModel'); | |
| if ($deviceBrand == Piwik::translate('General_Unknown')) { | |
| $deviceName = $deviceModel; | |
| } else { | |
| $deviceName = trim($deviceBrand . " " . $deviceModel); | |
| } | |
| if (!isset($this->devices[$deviceType])) { | |
| $this->devices[$deviceType] = array( | |
| 'count' => 0, | |
| 'icon' => $deviceTypeIcon, | |
| 'devices' => array(), | |
| ); | |
| } | |
| ++$this->devices[$deviceType]['count']; | |
| if (!isset($this->devices[$deviceType]['devices'][$deviceName])) { | |
| $this->devices[$deviceType]['devices'][$deviceName] = 0; | |
| } | |
| ++$this->devices[$deviceType]['devices'][$deviceName]; | |
| } | |
| public function finalizeProfile($visits, &$profile) | |
| { | |
| $devices = $this->devices; | |
| uksort($this->devices, function ($a, $b) use ($devices) { | |
| $cmp = strcmp($devices[$b]['count'], $devices[$a]['count']); | |
| if (0 == $cmp) { | |
| $cmp = strcmp($a, $b); | |
| } | |
| return $cmp; | |
| }); | |
| $devices = []; | |
| foreach ($this->devices as $type => $devicesData) { | |
| $typeDevices = []; | |
| foreach ($devicesData['devices'] as $name => $count) { | |
| $typeDevices[] = [ | |
| 'name' => $name, | |
| 'count' => $count, | |
| ]; | |
| } | |
| $devices[] = [ | |
| 'type' => $type, | |
| 'count' => $devicesData['count'], | |
| 'icon' => $devicesData['icon'], | |
| 'devices' => $typeDevices, | |
| ]; | |
| } | |
| $profile['devices'] = $devices; | |
| } | |
| } | |