PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.3.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.3.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Columns / DimensionMetricFactory.php
matomo / app / core / Columns Last commit date
Join 5 years ago ComputedMetricFactory.php 5 years ago Dimension.php 5 years ago DimensionMetricFactory.php 5 years ago DimensionSegmentFactory.php 5 years ago DimensionsProvider.php 5 years ago Discriminator.php 5 years ago Join.php 5 years ago MetricsList.php 5 years ago Updater.php 5 years ago
DimensionMetricFactory.php
121 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 */
9 namespace Piwik\Columns;
10
11 use Piwik\Piwik;
12 use Piwik\Plugin\ArchivedMetric;
13 use Piwik\Plugin\ComputedMetric;
14
15
16 /**
17 * A factory to create metrics from a dimension.
18 *
19 * @api since Piwik 3.2.0
20 */
21 class DimensionMetricFactory
22 {
23 /**
24 * @var Dimension
25 */
26 private $dimension = null;
27
28 /**
29 * Generates a new dimension metric factory.
30 * @param Dimension $dimension A dimension instance the created metrics should be based on.
31 */
32 public function __construct(Dimension $dimension)
33 {
34 $this->dimension = $dimension;
35 }
36
37 /**
38 * @return ArchivedMetric
39 */
40 public function createCustomMetric($metricName, $readableName, $aggregation, $documentation = '')
41 {
42 if (!$this->dimension->getDbTableName() || !$this->dimension->getColumnName()) {
43 throw new \Exception(sprintf('Cannot make metric from dimension %s because DB table or column missing', $this->dimension->getId()));
44 }
45
46 $metric = new ArchivedMetric($this->dimension, $aggregation);
47 $metric->setType($this->dimension->getType());
48 $metric->setName($metricName);
49 $metric->setTranslatedName($readableName);
50 $metric->setDocumentation($documentation);
51 $metric->setCategory($this->dimension->getCategoryId());
52
53 return $metric;
54 }
55
56 /**
57 * @return \Piwik\Plugin\ComputedMetric
58 */
59 public function createComputedMetric($metricName1, $metricName2, $aggregation)
60 {
61 // We cannot use reuse ComputedMetricFactory here as it would result in an endless loop since ComputedMetricFactory
62 // requires a MetricsList which is just being built here...
63 $metric = new ComputedMetric($metricName1, $metricName2, $aggregation);
64 $metric->setCategory($this->dimension->getCategoryId());
65 return $metric;
66 }
67
68 /**
69 * @return ArchivedMetric
70 */
71 public function createMetric($aggregation)
72 {
73 $dimension = $this->dimension;
74
75 if (!$dimension->getNamePlural()) {
76 throw new \Exception(sprintf('No metric can be created for this dimension %s automatically because no $namePlural is set.', $dimension->getId()));
77 }
78
79 $prefix = '';
80 $translatedName = $dimension->getNamePlural();
81
82 $documentation = '';
83
84 switch ($aggregation) {
85 case ArchivedMetric::AGGREGATION_COUNT;
86 $prefix = ArchivedMetric::AGGREGATION_COUNT_PREFIX;
87 $translatedName = $dimension->getNamePlural();
88 $documentation = Piwik::translate('General_ComputedMetricCountDocumentation', $dimension->getNamePlural());
89 break;
90 case ArchivedMetric::AGGREGATION_SUM;
91 $prefix = ArchivedMetric::AGGREGATION_SUM_PREFIX;
92 $translatedName = Piwik::translate('General_ComputedMetricSum', $dimension->getNamePlural());
93 $documentation = Piwik::translate('General_ComputedMetricSumDocumentation', $dimension->getNamePlural());
94 break;
95 case ArchivedMetric::AGGREGATION_MAX;
96 $prefix = ArchivedMetric::AGGREGATION_MAX_PREFIX;
97 $translatedName = Piwik::translate('General_ComputedMetricMax', $dimension->getNamePlural());
98 $documentation = Piwik::translate('General_ComputedMetricMaxDocumentation', $dimension->getNamePlural());
99 break;
100 case ArchivedMetric::AGGREGATION_MIN;
101 $prefix = ArchivedMetric::AGGREGATION_MIN_PREFIX;
102 $translatedName = Piwik::translate('General_ComputedMetricMin', $dimension->getNamePlural());
103 $documentation = Piwik::translate('General_ComputedMetricMinDocumentation', $dimension->getNamePlural());
104 break;
105 case ArchivedMetric::AGGREGATION_UNIQUE;
106 $prefix = ArchivedMetric::AGGREGATION_UNIQUE_PREFIX;
107 $translatedName = Piwik::translate('General_ComputedMetricUniqueCount', $dimension->getNamePlural());
108 $documentation = Piwik::translate('General_ComputedMetricUniqueCountDocumentation', $dimension->getNamePlural());
109 break;
110 case ArchivedMetric::AGGREGATION_COUNT_WITH_NUMERIC_VALUE;
111 $prefix = ArchivedMetric::AGGREGATION_COUNT_WITH_NUMERIC_VALUE_PREFIX;
112 $translatedName = Piwik::translate('General_ComputedMetricCountWithValue', $dimension->getName());
113 $documentation = Piwik::translate('General_ComputedMetricCountWithValueDocumentation', $dimension->getName());
114 break;
115 }
116
117 $metricId = strtolower($dimension->getMetricId());
118
119 return $this->createCustomMetric($prefix . $metricId, $translatedName, $aggregation, $documentation);
120 }
121 }