Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Referrers/VisitorDetails.php')
-rw-r--r--plugins/Referrers/VisitorDetails.php121
1 files changed, 121 insertions, 0 deletions
diff --git a/plugins/Referrers/VisitorDetails.php b/plugins/Referrers/VisitorDetails.php
new file mode 100644
index 0000000000..f0021c9293
--- /dev/null
+++ b/plugins/Referrers/VisitorDetails.php
@@ -0,0 +1,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;
+ }
+} \ No newline at end of file