diff --git a/core/Archive.php b/core/Archive.php index e3e3ddf0b94..1f56ef60627 100644 --- a/core/Archive.php +++ b/core/Archive.php @@ -649,10 +649,11 @@ private function cacheArchiveIdsAfterLaunching($archiveGroups, $plugins) foreach ($this->params->getIdSites() as $idSite) { $site = new Site($idSite); - if ($period->getLabel() === 'day' + if ($period->getLabel() === 'day' && !$this->params->getSegment()->isEmpty() && Common::getRequestVar('skipArchiveSegmentToday', 0, 'int') - && $period->getDateStart()->toString() == Date::factory('now', $site->getTimezone())->toString()) { + && $period->getDateStart()->toString() == Date::factory('now', $site->getTimezone())->toString() + ) { Log::debug("Skipping archive %s for %s as segment today is disabled", $period->getLabel(), $period->getPrettyString()); continue; diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php index bf0f73b836a..24f9cc2fe27 100644 --- a/core/ArchiveProcessor/Rules.php +++ b/core/ArchiveProcessor/Rules.php @@ -226,9 +226,21 @@ public static function isArchivingDisabledFor(array $idSites, Segment $segment, return !$isArchivingEnabled; } - public static function isRequestAuthorizedToArchive() + public static function isRequestAuthorizedToArchive(Parameters $params = null) { - return Rules::isBrowserTriggerEnabled() || SettingsServer::isArchivePhpTriggered(); + $isRequestAuthorizedToArchive = Rules::isBrowserTriggerEnabled() || SettingsServer::isArchivePhpTriggered(); + + if (!empty($params)) { + /** + * @ignore + * + * @params bool &$isRequestAuthorizedToArchive + * @params Parameters $params + */ + Piwik::postEvent('Archiving.isRequestAuthorizedToArchive', [&$isRequestAuthorizedToArchive, $params]); + } + + return $isRequestAuthorizedToArchive; } public static function isBrowserTriggerEnabled() @@ -293,11 +305,11 @@ public static function isSegmentPreProcessed(array $idSites, Segment $segment) * * @return string[] */ - public static function getSelectableDoneFlagValues($includeInvalidated = true) + public static function getSelectableDoneFlagValues($includeInvalidated = true, Parameters $params = null) { $possibleValues = array(ArchiveWriter::DONE_OK, ArchiveWriter::DONE_OK_TEMPORARY); - if (!Rules::isRequestAuthorizedToArchive() + if (!Rules::isRequestAuthorizedToArchive($params) && $includeInvalidated ) { //If request is not authorized to archive then fetch also invalidated archives diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php index 21d7a9f6266..42324041418 100644 --- a/core/DataAccess/ArchiveSelector.php +++ b/core/DataAccess/ArchiveSelector.php @@ -71,7 +71,7 @@ public static function getArchiveIdAndVisits(ArchiveProcessor\Parameters $params $plugins = array("VisitsSummary", $requestedPlugin); $doneFlags = Rules::getDoneFlags($plugins, $segment); - $doneFlagValues = Rules::getSelectableDoneFlagValues($includeInvalidated); + $doneFlagValues = Rules::getSelectableDoneFlagValues($includeInvalidated, $params); $results = self::getModel()->getArchiveIdAndVisits($numericTable, $idSite, $period, $dateStartIso, $dateEndIso, $minDatetimeIsoArchiveProcessedUTC, $doneFlags, $doneFlagValues);