/** * Returns the SQL condition used to find successfully completed archives that * this instance is querying for. * * @param array $plugins * @param Segment $segment * @param bool $isSkipAggregationOfSubTables * @return string */ private static function getNameCondition(array $plugins, Segment $segment, $isSkipAggregationOfSubTables) { // the flags used to tell how the archiving process for a specific archive was completed, // if it was completed $doneFlags = Rules::getDoneFlags($plugins, $segment, $isSkipAggregationOfSubTables); $allDoneFlags = "'" . implode("','", $doneFlags) . "'"; $possibleValues = array(ArchiveWriter::DONE_OK, ArchiveWriter::DONE_OK_TEMPORARY); if (!Rules::isRequestAuthorizedToArchive()) { //If request is not authorized to archive then fetch also invalidated archives $possibleValues[] = ArchiveWriter::DONE_INVALIDATED; } // create the SQL to find archives that are DONE return "((name IN ({$allDoneFlags})) AND " . " (value IN (" . implode(',', $possibleValues) . ")))"; }
/** * Detects whether the Piwik instance is configured to be able to archive this segment. It checks whether the segment * will be either archived via browser or cli archiving. It does not check if the segment has been archived. If you * want to know whether the segment has been archived, the actual report data needs to be requested. * * This method does not take any date/period into consideration. Meaning a Piwik instance might be able to archive * this segment in general, but not for a certain period if eg the archiving of range dates is disabled. * * @return bool */ public function willBeArchived() { if ($this->isEmpty()) { return true; } $idSites = $this->idSites; if (!is_array($idSites)) { $idSites = array($this->idSites); } return Rules::isRequestAuthorizedToArchive() || Rules::isBrowserArchivingAvailableForSegments() || Rules::isSegmentPreProcessed($idSites, $this); }
/** * Returns the SQL condition used to find successfully completed archives that * this instance is querying for. * * @return string */ private static function getPossibleValues() { $possibleValues = array(ArchiveWriter::DONE_OK, ArchiveWriter::DONE_OK_TEMPORARY); if (!Rules::isRequestAuthorizedToArchive()) { //If request is not authorized to archive then fetch also invalidated archives $possibleValues[] = ArchiveWriter::DONE_INVALIDATED; } return $possibleValues; }
/** * we should only purge outdated & custom range archives if we know cron archiving has just run, * or if browser triggered archiving is enabled. if cron archiving has run, then we know the latest * archives are in the database, and we can remove temporary ones. if browser triggered archiving is * enabled, then we know any archives that are wrongly purged, can be re-archived on demand. * this prevents some situations where "no data" is displayed for reports that should have data. * * @return bool */ private function willPurgingCausePotentialProblemInUI() { return !Rules::isRequestAuthorizedToArchive(); }