Download plugins/CustomVariables/VisitorDetails.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 5.84 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CustomVariables/VisitorDetails.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/CustomVariables/VisitorDetails.php
-
curl -L -o VisitorDetails.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CustomVariables/VisitorDetails.php
5.84 kB
| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| * | |
| */ | |
| namespace Piwik\Plugins\CustomVariables; | |
| use Piwik\Plugins\Live\VisitorDetailsAbstract; | |
| use Piwik\View; | |
| class VisitorDetails extends VisitorDetailsAbstract | |
| { | |
| public function extendVisitorDetails(&$visitor) | |
| { | |
| $customVariables = array(); | |
| $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); | |
| for ($i = 1; $i <= $maxCustomVariables; $i++) { | |
| if (!empty($this->details['custom_var_k' . $i])) { | |
| $customVariables[$i] = array( | |
| 'customVariableName' . $i => $this->details['custom_var_k' . $i], | |
| 'customVariableValue' . $i => $this->details['custom_var_v' . $i], | |
| ); | |
| } | |
| } | |
| $visitor['customVariables'] = $customVariables; | |
| } | |
| public function extendActionDetails(&$action, $nextAction, $visitorDetails) | |
| { | |
| $maxCustomVariables = CustomVariables::getNumUsableCustomVariables(); | |
| $customVariablesPage = array(); | |
| for ($i = 1; $i <= $maxCustomVariables; $i++) { | |
| if (!empty($action['custom_var_k' . $i])) { | |
| $cvarKey = $action['custom_var_k' . $i]; | |
| if (in_array($cvarKey, ['_pk_scat', '_pk_scount'])) { | |
| continue; // ignore old site search variables | |
| } | |
| $customVariablesPage[$i] = array( | |
| 'customVariablePageName' . $i => $cvarKey, | |
| 'customVariablePageValue' . $i => $action['custom_var_v' . $i], | |
| ); | |
| } | |
| unset($action['custom_var_k' . $i]); | |
| unset($action['custom_var_v' . $i]); | |
| } | |
| if (!empty($customVariablesPage)) { | |
| $action['customVariables'] = $customVariablesPage; | |
| } | |
| } | |
| public function renderActionTooltip($action, $visitInfo) | |
| { | |
| if (empty($action['customVariables'])) { | |
| return []; | |
| } | |
| $view = new View('@CustomVariables/_actionTooltip'); | |
| $view->action = $action; | |
| return [[ 40, $view->render() ]]; | |
| } | |
| public function renderVisitorDetails($visitInfo) | |
| { | |
| if (empty($visitInfo['customVariables'])) { | |
| return []; | |
| } | |
| $view = new View('@CustomVariables/_visitorDetails'); | |
| $view->visitInfo = $visitInfo; | |
| return [[ 50, $view->render() ]]; | |
| } | |
| protected $customVariables = []; | |
| public function initProfile($visits, &$profile) | |
| { | |
| $this->customVariables = [ | |
| Model::SCOPE_PAGE => [], | |
| Model::SCOPE_VISIT => [], | |
| ]; | |
| } | |
| public function handleProfileAction($action, &$profile) | |
| { | |
| if (empty($action['customVariables'])) { | |
| return; | |
| } | |
| foreach ($action['customVariables'] as $index => $customVariable) { | |
| $scope = Model::SCOPE_PAGE; | |
| $name = $customVariable['customVariablePageName' . $index]; | |
| $value = $customVariable['customVariablePageValue' . $index]; | |
| if (empty($value)) { | |
| continue; | |
| } | |
| if (!array_key_exists($name, $this->customVariables[$scope])) { | |
| $this->customVariables[$scope][$name] = []; | |
| } | |
| if (!array_key_exists($value, $this->customVariables[$scope][$name])) { | |
| $this->customVariables[$scope][$name][$value] = 0; | |
| } | |
| $this->customVariables[$scope][$name][$value]++; | |
| } | |
| } | |
| public function handleProfileVisit($visit, &$profile) | |
| { | |
| if (empty($visit['customVariables'])) { | |
| return; | |
| } | |
| foreach ($visit['customVariables'] as $index => $customVariable) { | |
| $scope = Model::SCOPE_VISIT; | |
| $name = $customVariable['customVariableName' . $index]; | |
| $value = $customVariable['customVariableValue' . $index]; | |
| if (empty($value)) { | |
| continue; | |
| } | |
| if (!array_key_exists($name, $this->customVariables[$scope])) { | |
| $this->customVariables[$scope][$name] = []; | |
| } | |
| if (!array_key_exists($value, $this->customVariables[$scope][$name])) { | |
| $this->customVariables[$scope][$name][$value] = 0; | |
| } | |
| $this->customVariables[$scope][$name][$value]++; | |
| } | |
| } | |
| public function finalizeProfile($visits, &$profile) | |
| { | |
| $customVariables = $this->customVariables; | |
| foreach ($customVariables as $scope => &$variables) { | |
| if (empty($variables)) { | |
| unset($customVariables[$scope]); | |
| continue; | |
| } | |
| foreach ($variables as $name => &$values) { | |
| arsort($values); | |
| } | |
| } | |
| if (!empty($customVariables)) { | |
| $profile['customVariables'] = $this->convertForProfile($customVariables); | |
| } | |
| } | |
| protected function convertForProfile($customVariables) | |
| { | |
| $convertedVariables = []; | |
| foreach ($customVariables as $scope => $scopeVariables) { | |
| $convertedVariables[$scope] = []; | |
| foreach ($scopeVariables as $name => $values) { | |
| $variable = [ | |
| 'name' => $name, | |
| 'values' => [] | |
| ]; | |
| foreach ($values as $value => $count) { | |
| $variable['values'][] = [ | |
| 'value' => $value, | |
| 'count' => $count | |
| ]; | |
| } | |
| $convertedVariables[$scope][] = $variable; | |
| } | |
| } | |
| return $convertedVariables; | |
| } | |
| } | |