public static function getArchiveIdAndVisits(Site $site, Period $period, Segment $segment, $minDatetimeArchiveProcessedUTC, $requestedPlugin) { $dateStart = $period->getDateStart(); $bindSQL = array($site->getId(), $dateStart->toString('Y-m-d'), $period->getDateEnd()->toString('Y-m-d'), $period->getId()); $timeStampWhere = ''; if ($minDatetimeArchiveProcessedUTC) { $timeStampWhere = " AND ts_archived >= ? "; $bindSQL[] = Date::factory($minDatetimeArchiveProcessedUTC)->getDatetime(); } $pluginOrVisitsSummary = array("VisitsSummary", $requestedPlugin); $pluginOrVisitsSummary = array_unique($pluginOrVisitsSummary); $sqlWhereArchiveName = self::getNameCondition($pluginOrVisitsSummary, $segment); $sqlQuery = "\tSELECT idarchive, value, name, date1 as startDate\n\t\t\t\t\t\tFROM " . ArchiveTableCreator::getNumericTable($dateStart) . "``\n\t\t\t\t\t\tWHERE idsite = ?\n\t\t\t\t\t\t\tAND date1 = ?\n\t\t\t\t\t\t\tAND date2 = ?\n\t\t\t\t\t\t\tAND period = ?\n\t\t\t\t\t\t\tAND ( ({$sqlWhereArchiveName})\n\t\t\t\t\t\t\t\t OR name = '" . self::NB_VISITS_RECORD_LOOKED_UP . "'\n\t\t\t\t\t\t\t\t OR name = '" . self::NB_VISITS_CONVERTED_RECORD_LOOKED_UP . "')\n\t\t\t\t\t\t\t{$timeStampWhere}\n\t\t\t\t\t\tORDER BY idarchive DESC"; $results = Db::fetchAll($sqlQuery, $bindSQL); if (empty($results)) { return false; } $idArchive = self::getMostRecentIdArchiveFromResults($segment, $requestedPlugin, $results); $idArchiveVisitsSummary = self::getMostRecentIdArchiveFromResults($segment, "VisitsSummary", $results); list($visits, $visitsConverted) = self::getVisitsMetricsFromResults($idArchive, $idArchiveVisitsSummary, $results); if ($visits === false && $idArchive === false) { return false; } return array($idArchive, $visits, $visitsConverted); }
public function setUp() { parent::setUp(); $idSite = 1; if (!Fixture::siteCreated($idSite)) { Fixture::createWebsite('2014-01-01 00:00:00'); } $site = new Site($idSite); $date = Date::factory('2012-01-01'); $period = Period\Factory::build('month', $date); $segment = new Segment('', array($site->getId())); $params = new Parameters($site, $period, $segment); $this->logAggregator = new LogAggregator($params); }
public static function getMinTimeProcessedForTemporaryArchive(Date $dateStart, \Piwik\Period $period, Segment $segment, Site $site) { $now = time(); $minimumArchiveTime = $now - Rules::getTodayArchiveTimeToLive(); $idSites = array($site->getId()); $isArchivingDisabled = Rules::isArchivingDisabledFor($idSites, $segment, $period->getLabel()); if ($isArchivingDisabled) { if ($period->getNumberOfSubperiods() == 0 && $dateStart->getTimestamp() <= $now) { // Today: accept any recent enough archive $minimumArchiveTime = false; } else { // This week, this month, this year: // accept any archive that was processed today after 00:00:01 this morning $timezone = $site->getTimezone(); $minimumArchiveTime = Date::factory(Date::factory('now', $timezone)->getDateStartUTC())->setTimezone($timezone)->getTimestamp(); } } return $minimumArchiveTime; }
/** * @param $archiveGroups * @param $site * @param $period */ private function prepareArchive(array $archiveGroups, Site $site, Period $period) { $parameters = new ArchiveProcessor\Parameters($site, $period, $this->params->getSegment()); $archiveLoader = new ArchiveProcessor\Loader($parameters); $periodString = $period->getRangeString(); $idSites = array($site->getId()); // process for each plugin as well foreach ($archiveGroups as $plugin) { $doneFlag = $this->getDoneStringForPlugin($plugin, $idSites); $this->initializeArchiveIdCache($doneFlag); $idArchive = $archiveLoader->prepareArchive($plugin); if ($idArchive) { $this->idarchives[$doneFlag][$periodString][] = $idArchive; } } }
protected function getBindDatetimeSite() { return array($this->dateStart->getDateStartUTC(), $this->dateEnd->getDateEndUTC(), $this->site->getId()); }
public function getArchiveIdAndVisits($table, \Piwik\Site $site, \Piwik\Period $period, $minDatetime, $sqlWhereArchiveName) { $bind = array($site->getId(), $period->getDateStart()->toString('Y-m-d'), $period->getDateEnd()->toString('Y-m-d'), $period->getId()); if ($minDatetime) { $timestampWhere = ' AND ts_archived >= ?'; $bind[] = Date::factory($minDatetime)->getDatetime(); } else { $timestampWhere = ''; } $startDate = $this->db->quoteIdentifier('startDate'); $sql = "SELECT idarchive, value, name, date1 AS {$startDate}\n FROM {$table}\n WHERE idsite = ?\n AND date1 = ?\n AND date2 = ?\n AND period = ?\n AND ( ({$sqlWhereArchiveName})\n OR name = '" . ArchiveSelector::NB_VISITS_RECORD_LOOKED_UP . "'\n OR name = '" . ArchiveSelector::NB_VISITS_CONVERTED_RECORD_LOOKED_UP . "'\n )\n {$timestampWhere}\n ORDER BY idarchive DESC"; return $this->db->fetchAll($sql, $bind); }