diff options
author | Matthieu Aubry <matt@piwik.org> | 2015-02-19 05:11:45 +0300 |
---|---|---|
committer | Matthieu Aubry <matt@piwik.org> | 2015-02-19 05:11:45 +0300 |
commit | 457583620818968321529e723ec1db37ec4c88e4 (patch) | |
tree | d4787529102d6f499e34a3213015895111396944 /core/ArchiveProcessor.php | |
parent | fac99a87faf29c1bff68abc0748e8091919687b7 (diff) | |
parent | 67c58eeaf5e60b59ffc98d29cc5cc2dd4a25ffd3 (diff) |
Merge pull request #7244 from piwik/unique_visitors_metasites
Correctly process unique visitors across websites in MetaSite
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) |