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/Manager.php')
-rw-r--r--core/Plugin/Manager.php32
1 files changed, 29 insertions, 3 deletions
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 114d79a1d6..e3d32f4e98 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -9,10 +9,14 @@
namespace Piwik\Plugin;
+use Piwik\Cache\PluginAwareStaticCache;
+use Piwik\Cache\StaticCache;
+use Piwik\CacheFile;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Config;
use Piwik\Db;
+use Piwik\Development;
use Piwik\EventDispatcher;
use Piwik\Filesystem;
use Piwik\Option;
@@ -645,11 +649,33 @@ class Manager extends Singleton
if (empty($language)) {
$language = Translate::getLanguageToLoad();
}
- $plugins = $this->getLoadedPlugins();
- foreach ($plugins as $plugin) {
- $this->loadTranslation($plugin, $language);
+ $cache = new CacheFile('tracker', 43200); // ttl=12hours
+ $cacheKey = 'PluginTranslations-' . $language;
+ $translations = $cache->get($cacheKey);
+
+ if (!empty($translations) &&
+ !Development::isEnabled()) {
+
+ Translate::mergeTranslationArray($translations);
+ return;
}
+
+ $translations = array();
+ $pluginNames = self::getAllPluginsNames();
+
+ foreach ($pluginNames as $pluginName) {
+ if ($this->isPluginThirdPartyAndBogus($pluginName)) {
+ continue;
+ }
+
+ $this->loadTranslation($pluginName, $language);
+ if (isset($GLOBALS['Piwik_translations'][$pluginName])) {
+ $translations[$pluginName] = $GLOBALS['Piwik_translations'][$pluginName];
+ }
+ }
+
+ $cache->set($cacheKey, $translations);
}
/**