diff options
Diffstat (limited to 'plugins/Referrers/Columns/Website.php')
-rw-r--r-- | plugins/Referrers/Columns/Website.php | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/plugins/Referrers/Columns/Website.php b/plugins/Referrers/Columns/Website.php index 53b143d693..7d4903c902 100644 --- a/plugins/Referrers/Columns/Website.php +++ b/plugins/Referrers/Columns/Website.php @@ -8,13 +8,50 @@ */ namespace Piwik\Plugins\Referrers\Columns; -use Piwik\Columns\Dimension; +use Piwik\Common; use Piwik\Piwik; +use Piwik\Tracker\Action; +use Piwik\Tracker\Request; +use Piwik\Tracker\TrackerConfig; +use Piwik\Tracker\Visitor; -class Website extends Dimension +class Website extends Base { + /** + * Set using the `[Tracker] tracker_create_new_visit_when_website_referrer_changes` INI config option. + * If true, will force new visits if the referrer website changes. + * + * @var bool + */ + protected $createNewVisitWhenWebsiteReferrerChanges; + + public function __construct() + { + $this->createNewVisitWhenWebsiteReferrerChanges = TrackerConfig::getConfigValue('tracker_create_new_visit_when_website_referrer_changes') == 1; + } + public function getName() { return Piwik::translate('General_Website'); } + + public function shouldForceNewVisit(Request $request, Visitor $visitor, Action $action = null) + { + if (!$this->createNewVisitWhenWebsiteReferrerChanges) { + return false; + } + + $information = $this->getReferrerInformationFromRequest($request); + + if ($this->doesLastOrCurrentActionHaveSameReferrer($visitor, $information, Common::REFERRER_TYPE_WEBSITE) + && $this->hasReferrerInformationChanged($visitor, $information) + ) { + Common::printDebug("Existing visit detected, but creating new visit because website referrer information is different than last action."); + + return true; + } + + return false; + + } }
\ No newline at end of file |