From 482e797236ff984d450dbf5802f7148bdc40d94b Mon Sep 17 00:00:00 2001 From: diosmosis Date: Mon, 8 Sep 2014 20:23:04 -0700 Subject: Allow LogAggregator to work with multiple site IDs, compute unique visitors for archives of multiple sites and add option to control whether unique visitors for multiple sites are processed. --- core/ArchiveProcessor.php | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'core/ArchiveProcessor.php') diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index 800db50a11..9cc67f6271 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -99,13 +99,28 @@ class ArchiveProcessor * @var int */ protected $numberOfVisits = false; + protected $numberOfVisitsConverted = false; + /** + * If true, unique visitors are not calculated when we are aggregating data for multiple sites. + * The `[General] enable_processing_unique_visitors_multiple_sites` INI config option controls + * the value of this variable. + * + * @var bool + */ + private $skipUniqueVisitorsCalculationForMultipleSites = true; + + const SKIP_UNIQUE_VISITORS_FOR_MULTIPLE_SITES = 'enable_processing_unique_visitors_multiple_sites'; + public function __construct(Parameters $params, ArchiveWriter $archiveWriter) { $this->params = $params; $this->logAggregator = new LogAggregator($params); $this->archiveWriter = $archiveWriter; + + $this->skipUniqueVisitorsCalculationForMultipleSites = + Config::getInstance()->General['enable_processing_unique_visitors_multiple_sites'] == 1; } protected function getArchive() @@ -365,12 +380,15 @@ class ArchiveProcessor protected function enrichWithUniqueVisitorsMetric(Row $row) { - if(!$this->getParams()->isSingleSite() ) { - // we only compute unique visitors for a single site + // 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) { + 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 ); -- cgit v1.2.3