1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-21 22:47:43 +00:00
Files
matomo/plugins/PagePerformance/Metrics.php
Michal Kleiner 9a3ef94df6 [Coding Style] Enable rule PSR12.Files.FileHeader + unify file headers (#22132)
* [Coding Style] Enable rule PSR12.Files.FileHeader

* Apply CS

* Replace Piwik with Matomo in file headers

* Unify file headers (position, no. of lines, https links)

* Rebuild dist files

* Apply CS

* Fix system test that relies on line numbers in a file that had the file header updated

---------

Co-authored-by: Stefan Giehl <stefan@matomo.org>
2024-04-20 20:50:47 +02:00

140 خطوط
4.3 KiB
PHP

<?php
/**
* 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\PagePerformance;
use Piwik\Columns\Dimension;
use Piwik\Plugins\PagePerformance\Columns\Base;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AveragePageLoadTime;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeDomCompletion;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeDomProcessing;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeNetwork;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeServer;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeOnLoad;
use Piwik\Plugins\PagePerformance\Columns\Metrics\AverageTimeTransfer;
use Piwik\Plugins\PagePerformance\Columns\TimeDomCompletion;
use Piwik\Plugins\PagePerformance\Columns\TimeDomProcessing;
use Piwik\Plugins\PagePerformance\Columns\TimeNetwork;
use Piwik\Plugins\PagePerformance\Columns\TimeServer;
use Piwik\Plugins\PagePerformance\Columns\TimeOnLoad;
use Piwik\Plugins\PagePerformance\Columns\TimeTransfer;
class Metrics
{
/**
* @return \Piwik\Plugins\PagePerformance\Columns\Metrics\AveragePerformanceMetric[]
*/
public static function getPagePerformanceMetrics()
{
$metrics = [
new AverageTimeNetwork(),
new AverageTimeServer(),
new AverageTimeTransfer(),
new AverageTimeDomProcessing(),
new AverageTimeDomCompletion(),
new AverageTimeOnLoad(),
];
$mappedMetrics = [];
foreach ($metrics as $metric) {
$mappedMetrics[$metric->getName()] = $metric;
}
return $mappedMetrics;
}
/**
* @return \Piwik\Plugins\PagePerformance\Columns\Metrics\AveragePerformanceMetric[]
*/
public static function getAllPagePerformanceMetrics()
{
$metrics = [
new AverageTimeNetwork(),
new AverageTimeServer(),
new AverageTimeTransfer(),
new AverageTimeDomProcessing(),
new AverageTimeDomCompletion(),
new AverageTimeOnLoad(),
new AveragePageLoadTime()
];
$mappedMetrics = [];
foreach ($metrics as $metric) {
$mappedMetrics[$metric->getName()] = $metric;
}
return $mappedMetrics;
}
public static function getMetricTranslations()
{
$translations = array();
foreach (self::getAllPagePerformanceMetrics() as $metric) {
$translations[$metric->getName()] = $metric->getTranslatedName();
}
return $translations;
}
public static function getMetricSemanticTypes()
{
$types = [];
foreach (self::getAllPagePerformanceMetrics() as $metric) {
$types[$metric->getName()] = Dimension::TYPE_DURATION_S;
}
return $types;
}
public static function attachActionMetrics(&$metricsConfig)
{
$table = 'log_link_visit_action';
/**
* @var Base[] $performanceDimensions
*/
$performanceDimensions = [
new TimeNetwork(),
new TimeServer(),
new TimeTransfer(),
new TimeDomProcessing(),
new TimeDomCompletion(),
new TimeOnLoad()
];
foreach ($performanceDimensions as $dimension) {
$id = $dimension->getColumnName();
$column = $table . '.' . $id;
$metricsConfig['sum_' . $id] = [
'aggregation' => 'sum',
'query' => "sum(" . sprintf($dimension->getSqlCappedValue(), $column) . ") / 1000"
];
$metricsConfig['nb_hits_with_' . $id] = [
'aggregation' => 'sum',
'query' => "sum(
case when " . $column . " is null
then 0
else 1
end
)"
];
$metricsConfig['min_' . $id] = [
'aggregation' => 'min',
'query' => "min(" . $column . ") / 1000"
];
$metricsConfig['max_' . $id] = [
'aggregation' => 'max',
'query' => "max(" . $column . ") / 1000"
];
}
return $metricsConfig;
}
}