public function getSparklines()
{
$metrics = $this->getReferrersVisitorsByType();
$distinctMetrics = $this->getDistinctReferrersMetrics();
$numberFormatter = NumberFormatter::getInstance();
$totalVisits = array_sum($metrics);
foreach ($metrics as $name => $value) {
// calculate percent of total, if there were any visits
if ($value != 0 && $totalVisits != 0) {
$percentName = $name . 'Percent';
$metrics[$percentName] = round($value / $totalVisits * 100, 0);
}
}
// calculate evolution for visit metrics & distinct metrics
list($lastPeriodDate, $ignore) = Range::getLastDate();
if ($lastPeriodDate !== false) {
$date = Common::getRequestVar('date');
$period = Common::getRequestVar('period');
$prettyDate = self::getPrettyDate($date, $period);
$prettyLastPeriodDate = self::getPrettyDate($lastPeriodDate, $period);
// visit metrics
$previousValues = $this->getReferrersVisitorsByType($lastPeriodDate);
$metrics = $this->addEvolutionPropertiesToView($prettyDate, $metrics, $prettyLastPeriodDate, $previousValues);
// distinct metrics
$previousValues = $this->getDistinctReferrersMetrics($lastPeriodDate);
$distinctMetrics = $this->addEvolutionPropertiesToView($prettyDate, $distinctMetrics, $prettyLastPeriodDate, $previousValues);
}
/** @var Sparklines $view */
$view = ViewDataTable\Factory::build(Sparklines::ID, $api = '', $controller = '', $force = true, $loadUserParams = false);
// DIRECT ENTRY
$metrics['visitorsFromDirectEntry'] = $numberFormatter->formatNumber($metrics['visitorsFromDirectEntry']);
$values = array($metrics['visitorsFromDirectEntry']);
$descriptions = array(Piwik::translate('Referrers_TypeDirectEntries'));
if (!empty($metrics['visitorsFromDirectEntryPercent'])) {
$metrics['visitorsFromDirectEntryPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromDirectEntryPercent'], $precision = 1);
$values[] = $metrics['visitorsFromDirectEntryPercent'];
$descriptions[] = Piwik::translate('Referrers_XPercentOfVisits');
}
$directEntryParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_DIRECT_ENTRY);
$view->config->addSparkline($directEntryParams, $values, $descriptions, @$metrics['visitorsFromDirectEntryEvolution']);
// WEBSITES
$metrics['visitorsFromWebsites'] = $numberFormatter->formatNumber($metrics['visitorsFromWebsites']);
$values = array($metrics['visitorsFromWebsites']);
$descriptions = array(Piwik::translate('Referrers_TypeWebsites'));
if (!empty($metrics['visitorsFromWebsitesPercent'])) {
$metrics['visitorsFromWebsitesPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromWebsitesPercent'], $precision = 1);
$values[] = $metrics['visitorsFromWebsitesPercent'];
$descriptions[] = Piwik::translate('Referrers_XPercentOfVisits');
}
$searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_WEBSITE);
$view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromWebsitesEvolution']);
// SEARCH ENGINES
$metrics['visitorsFromSearchEngines'] = $numberFormatter->formatNumber($metrics['visitorsFromSearchEngines']);
$values = array($metrics['visitorsFromSearchEngines']);
$descriptions = array(Piwik::translate('Referrers_TypeSearchEngines'));
if (!empty($metrics['visitorsFromSearchEnginesPercent'])) {
$metrics['visitorsFromSearchEnginesPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromSearchEnginesPercent'], $precision = 1);
$values[] = $metrics['visitorsFromSearchEnginesPercent'];
$descriptions[] = Piwik::translate('Referrers_XPercentOfVisits');
}
$searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_SEARCH_ENGINE);
$view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromSearchEnginesEvolution']);
// CAMPAIGNS
$metrics['visitorsFromCampaigns'] = $numberFormatter->formatNumber($metrics['visitorsFromCampaigns']);
$values = array($metrics['visitorsFromCampaigns']);
$descriptions = array(Piwik::translate('Referrers_TypeCampaigns'));
if (!empty($metrics['visitorsFromCampaignsPercent'])) {
$metrics['visitorsFromCampaignsPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromCampaignsPercent'], $precision = 1);
$values[] = $metrics['visitorsFromCampaignsPercent'];
$descriptions[] = Piwik::translate('Referrers_XPercentOfVisits');
}
$searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_CAMPAIGN);
$view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromCampaignsEvolution']);
// DISTINCT SEARCH ENGINES
$sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctSearchEnginesGraph');
$value = $distinctMetrics['numberDistinctSearchEngines'];
$value = $numberFormatter->formatNumber($value);
$description = Piwik::translate('Referrers_DistinctSearchEngines');
$view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctSearchEnginesEvolution']);
// DISTINCT WEBSITES
$sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctWebsitesGraph');
$distinctMetrics['numberDistinctWebsites'] = $numberFormatter->formatNumber($distinctMetrics['numberDistinctWebsites']);
$distinctMetrics['numberDistinctWebsitesUrls'] = $numberFormatter->formatNumber($distinctMetrics['numberDistinctWebsitesUrls']);
$values = array($distinctMetrics['numberDistinctWebsites'], $distinctMetrics['numberDistinctWebsitesUrls']);
$descriptions = array(Piwik::translate('Referrers_DistinctWebsites'), Piwik::translate('Referrers_UsingNDistinctUrls'));
$view->config->addSparkline($sparklineParams, $values, $descriptions, @$distinctMetrics['numberDistinctWebsitesEvolution']);
// DISTINCT KEYWORDS
$sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctKeywordsGraph');
$value = $distinctMetrics['numberDistinctKeywords'];
$value = $numberFormatter->formatNumber($value);
$description = Piwik::translate('Referrers_DistinctKeywords');
$view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctKeywordsEvolution']);
// DISTINCT CAMPAIGNS
$sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctCampaignsGraph');
$value = $distinctMetrics['numberDistinctCampaigns'];
$value = $numberFormatter->formatNumber($value);
$description = Piwik::translate('Referrers_DistinctCampaigns');
$view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctCampaignsEvolution']);
return $view->render();
}