diff options
-rw-r--r-- | core/ArchiveProcessor.php | 3 | ||||
-rw-r--r-- | core/ArchiveProcessor/Loader.php | 27 | ||||
-rw-r--r-- | core/ArchiveProcessor/PluginsArchiver.php | 15 |
3 files changed, 28 insertions, 17 deletions
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index d21a2d6a88..a343078fdb 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -247,6 +247,9 @@ class ArchiveProcessor public function getNumberOfVisits() { + if($this->numberOfVisits === false) { + throw new Exception("visits should have been set here"); + } return $this->numberOfVisits; } diff --git a/core/ArchiveProcessor/Loader.php b/core/ArchiveProcessor/Loader.php index 724dac5da0..b2ee564133 100644 --- a/core/ArchiveProcessor/Loader.php +++ b/core/ArchiveProcessor/Loader.php @@ -64,14 +64,14 @@ class Loader public function prepareArchive() { - list($idArchive, $visits) = $this->loadExistingArchiveIdFromDb(); + list($idArchive, $visits, $visitsConverted) = $this->loadExistingArchiveIdFromDb(); if (!empty($idArchive)) { return $idArchive; } $this->prepareCoreMetricsArchive($visits); - list($idArchive, $visits) = $this->computeNewArchive($enforceProcessCoreMetricsOnly = false, $visits); + list($idArchive, $visits) = $this->computeNewArchive($enforceProcessCoreMetricsOnly = false, $visits, $visitsConverted); if ($this->isThereSomeVisits($visits)) { return $idArchive; } @@ -102,23 +102,26 @@ class Loader return $visits; } - protected function computeNewArchive($enforceProcessCoreMetricsOnly, $visits = false) + protected function computeNewArchive($enforceProcessCoreMetricsOnly, $visits = false, $visitsConverted = false) { $archiveWriter = new ArchiveWriter($this->params, $this->isArchiveTemporary()); - $archiveWriter->initNewArchive(); - $pluginsArchiver = new PluginsArchiver($archiveWriter, $this->params); + $pluginsArchiver = new PluginsArchiver($archiveWriter, $this->params, $visits); if($enforceProcessCoreMetricsOnly) { - $visits = $pluginsArchiver->callAggregateCoreMetrics(); + $metrics = $pluginsArchiver->callAggregateCoreMetrics(); + $visits = $metrics['nb_visits']; } else { if ($this->mustProcessVisitCount($visits) || $this->doesRequestedPluginIncludeVisitsSummary() ) { - $visits = $pluginsArchiver->callAggregateCoreMetrics(); + $metrics = $pluginsArchiver->callAggregateCoreMetrics(); + $visits = $metrics['nb_visits']; + $visitsConverted = $metrics['nb_visits_converted']; } if ($this->isThereSomeVisits($visits)) { + $pluginsArchiver->archiveProcessor->setNumberOfVisits($visits, $visitsConverted); $pluginsArchiver->callAggregateAllPlugins(); } } @@ -155,12 +158,13 @@ class Loader * Returns the idArchive if the archive is available in the database for the requested plugin. * Returns false if the archive needs to be processed. * - * @return int or false + * @return array */ protected function loadExistingArchiveIdFromDb() { + $noArchiveFound = array(false, false, false); if ($this->isArchivingForcedToTrigger()) { - return array(false, false); + return $noArchiveFound; } $minDatetimeArchiveProcessedUTC = $this->getMinTimeArchiveProcessed(); @@ -171,10 +175,9 @@ class Loader $idAndVisits = ArchiveSelector::getArchiveIdAndVisits($site, $period, $segment, $minDatetimeArchiveProcessedUTC, $requestedPlugin); if (!$idAndVisits) { - return array(false, false); + return $noArchiveFound; } - list($idArchive, $visits, $visitsConverted) = $idAndVisits; - return array($idArchive, $visits); + return $idAndVisits; } /** diff --git a/core/ArchiveProcessor/PluginsArchiver.php b/core/ArchiveProcessor/PluginsArchiver.php index 16dcb2afb0..c1e1e09c9d 100644 --- a/core/ArchiveProcessor/PluginsArchiver.php +++ b/core/ArchiveProcessor/PluginsArchiver.php @@ -58,12 +58,16 @@ class PluginsArchiver $metrics = $this->aggregateMultipleVisitsMetrics(); } - $visits = false; - if (!empty($metrics)) { - $this->archiveProcessor->setNumberOfVisits($metrics['nb_visits'], $metrics['nb_visits_converted']); - $visits = $metrics['nb_visits']; + if (empty($metrics)) { + return array( + 'nb_visits' => 0, + 'nb_visits_converted' => 0 + ); } - return $visits; + return array( + 'nb_visits' => $metrics['nb_visits'], + 'nb_visits_converted' => $metrics['nb_visits_converted'] + ); } /** @@ -74,6 +78,7 @@ class PluginsArchiver public function callAggregateAllPlugins() { $isAggregateForDay = $this->archiveProcessor->getParams()->isDayArchive(); + $archivers = $this->getPluginArchivers(); foreach($archivers as $pluginName => $archiverClass) { |