Download plugins/Insights/Model.php from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 3.47 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Insights/Model.php
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/Insights/Model.php
-
curl -L -o Model.php https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/Insights/Model.php
3.47 kB
| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| namespace Piwik\Plugins\Insights; | |
| use Piwik\API\Request as ApiRequest; | |
| use Piwik\DataTable; | |
| use Piwik\Period\Range; | |
| use Piwik\Plugins\API\ProcessedReport; | |
| use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI; | |
| /** | |
| * Model for the Insights plugin. | |
| */ | |
| class Model | |
| { | |
| /** | |
| * @var ProcessedReport | |
| */ | |
| private $processedReport; | |
| public function __construct(ProcessedReport $processedReport) | |
| { | |
| $this->processedReport = $processedReport; | |
| } | |
| public function requestReport($idSite, $period, $date, $reportUniqueId, $metric, $segment) | |
| { | |
| $report = $this->getReportByUniqueId($idSite, $reportUniqueId); | |
| $params = array( | |
| 'format' => 'original', | |
| 'idSite' => $idSite, | |
| 'period' => $period, | |
| 'date' => $date, | |
| 'filter_limit' => 1000, | |
| 'showColumns' => $metric, | |
| 'totals' => 1, | |
| ); | |
| if (!empty($segment)) { | |
| $params['segment'] = $segment; | |
| } | |
| if (!empty($report['parameters']) && is_array($report['parameters'])) { | |
| $params = array_merge($params, $report['parameters']); | |
| } | |
| $table = ApiRequest::processRequest($report['module'] . '.' . $report['action'], $params, $default = []); | |
| return $table; | |
| } | |
| public function getLastDate($date, $period, $comparedToXPeriods) | |
| { | |
| $pastDate = Range::getDateXPeriodsAgo(abs($comparedToXPeriods), $date, $period); | |
| if (empty($pastDate[0])) { | |
| throw new \Exception('Not possible to compare this date/period combination'); | |
| } | |
| return $pastDate[0]; | |
| } | |
| /** | |
| * Returns either the $totalValue (eg 5500 visits) or the total value of the report | |
| * (eg 2500 visits of 5500 total visits as for instance only 2500 visits came to the website using a search engine). | |
| * | |
| * If the metric total (2500) is much lower than $totalValue, the metric total will be returned, otherwise the | |
| * $totalValue | |
| */ | |
| public function getRelevantTotalValue(DataTable $currentReport, $metric, $totalValue) | |
| { | |
| $totalMetric = $this->getMetricTotalValue($currentReport, $metric); | |
| if ($totalMetric > $totalValue) { | |
| return $totalMetric; | |
| } | |
| if (($totalMetric * 2) < $totalValue) { | |
| return $totalMetric; | |
| } | |
| return $totalValue; | |
| } | |
| public function getTotalValue($idSite, $period, $date, $metric, $segment) | |
| { | |
| $visits = VisitsSummaryAPI::getInstance()->get($idSite, $period, $date, $segment); | |
| $firstRow = $visits->getFirstRow(); | |
| if (empty($firstRow)) { | |
| return 0; | |
| } | |
| $totalValue = $firstRow->getColumn($metric); | |
| return (int) $totalValue; | |
| } | |
| public function getMetricTotalValue(DataTable $currentReport, $metric) | |
| { | |
| $totals = $currentReport->getMetadata('totals'); | |
| if (!empty($totals[$metric])) { | |
| $totalValue = (int) $totals[$metric]; | |
| } else { | |
| $totalValue = 0; | |
| } | |
| return $totalValue; | |
| } | |
| public function getReportByUniqueId($idSite, $reportUniqueId) | |
| { | |
| $report = $this->processedReport->getReportMetadataByUniqueId($idSite, $reportUniqueId); | |
| return $report; | |
| } | |
| } | |