Note: this config settig is also checked in the InterSites plugin
public static isSameFingerprintAcrossWebsites ( ) : boolean | ||
return | boolean |
protected function enrichWithUniqueVisitorsMetric(Row $row) { // skip unique visitors metrics calculation if calculating for multiple sites is disabled if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) { return; } if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) { return; } if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) { $row->deleteColumn('nb_uniq_visitors'); $row->deleteColumn('nb_users'); return; } $metrics = array(Metrics::INDEX_NB_USERS); if ($this->getParams()->isSingleSite()) { $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS; } else { if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) { throw new Exception("Processing unique visitors across websites is enabled for this instance,\n but to process this metric you must first set enable_fingerprinting_across_websites=1\n in the config file, under the [Tracker] section."); } $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS; } $metrics[] = $uniqueVisitorsMetric; $uniques = $this->computeNbUniques($metrics); $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]); $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]); }
protected function enrichWithUniqueVisitorsMetric(Row $row) { // skip unique visitors metrics calculation if calculating for multiple sites is disabled if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) { return; } if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) { return; } if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) { $row->deleteColumn('nb_uniq_visitors'); $row->deleteColumn('nb_users'); return; } $metrics = array(Metrics::INDEX_NB_USERS); if ($this->getParams()->isSingleSite()) { $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS; } else { if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) { throw new Exception("Processing unique visitors across websites is enabled for this instance,\n but to process this metric you must first set enable_fingerprinting_across_websites=1\n in the config file, under the [Tracker] section."); } $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS; } $metrics[] = $uniqueVisitorsMetric; $uniques = $this->computeNbUniques($metrics); // see edge case as described in https://github.com/piwik/piwik/issues/9357 where uniq_visitors might be higher // than visits because we archive / process it after nb_visits. Between archiving nb_visits and nb_uniq_visitors // there could have been a new visit leading to a higher nb_unique_visitors than nb_visits which is not possible // by definition. In this case we simply use the visits metric instead of unique visitors metric. $visits = $row->getColumn('nb_visits'); if ($visits !== false && $uniques[$uniqueVisitorsMetric] !== false) { $uniques[$uniqueVisitorsMetric] = min($uniques[$uniqueVisitorsMetric], $visits); } $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]); $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]); }
/** * Gets the UserSettings object * * @return Settings */ protected function getSettingsObject() { if (is_null($this->userSettings)) { $this->userSettings = new Settings($this->request, $this->getVisitorIp(), SettingsPiwik::isSameFingerprintAcrossWebsites()); } return $this->userSettings; }