public function getTemperaturesEvolution($date, $period) { $temperatures = array(); $date = Date::factory('2013-10-10', 'UTC'); $period = new Range($period, 'last30'); $period->setDefaultEndDate($date); foreach ($period->getSubperiods() as $subPeriod) { if (self::$disableRandomness) { $server1 = 50; $server2 = 40; } else { $server1 = mt_rand(50, 90); $server2 = mt_rand(40, 110); } $value = array('server1' => $server1, 'server2' => $server2); $temperatures[$subPeriod->getLocalizedShortString()] = $value; } return DataTable::makeFromIndexedArray($temperatures); }
/** * Based on the period, date and evolution_{$period}_last_n query parameters, * calculates the date range this evolution chart will display data for. */ private function calculateEvolutionDateRange() { $period = Common::getRequestVar('period'); $defaultLastN = self::getDefaultLastN($period); $originalDate = Common::getRequestVar('date', 'last' . $defaultLastN, 'string'); if ('range' != $period) { // show evolution limit if the period is not a range $this->config->show_limit_control = true; // set the evolution_{$period}_last_n query param if (Range::parseDateRange($originalDate)) { // if a multiple period // overwrite last_n param using the date range $oPeriod = new Range($period, $originalDate); $lastN = count($oPeriod->getSubperiods()); } else { // if not a multiple period list($newDate, $lastN) = self::getDateRangeAndLastN($period, $originalDate, $defaultLastN); $this->requestConfig->request_parameters_to_modify['date'] = $newDate; $this->config->custom_parameters['dateUsedInGraph'] = $newDate; } $lastNParamName = self::getLastNParamName($period); $this->config->custom_parameters[$lastNParamName] = $lastN; } }
public function testRangeComma3_EndDateIncludesToday() { $range = new Range('day', '2008-01-01,today'); $subPeriods = $range->getSubperiods(); $this->assertEquals('2008-01-01', $subPeriods[0]->toString()); $this->assertEquals('2008-01-02', $subPeriods[1]->toString()); $this->assertEquals('2008-01-03', $subPeriods[2]->toString()); }
/** * Returns a new Archive instance that will query archive data for the given set of * sites and periods, using an optional Segment. * * This method uses data that is found in query parameters, so the parameters to this * function can be string values. * * If you want to create an Archive instance with an array of Period instances, use * {@link Archive::factory()}. * * @param string|int|array $idSites A single ID (eg, `'1'`), multiple IDs (eg, `'1,2,3'` or `array(1, 2, 3)`), * or `'all'`. * @param string $period 'day', `'week'`, `'month'`, `'year'` or `'range'` * @param Date|string $strDate 'YYYY-MM-DD', magic keywords (ie, 'today'; {@link Date::factory()} * or date range (ie, 'YYYY-MM-DD,YYYY-MM-DD'). * @param bool|false|string $segment Segment definition or false if no segment should be used. {@link Piwik\Segment} * @param bool|false|string $_restrictSitesToLogin Used only when running as a scheduled task. * @return Archive */ public static function build($idSites, $period, $strDate, $segment = false, $_restrictSitesToLogin = false) { $websiteIds = Site::getIdSitesFromIdSitesString($idSites, $_restrictSitesToLogin); if (Period::isMultiplePeriod($strDate, $period)) { $oPeriod = new Range($period, $strDate); $allPeriods = $oPeriod->getSubperiods(); } else { $timezone = count($websiteIds) == 1 ? Site::getTimezoneFor($websiteIds[0]) : false; $oPeriod = Period::makePeriodFromQueryParams($timezone, $period, $strDate); $allPeriods = array($oPeriod); } $segment = new Segment($segment, $websiteIds); $idSiteIsAll = $idSites == self::REQUEST_ALL_WEBSITES_FLAG; $isMultipleDate = Period::isMultiplePeriod($strDate, $period); return Archive::factory($segment, $allPeriods, $websiteIds, $idSiteIsAll, $isMultipleDate); }