public function getInsights($idSite, $period, $date, $reportUniqueId, $segment = false, $limitIncreaser = 5, $limitDecreaser = 5, $filterBy = '', $minImpactPercent = 2, $minGrowthPercent = 20, $comparedToXPeriods = 1, $orderBy = 'absolute')
{
Piwik::checkUserHasViewAccess(array($idSite));
$metric = 'nb_visits';
$reportMetadata = $this->model->getReportByUniqueId($idSite, $reportUniqueId);
if (empty($reportMetadata)) {
throw new \Exception('A report having the ID ' . $reportUniqueId . ' does not exist');
}
$totalValue = $this->model->getTotalValue($idSite, $period, $date, $metric, $segment);
$currentReport = $this->model->requestReport($idSite, $period, $date, $reportUniqueId, $metric, $segment);
$this->checkReportIsValid($currentReport);
$lastDate = $this->model->getLastDate($date, $period, $comparedToXPeriods);
$lastTotalValue = $this->model->getTotalValue($idSite, $period, $lastDate, $metric, $segment);
$lastReport = $this->model->requestReport($idSite, $period, $lastDate, $reportUniqueId, $metric, $segment);
$this->checkReportIsValid($lastReport);
$minGrowthPercentPositive = abs($minGrowthPercent);
$minGrowthPercentNegative = -1 * $minGrowthPercentPositive;
$relevantTotal = $this->model->getRelevantTotalValue($currentReport, $metric, $totalValue);
$minMoversPercent = -1;
$minNewPercent = -1;
$minDisappearedPercent = -1;
switch ($filterBy) {
case self::FILTER_BY_MOVERS:
$minMoversPercent = $minImpactPercent;
break;
case self::FILTER_BY_NEW:
$minNewPercent = $minImpactPercent;
break;
case self::FILTER_BY_DISAPPEARED:
$minDisappearedPercent = $minImpactPercent;
break;
default:
$minMoversPercent = $minImpactPercent;
$minNewPercent = $minImpactPercent;
$minDisappearedPercent = $minImpactPercent;
}
$insight = new InsightReport();
$table = $insight->generateInsight($reportMetadata, $period, $date, $lastDate, $metric, $currentReport, $lastReport, $relevantTotal, $minMoversPercent, $minNewPercent, $minDisappearedPercent, $minGrowthPercentPositive, $minGrowthPercentNegative, $orderBy, $limitIncreaser, $limitDecreaser);
$insight->markMoversAndShakers($table, $currentReport, $lastReport, $totalValue, $lastTotalValue);
return $table;
}