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/Plugin/LogTablesProvider.php')
-rw-r--r--core/Plugin/LogTablesProvider.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/core/Plugin/LogTablesProvider.php b/core/Plugin/LogTablesProvider.php
new file mode 100644
index 0000000000..92afca14c7
--- /dev/null
+++ b/core/Plugin/LogTablesProvider.php
@@ -0,0 +1,65 @@
+<?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\Plugin;
+
+use Piwik\Container\StaticContainer;
+use Piwik\Tracker\LogTable;
+
+class LogTablesProvider {
+
+ /**
+ * @var Manager
+ */
+ private $pluginManager;
+
+ /**
+ * @var LogTable[]
+ */
+ private $tablesCache;
+
+ public function __construct(Manager $pluginManager)
+ {
+ $this->pluginManager = $pluginManager;
+ }
+
+ /**
+ * Get an instance of a specific log table if such a log table exists.
+ *
+ * @param string $tableNameWithoutPrefix eg "log_visit"
+ * @return LogTable|null
+ */
+ public function getLogTable($tableNameWithoutPrefix)
+ {
+ foreach ($this->getAllLogTables() as $table) {
+ if ($table->getName() === $tableNameWithoutPrefix) {
+ return $table;
+ }
+ }
+ }
+
+ /**
+ * Get all log table instances defined by any activated and loaded plugin. The returned tables are not sorted in
+ * any order.
+ * @return LogTable[]
+ */
+ public function getAllLogTables()
+ {
+ if (!isset($this->tablesCache)) {
+ $tables = $this->pluginManager->findMultipleComponents('Tracker', 'Piwik\\Tracker\\LogTable');
+
+ $this->tablesCache = array();
+ foreach ($tables as $table) {
+ $this->tablesCache[] = StaticContainer::get($table);
+ }
+ }
+
+ return $this->tablesCache;
+ }
+
+}