diff options
author | mattab <matthieu.aubry@gmail.com> | 2015-02-19 03:24:12 +0300 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2015-02-19 03:24:12 +0300 |
commit | 1730a931fa02a60d44d248631d7a3df5fb39b080 (patch) | |
tree | 36f0624d984b97b61de33c41d9ec9c7d848d1917 /core/ArchiveProcessor.php | |
parent | 1324cfcfd4e144af3120ff93e43758c12eec93f4 (diff) |
Making algorithm processing unique visitors across websites actually work, refs https://github.com/PiwikPRO/plugin-MetaSites/issues/3
Diffstat (limited to 'core/ArchiveProcessor.php')
-rw-r--r-- | core/ArchiveProcessor.php | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index ca2ebde323..17716000e8 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -389,19 +389,38 @@ class ArchiveProcessor ) { return; } - if ($row->getColumn('nb_uniq_visitors') !== false - || $row->getColumn('nb_users') !== false + + if ($row->getColumn('nb_uniq_visitors') === false + && $row->getColumn('nb_users') === false ) { - if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) { - $metrics = array(Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_USERS); - $uniques = $this->computeNbUniques( $metrics ); - $row->setColumn('nb_uniq_visitors', $uniques[Metrics::INDEX_NB_UNIQ_VISITORS]); - $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]); - } else { - $row->deleteColumn('nb_uniq_visitors'); - $row->deleteColumn('nb_users'); + 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, + but to process this metric you must first set enable_fingerprinting_across_websites=1 + 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 guessOperationForColumn($column) |