From 13b35fa25a615366c78ef682798e40e83f961713 Mon Sep 17 00:00:00 2001 From: mattab <matthieu.aubry@gmail.com> Date: Thu, 10 Oct 2013 14:19:53 +1300 Subject: [PATCH] Refs #4208 Remove translate singleton --- core/AssetManager.php | 2 +- core/FrontController.php | 4 +- core/PluginsManager.php | 4 +- core/Tracker.php | 2 +- core/Translate.php | 64 ++++++++----------- plugins/API/API.php | 2 +- plugins/ImageGraph/API.php | 2 +- plugins/Installation/Installation.php | 2 +- plugins/LanguagesManager/LanguagesManager.php | 4 +- plugins/ScheduledReports/API.php | 4 +- tests/PHPUnit/Core/Period/DayTest.php | 6 +- tests/PHPUnit/Core/Period/MonthTest.php | 6 +- tests/PHPUnit/Core/Period/RangeTest.php | 6 +- tests/PHPUnit/Core/Period/WeekTest.php | 6 +- tests/PHPUnit/Core/Period/YearTest.php | 6 +- tests/PHPUnit/Core/PiwikTest.php | 8 +-- tests/PHPUnit/Core/Tracker/ActionTest.php | 2 +- tests/PHPUnit/IntegrationTestCase.php | 6 +- tests/PHPUnit/Plugins/ActionsTest.php | 4 +- 19 files changed, 63 insertions(+), 77 deletions(-) diff --git a/core/AssetManager.php b/core/AssetManager.php index 1adfae0f86..4f5173b578 100644 --- a/core/AssetManager.php +++ b/core/AssetManager.php @@ -89,7 +89,7 @@ class AssetManager */ public static function getJsAssets() { - $result = "<script type=\"text/javascript\">\n" . Translate::getInstance()->getJavascriptTranslations() . "\n</script>"; + $result = "<script type=\"text/javascript\">\n" . Translate::getJavascriptTranslations() . "\n</script>"; if (self::isMergedAssetsDisabled()) { // Individual includes mode diff --git a/core/FrontController.php b/core/FrontController.php index ebed44b919..0207983cdd 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -285,7 +285,7 @@ class FrontController Filechecks::dieIfDirectoriesNotWritable($directoriesToCheck); self::assignCliParametersToRequest(); - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $exceptionToThrow = self::createConfigObject(); @@ -360,7 +360,7 @@ class FrontController } SettingsServer::raiseMemoryLimitIfNecessary(); - Translate::getInstance()->reloadLanguage(); + Translate::reloadLanguage(); $pluginsManager->postLoadPlugins(); /** diff --git a/core/PluginsManager.php b/core/PluginsManager.php index 605451e145..64f1b5c511 100644 --- a/core/PluginsManager.php +++ b/core/PluginsManager.php @@ -460,7 +460,7 @@ class PluginsManager public function loadPluginTranslations($language = false) { if (empty($language)) { - $language = Translate::getInstance()->getLanguageToLoad(); + $language = Translate::getLanguageToLoad(); } $plugins = $this->getLoadedPlugins(); @@ -727,7 +727,7 @@ class PluginsManager if (isset($translations[$pluginName])) { // only merge translations of plugin - prevents overwritten strings - Translate::getInstance()->mergeTranslationArray(array($pluginName => $translations[$pluginName])); + Translate::mergeTranslationArray(array($pluginName => $translations[$pluginName])); } return true; } diff --git a/core/Tracker.php b/core/Tracker.php index 0d3a00ee9b..9071f00835 100644 --- a/core/Tracker.php +++ b/core/Tracker.php @@ -364,7 +364,7 @@ class Tracker // While each plugins should ensure that necessary languages are loaded, // we ensure English translations at least are loaded - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $resultTasks = TaskScheduler::runTasks(); diff --git a/core/Translate.php b/core/Translate.php index c4d7f3d7e6..09bd650edc 100644 --- a/core/Translate.php +++ b/core/Translate.php @@ -17,22 +17,8 @@ use Exception; */ class Translate { - const GET_CLIENT_SIDE_TRANSLATION_KEYS_EVENT = 'Translate.getClientSideTranslationKeys'; - - static private $instance = null; - static private $languageToLoad = null; - private $loadedLanguage = false; - - /** - * @return \Piwik\Translate - */ - static public function getInstance() - { - if (self::$instance == null) { - self::$instance = new self; - } - return self::$instance; - } + private static $languageToLoad = null; + private static $loadedLanguage = false; /** * Clean a string that may contain HTML special chars, single/double quotes, HTML entities, leading/trailing whitespace @@ -40,29 +26,29 @@ class Translate * @param string $s * @return string */ - static public function clean($s) + public static function clean($s) { return html_entity_decode(trim($s), ENT_QUOTES, 'UTF-8'); } - public function loadEnglishTranslation() + public static function loadEnglishTranslation() { - $this->loadCoreTranslationFile('en'); + self::loadCoreTranslationFile('en'); } - public function unloadEnglishTranslation() + public static function unloadEnglishTranslation() { $GLOBALS['Piwik_translations'] = array(); } - public function reloadLanguage($language = false) + public static function reloadLanguage($language = false) { if (empty($language)) { - $language = $this->getLanguageToLoad(); + $language = self::getLanguageToLoad(); } - $this->unloadEnglishTranslation(); - $this->loadEnglishTranslation(); - $this->loadCoreTranslation($language); + self::unloadEnglishTranslation(); + self::loadEnglishTranslation(); + self::loadCoreTranslation($language); PluginsManager::getInstance()->loadPluginTranslations($language); } @@ -72,18 +58,18 @@ class Translate * @param bool|string $language 2 letter language code. If not specified, will detect current user translation, or load default translation. * @return void */ - public function loadCoreTranslation($language = false) + public static function loadCoreTranslation($language = false) { if (empty($language)) { - $language = $this->getLanguageToLoad(); + $language = self::getLanguageToLoad(); } - if ($this->loadedLanguage == $language) { + if (self::$loadedLanguage == $language) { return; } - $this->loadCoreTranslationFile($language); + self::loadCoreTranslationFile($language); } - private function loadCoreTranslationFile($language) + private static function loadCoreTranslationFile($language) { $path = PIWIK_INCLUDE_PATH . '/lang/' . $language . '.json'; if (!Filesystem::isValidFilename($language) || !is_readable($path)) { @@ -91,12 +77,12 @@ class Translate } $data = file_get_contents($path); $translations = json_decode($data, true); - $this->mergeTranslationArray($translations); - $this->setLocale(); - $this->loadedLanguage = $language; + self::mergeTranslationArray($translations); + self::setLocale(); + self::$loadedLanguage = $language; } - public function mergeTranslationArray($translation) + public static function mergeTranslationArray($translation) { if (!isset($GLOBALS['Piwik_translations'])) { $GLOBALS['Piwik_translations'] = array(); @@ -109,7 +95,7 @@ class Translate * @return string the language filename prefix, eg 'en' for english * @throws exception if the language set is not a valid filename */ - public function getLanguageToLoad() + public static function getLanguageToLoad() { if (is_null(self::$languageToLoad)) { $lang = Common::getRequestVar('language', '', 'string'); @@ -135,7 +121,7 @@ class Translate public function getLanguageLoaded() { - return $this->loadedLanguage; + return self::$loadedLanguage; } public function getLanguageDefault() @@ -151,7 +137,7 @@ class Translate $translations = & $GLOBALS['Piwik_translations']; $clientSideTranslations = array(); - foreach ($this->getClientSideTranslationKeys() as $key) { + foreach (self::getClientSideTranslationKeys() as $key) { list($plugin, $stringName) = explode("_", $key, 2); $clientSideTranslations[$key] = $translations[$plugin][$stringName]; } @@ -188,7 +174,7 @@ class Translate * } * ``` */ - Piwik::postEvent(self::GET_CLIENT_SIDE_TRANSLATION_KEYS_EVENT, array(&$result)); + Piwik::postEvent('Translate.getClientSideTranslationKeys', array(&$result)); $result = array_unique($result); @@ -200,7 +186,7 @@ class Translate * * @see http://php.net/setlocale */ - private function setLocale() + private static function setLocale() { $locale = $GLOBALS['Piwik_translations']['General']['Locale']; $locale_variant = str_replace('UTF-8', 'UTF8', $locale); diff --git a/plugins/API/API.php b/plugins/API/API.php index fda5c70ca1..0673e55a2d 100644 --- a/plugins/API/API.php +++ b/plugins/API/API.php @@ -370,7 +370,7 @@ class API public function getMetadata($idSite, $apiModule, $apiAction, $apiParameters = array(), $language = false, $period = false, $date = false, $hideMetricsDoc = false, $showSubtableReports = false) { - Translate::getInstance()->reloadLanguage($language); + Translate::reloadLanguage($language); $reporter = new ProcessedReport(); $metadata = $reporter->getMetadata($idSite, $apiModule, $apiAction, $apiParameters, $language, $period, $date, $hideMetricsDoc, $showSubtableReports); return $metadata; diff --git a/plugins/ImageGraph/API.php b/plugins/ImageGraph/API.php index a9b59f240f..48a28f1f7b 100644 --- a/plugins/ImageGraph/API.php +++ b/plugins/ImageGraph/API.php @@ -155,7 +155,7 @@ class API $useUnicodeFont = array( 'am', 'ar', 'el', 'fa', 'fi', 'he', 'ja', 'ka', 'ko', 'te', 'th', 'zh-cn', 'zh-tw', ); - $languageLoaded = Translate::getInstance()->getLanguageLoaded(); + $languageLoaded = Translate::getLanguageLoaded(); $font = self::getFontPath(self::DEFAULT_FONT); if (in_array($languageLoaded, $useUnicodeFont)) { $unicodeFontPath = self::getFontPath(self::UNICODE_FONT); diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php index 564b151f05..d2472e5476 100644 --- a/plugins/Installation/Installation.php +++ b/plugins/Installation/Installation.php @@ -58,7 +58,7 @@ class Installation extends \Piwik\Plugin $message = ''; } - Translate::getInstance()->loadCoreTranslation(); + Translate::loadCoreTranslation(); $step = Common::getRequestVar('action', 'welcome', 'string'); $controller = $this->getInstallationController(); diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php index d3e162a875..49a0e99820 100644 --- a/plugins/LanguagesManager/LanguagesManager.php +++ b/plugins/LanguagesManager/LanguagesManager.php @@ -91,7 +91,7 @@ class LanguagesManager extends \Piwik\Plugin $language = self::getLanguageCodeForCurrentUser(); } if (!API::getInstance()->isLanguageAvailable($language)) { - $language = Translate::getInstance()->getLanguageDefault(); + $language = Translate::getLanguageDefault(); } } @@ -140,7 +140,7 @@ class LanguagesManager extends \Piwik\Plugin $languageCode = Common::extractLanguageCodeFromBrowserLanguage(Common::getBrowserLanguage(), API::getInstance()->getAvailableLanguages()); } if (!API::getInstance()->isLanguageAvailable($languageCode)) { - $languageCode = Translate::getInstance()->getLanguageDefault(); + $languageCode = Translate::getLanguageDefault(); } return $languageCode; } diff --git a/plugins/ScheduledReports/API.php b/plugins/ScheduledReports/API.php index 14cd94851a..36fae6c631 100644 --- a/plugins/ScheduledReports/API.php +++ b/plugins/ScheduledReports/API.php @@ -305,10 +305,10 @@ class API // load specified language if (empty($language)) { - $language = Translate::getInstance()->getLanguageDefault(); + $language = Translate::getLanguageDefault(); } - Translate::getInstance()->reloadLanguage($language); + Translate::reloadLanguage($language); $reports = $this->getReports($idSite = false, $_period = false, $idReport); $report = reset($reports); diff --git a/tests/PHPUnit/Core/Period/DayTest.php b/tests/PHPUnit/Core/Period/DayTest.php index 9a55298569..7bf2c8e6d6 100644 --- a/tests/PHPUnit/Core/Period/DayTest.php +++ b/tests/PHPUnit/Core/Period/DayTest.php @@ -243,7 +243,7 @@ class Period_DayTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedShortString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Day(Date::factory('2024-10-09')); $shouldBe = 'Wed 9 Oct'; $this->assertEquals($shouldBe, $month->getLocalizedShortString()); @@ -256,7 +256,7 @@ class Period_DayTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedLongString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Day(Date::factory('2024-10-09')); $shouldBe = 'Wednesday 9 October 2024'; $this->assertEquals($shouldBe, $month->getLocalizedLongString()); @@ -269,7 +269,7 @@ class Period_DayTest extends PHPUnit_Framework_TestCase */ public function testGetPrettyString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Day(Date::factory('2024-10-09')); $shouldBe = '2024-10-09'; $this->assertEquals($shouldBe, $month->getPrettyString()); diff --git a/tests/PHPUnit/Core/Period/MonthTest.php b/tests/PHPUnit/Core/Period/MonthTest.php index 1996863a03..f0ffc396eb 100644 --- a/tests/PHPUnit/Core/Period/MonthTest.php +++ b/tests/PHPUnit/Core/Period/MonthTest.php @@ -285,7 +285,7 @@ class Period_MonthTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedShortString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Month(Date::factory('2024-10-09')); $shouldBe = 'Oct 2024'; $this->assertEquals($shouldBe, $month->getLocalizedShortString()); @@ -298,7 +298,7 @@ class Period_MonthTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedLongString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Month(Date::factory('2024-10-09')); $shouldBe = '2024, October'; $this->assertEquals($shouldBe, $month->getLocalizedLongString()); @@ -311,7 +311,7 @@ class Period_MonthTest extends PHPUnit_Framework_TestCase */ public function testGetPrettyString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Month(Date::factory('2024-10-09')); $shouldBe = '2024-10'; $this->assertEquals($shouldBe, $month->getPrettyString()); diff --git a/tests/PHPUnit/Core/Period/RangeTest.php b/tests/PHPUnit/Core/Period/RangeTest.php index 707e32f301..f4d54646b2 100644 --- a/tests/PHPUnit/Core/Period/RangeTest.php +++ b/tests/PHPUnit/Core/Period/RangeTest.php @@ -1046,7 +1046,7 @@ class Period_RangeTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedShortString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Range('range', '2000-12-09,2001-02-01'); $shouldBe = '9 Dec 00 - 1 Feb 01'; $this->assertEquals($shouldBe, $month->getLocalizedShortString()); @@ -1059,7 +1059,7 @@ class Period_RangeTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedLongString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Range('range', '2023-05-09,2023-05-21'); $shouldBe = '8 May 23 - 21 May 23'; $this->assertEquals($shouldBe, $month->getLocalizedLongString()); @@ -1072,7 +1072,7 @@ class Period_RangeTest extends PHPUnit_Framework_TestCase */ public function testGetPrettyString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $month = new Range('range', '2007-02-09,2007-03-15'); $shouldBe = 'From 2007-02-09 to 2007-03-15'; $this->assertEquals($shouldBe, $month->getPrettyString()); diff --git a/tests/PHPUnit/Core/Period/WeekTest.php b/tests/PHPUnit/Core/Period/WeekTest.php index 2fda0433c9..738c0a5ac7 100644 --- a/tests/PHPUnit/Core/Period/WeekTest.php +++ b/tests/PHPUnit/Core/Period/WeekTest.php @@ -135,7 +135,7 @@ class Period_WeekTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedShortString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $week = new Week(Date::factory('2024-10-09')); $shouldBe = '7 Oct - 13 Oct 24'; $this->assertEquals($shouldBe, $week->getLocalizedShortString()); @@ -148,7 +148,7 @@ class Period_WeekTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedLongString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $week = new Week(Date::factory('2024-10-09')); $shouldBe = 'Week 7 October - 13 October 2024'; $this->assertEquals($shouldBe, $week->getLocalizedLongString()); @@ -161,7 +161,7 @@ class Period_WeekTest extends PHPUnit_Framework_TestCase */ public function testGetPrettyString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $week = new Week(Date::factory('2024-10-09')); $shouldBe = 'From 2024-10-07 to 2024-10-13'; $this->assertEquals($shouldBe, $week->getPrettyString()); diff --git a/tests/PHPUnit/Core/Period/YearTest.php b/tests/PHPUnit/Core/Period/YearTest.php index c69489ef63..2850593a17 100644 --- a/tests/PHPUnit/Core/Period/YearTest.php +++ b/tests/PHPUnit/Core/Period/YearTest.php @@ -76,7 +76,7 @@ class Period_YearTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedShortString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $year = new Year(Date::factory('2024-10-09')); $shouldBe = '2024'; $this->assertEquals($shouldBe, $year->getLocalizedShortString()); @@ -89,7 +89,7 @@ class Period_YearTest extends PHPUnit_Framework_TestCase */ public function testGetLocalizedLongString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $year = new Year(Date::factory('2024-10-09')); $shouldBe = '2024'; $this->assertEquals($shouldBe, $year->getLocalizedLongString()); @@ -102,7 +102,7 @@ class Period_YearTest extends PHPUnit_Framework_TestCase */ public function testGetPrettyString() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $year = new Year(Date::factory('2024-10-09')); $shouldBe = '2024'; $this->assertEquals($shouldBe, $year->getPrettyString()); diff --git a/tests/PHPUnit/Core/PiwikTest.php b/tests/PHPUnit/Core/PiwikTest.php index 56930f6123..e78c209fca 100644 --- a/tests/PHPUnit/Core/PiwikTest.php +++ b/tests/PHPUnit/Core/PiwikTest.php @@ -117,14 +117,14 @@ class PiwikTest extends DatabaseTestCase $this->markTestSkipped("Will not pass on 32-bit machine."); } - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $sentenceExpected = str_replace(' ', ' ', $expected[0]); $numericExpected = $expected[1]; $this->assertEquals($sentenceExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = true)); $this->assertEquals($numericExpected, MetricsFormatter::getPrettyTimeFromSeconds($seconds, $sentence = false)); - Translate::getInstance()->unloadEnglishTranslation(); + Translate::unloadEnglishTranslation(); } /** @@ -215,7 +215,7 @@ class PiwikTest extends DatabaseTestCase */ public function testGetPrettyValue($columnName, $value, $expected) { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); $access = Access::getInstance(); $access->setSuperUser(true); @@ -227,7 +227,7 @@ class PiwikTest extends DatabaseTestCase MetricsFormatter::getPrettyValue($idsite, $columnName, $value, false, false) ); - Translate::getInstance()->unloadEnglishTranslation(); + Translate::unloadEnglishTranslation(); } /** diff --git a/tests/PHPUnit/Core/Tracker/ActionTest.php b/tests/PHPUnit/Core/Tracker/ActionTest.php index 95a0444d4b..e25d28e257 100644 --- a/tests/PHPUnit/Core/Tracker/ActionTest.php +++ b/tests/PHPUnit/Core/Tracker/ActionTest.php @@ -24,7 +24,7 @@ class Tracker_ActionTest extends DatabaseTestCase \Piwik\PluginsManager::getInstance()->loadPlugins(array('SitesManager')); - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); } protected function setUpRootAccess() diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php index 4170b6abae..dbc3a006aa 100755 --- a/tests/PHPUnit/IntegrationTestCase.php +++ b/tests/PHPUnit/IntegrationTestCase.php @@ -194,7 +194,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase $_SERVER['HTTP_REFERER'] = ''; // Make sure translations are loaded to check messages in English - Translate::getInstance()->reloadLanguage('en'); + Translate::reloadLanguage('en'); API::getInstance()->setLanguageForUser('superUserLogin', 'en'); // List of Modules, or Module.Method that should not be called as part of the XML output compare @@ -242,7 +242,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase \Piwik\Registry::unsetInstance(); $_GET = $_REQUEST = array(); - Translate::getInstance()->unloadEnglishTranslation(); + Translate::unloadEnglishTranslation(); } public function setUp() @@ -1062,7 +1062,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase if ($this->lastLanguage != $langId) { $_GET['language'] = $langId; Translate::reset(); - Translate::getInstance()->reloadLanguage($langId); + Translate::reloadLanguage($langId); } $this->lastLanguage = $langId; diff --git a/tests/PHPUnit/Plugins/ActionsTest.php b/tests/PHPUnit/Plugins/ActionsTest.php index 3945605875..deefe54bf0 100644 --- a/tests/PHPUnit/Plugins/ActionsTest.php +++ b/tests/PHPUnit/Plugins/ActionsTest.php @@ -15,12 +15,12 @@ class ActionsTests extends PHPUnit_Framework_TestCase { public function setUp() { - Translate::getInstance()->loadEnglishTranslation(); + Translate::loadEnglishTranslation(); } public function tearDown() { - Translate::getInstance()->unloadEnglishTranslation(); + Translate::unloadEnglishTranslation(); } public function getActionNameTestData() -- GitLab