Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Columns/DimensionsProvider.php')
-rw-r--r--core/Columns/DimensionsProvider.php62
1 files changed, 62 insertions, 0 deletions
diff --git a/core/Columns/DimensionsProvider.php b/core/Columns/DimensionsProvider.php
new file mode 100644
index 0000000000..cd9da962b6
--- /dev/null
+++ b/core/Columns/DimensionsProvider.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Columns;
+
+use Piwik\CacheId;
+use Piwik\Cache as PiwikCache;
+
+class DimensionsProvider
+{
+ /**
+ * @param $dimensionId
+ * @return Dimension
+ */
+ public function factory($dimensionId)
+ {
+ $listDimensions = self::getMapOfNameToDimension();
+
+ if (empty($listDimensions) || !is_array($listDimensions) || !$dimensionId || !array_key_exists($dimensionId, $listDimensions)) {
+ return null;
+ }
+
+ return $listDimensions[$dimensionId];
+ }
+
+ private static function getMapOfNameToDimension()
+ {
+ $cacheId = CacheId::pluginAware('DimensionFactoryMap');
+
+ $cache = PiwikCache::getTransientCache();
+ if ($cache->contains($cacheId)) {
+ $mapIdToDimension = $cache->fetch($cacheId);
+ } else {
+ $dimensions = new static();
+ $dimensions = $dimensions->getAllDimensions();
+
+ $mapIdToDimension = array();
+ foreach ($dimensions as $dimension) {
+ $mapIdToDimension[$dimension->getId()] = $dimension;
+ }
+
+ $cache->save($cacheId, $mapIdToDimension);
+ }
+
+ return $mapIdToDimension;
+ }
+
+ /**
+ * Returns a list of all available dimensions.
+ * @return Dimension[]
+ */
+ public function getAllDimensions()
+ {
+ return Dimension::getAllDimensions();
+ }
+
+} \ No newline at end of file