blob: f0021c9293855f4421d611718cad232aee45724b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\Referrers;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
use Piwik\UrlHelper;
use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
{
public function extendVisitorDetails(&$visitor)
{
$visitor['referrerType'] = $this->getReferrerType();
$visitor['referrerTypeName'] = $this->getReferrerTypeName();
$visitor['referrerName'] = $this->getReferrerName();
$visitor['referrerKeyword'] = $this->getKeyword();
$visitor['referrerKeywordPosition'] = $this->getKeywordPosition();
$visitor['referrerUrl'] = $this->getReferrerUrl();
$visitor['referrerSearchEngineUrl'] = $this->getSearchEngineUrl();
$visitor['referrerSearchEngineIcon'] = $this->getSearchEngineIcon();
}
public function renderVisitorDetails($visitorDetails)
{
$view = new View('@Referrers/_visitorDetails.twig');
$view->visitInfo = $visitorDetails;
return [[ 10, $view->render() ]];
}
protected function getReferrerType()
{
try {
$referrerType = getReferrerTypeFromShortName($this->details['referer_type']);
} catch (\Exception $e) {
$referrerType = '';
}
return $referrerType;
}
protected function getReferrerTypeName()
{
return getReferrerTypeLabel($this->details['referer_type']);
}
protected function getKeyword()
{
$keyword = $this->details['referer_keyword'];
if ($this->getReferrerType() == 'search') {
$keyword = API::getCleanKeyword($keyword);
}
return urldecode($keyword);
}
protected function getReferrerUrl()
{
if (UrlHelper::isLookLikeUrl($this->details['referer_url'])) {
return $this->details['referer_url'];
}
return null;
}
protected function getKeywordPosition()
{
if ($this->getReferrerType() == 'search'
&& strpos($this->getReferrerName(), 'Google') !== false
) {
$url = @parse_url($this->details['referer_url']);
if (empty($url['query'])) {
return null;
}
$position = UrlHelper::getParameterFromQueryString($url['query'], 'cd');
if (!empty($position)) {
return $position;
}
}
return null;
}
protected function getReferrerName()
{
return urldecode($this->details['referer_name']);
}
protected function getSearchEngineUrl()
{
if ($this->getReferrerType() == 'search'
&& !empty($this->details['referer_name'])
) {
return SearchEngine::getInstance()->getUrlFromName($this->details['referer_name']);
}
return null;
}
protected function getSearchEngineIcon()
{
$searchEngineUrl = $this->getSearchEngineUrl();
if (!is_null($searchEngineUrl)) {
return SearchEngine::getInstance()->getLogoFromUrl($searchEngineUrl);
}
return null;
}
}
|