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 'plugins/LanguagesManager/LanguagesManager.php')
-rw-r--r--plugins/LanguagesManager/LanguagesManager.php440
1 files changed, 215 insertions, 225 deletions
diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php
index d6162ecf01..29c900a8eb 100644
--- a/plugins/LanguagesManager/LanguagesManager.php
+++ b/plugins/LanguagesManager/LanguagesManager.php
@@ -1,13 +1,13 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_LanguagesManager
- *
+ *
*/
/**
@@ -16,229 +16,219 @@
*/
class Piwik_LanguagesManager extends Piwik_Plugin
{
- public function getInformation()
- {
- return array(
- 'description' => Piwik_Translate('LanguagesManager_PluginDescription'),
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- }
-
- public function getListHooksRegistered()
- {
- return array(
- 'AssetManager.getCssFiles' => 'getCssFiles',
- 'AssetManager.getJsFiles' => 'getJsFiles',
- 'TopMenu.add' => 'showLanguagesSelector',
- 'Translate.getLanguageToLoad' => 'getLanguageToLoad',
- 'UsersManager.deleteUser' => 'deleteUserLanguage',
- 'template_topBar' => 'addLanguagesManagerToOtherTopBar',
- );
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getCssFiles( $notification )
- {
- $cssFiles = &$notification->getNotificationObject();
-
- $cssFiles[] = "themes/default/styles.css";
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getJsFiles( $notification )
- {
- $jsFiles = &$notification->getNotificationObject();
-
- $jsFiles[] = "plugins/LanguagesManager/templates/languageSelector.js";
- }
-
- /**
- * Show styled language selection drop-down list
- *
- * @param string $url The form action. Default is to save language.
- */
- function showLanguagesSelector()
- {
- Piwik_AddTopMenu('LanguageSelector', $this->getLanguagesSelector(), true, $order = 30, true);
- }
-
- /**
- * Adds the languages drop-down list to topbars other than the main one rendered
- * in CoreHome/templates/top_bar.tpl. The 'other' topbars are on the Installation
- * and CoreUpdater screens.
- *
- * @param Piwik_Event_Notification $notification notification object
- */
- public function addLanguagesManagerToOtherTopBar( $notification )
- {
- $str =& $notification->getNotificationObject();
- // piwik object & scripts aren't loaded in 'other' topbars
- $str .= "<script type='text/javascript'>if (!window.piwik) window.piwik={};</script>";
- $str .= "<script type='text/javascript' src='plugins/LanguagesManager/templates/languageSelector.js'></script>";
- $str .= $this->getLanguagesSelector();
- }
-
- /**
- * Renders and returns the language selector HTML.
- *
- * @return string
- */
- private function getLanguagesSelector()
- {
- // don't use Piwik_View::factory() here
- $view = new Piwik_View("LanguagesManager/templates/languages.tpl");
- $view->languages = Piwik_LanguagesManager_API::getInstance()->getAvailableLanguageNames();
- $view->currentLanguageCode = self::getLanguageCodeForCurrentUser();
- $view->currentLanguageName = self::getLanguageNameForCurrentUser();
- return $view->render();
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function getLanguageToLoad($notification)
- {
- $language =& $notification->getNotificationObject();
- if (empty($language))
- {
- $language = self::getLanguageCodeForCurrentUser();
- }
- if(!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($language))
- {
- $language = Piwik_Translate::getInstance()->getLanguageDefault();
- }
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- function deleteUserLanguage($notification)
- {
- $userLogin = $notification->getNotificationObject();
- Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('user_language') . ' WHERE login = ?', $userLogin);
- }
-
- /**
- * @throws Exception if non-recoverable error
- */
- public function install()
- {
- // we catch the exception
- try{
- $sql = "CREATE TABLE ". Piwik_Common::prefixTable('user_language')." (
+ public function getInformation()
+ {
+ return array(
+ 'description' => Piwik_Translate('LanguagesManager_PluginDescription'),
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ }
+
+ public function getListHooksRegistered()
+ {
+ return array(
+ 'AssetManager.getCssFiles' => 'getCssFiles',
+ 'AssetManager.getJsFiles' => 'getJsFiles',
+ 'TopMenu.add' => 'showLanguagesSelector',
+ 'Translate.getLanguageToLoad' => 'getLanguageToLoad',
+ 'UsersManager.deleteUser' => 'deleteUserLanguage',
+ 'template_topBar' => 'addLanguagesManagerToOtherTopBar',
+ );
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getCssFiles($notification)
+ {
+ $cssFiles = & $notification->getNotificationObject();
+
+ $cssFiles[] = "themes/default/styles.css";
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getJsFiles($notification)
+ {
+ $jsFiles = & $notification->getNotificationObject();
+
+ $jsFiles[] = "plugins/LanguagesManager/templates/languageSelector.js";
+ }
+
+ /**
+ * Show styled language selection drop-down list
+ *
+ * @param string $url The form action. Default is to save language.
+ */
+ function showLanguagesSelector()
+ {
+ Piwik_AddTopMenu('LanguageSelector', $this->getLanguagesSelector(), true, $order = 30, true);
+ }
+
+ /**
+ * Adds the languages drop-down list to topbars other than the main one rendered
+ * in CoreHome/templates/top_bar.tpl. The 'other' topbars are on the Installation
+ * and CoreUpdater screens.
+ *
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ public function addLanguagesManagerToOtherTopBar($notification)
+ {
+ $str =& $notification->getNotificationObject();
+ // piwik object & scripts aren't loaded in 'other' topbars
+ $str .= "<script type='text/javascript'>if (!window.piwik) window.piwik={};</script>";
+ $str .= "<script type='text/javascript' src='plugins/LanguagesManager/templates/languageSelector.js'></script>";
+ $str .= $this->getLanguagesSelector();
+ }
+
+ /**
+ * Renders and returns the language selector HTML.
+ *
+ * @return string
+ */
+ private function getLanguagesSelector()
+ {
+ // don't use Piwik_View::factory() here
+ $view = new Piwik_View("LanguagesManager/templates/languages.tpl");
+ $view->languages = Piwik_LanguagesManager_API::getInstance()->getAvailableLanguageNames();
+ $view->currentLanguageCode = self::getLanguageCodeForCurrentUser();
+ $view->currentLanguageName = self::getLanguageNameForCurrentUser();
+ return $view->render();
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function getLanguageToLoad($notification)
+ {
+ $language =& $notification->getNotificationObject();
+ if (empty($language)) {
+ $language = self::getLanguageCodeForCurrentUser();
+ }
+ if (!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($language)) {
+ $language = Piwik_Translate::getInstance()->getLanguageDefault();
+ }
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ function deleteUserLanguage($notification)
+ {
+ $userLogin = $notification->getNotificationObject();
+ Piwik_Query('DELETE FROM ' . Piwik_Common::prefixTable('user_language') . ' WHERE login = ?', $userLogin);
+ }
+
+ /**
+ * @throws Exception if non-recoverable error
+ */
+ public function install()
+ {
+ // we catch the exception
+ try {
+ $sql = "CREATE TABLE " . Piwik_Common::prefixTable('user_language') . " (
login VARCHAR( 100 ) NOT NULL ,
language VARCHAR( 10 ) NOT NULL ,
PRIMARY KEY ( login )
- ) DEFAULT CHARSET=utf8 " ;
- Piwik_Exec($sql);
- } catch(Exception $e){
- // mysql code error 1050:table already exists
- // see bug #153 http://dev.piwik.org/trac/ticket/153
- if(!Zend_Registry::get('db')->isErrNo($e, '1050'))
- {
- throw $e;
- }
- }
- }
-
- /**
- * @throws Exception if non-recoverable error
- */
- public function uninstall()
- {
- Piwik_DropTables(Piwik_Common::prefixTable('user_language'));
- }
-
- /**
- * @return string Two letters language code, eg. "fr"
- */
- static public function getLanguageCodeForCurrentUser()
- {
- $languageCode = self::getLanguageFromPreferences();
- if(!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode))
- {
- $languageCode = Piwik_Common::extractLanguageCodeFromBrowserLanguage(Piwik_Common::getBrowserLanguage(), Piwik_LanguagesManager_API::getInstance()->getAvailableLanguages());
- }
- if(!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode))
- {
- $languageCode = Piwik_Translate::getInstance()->getLanguageDefault();
- }
- return $languageCode;
- }
-
- /**
- * @return string Full english language string, eg. "French"
- */
- static public function getLanguageNameForCurrentUser()
- {
- $languageCode = self::getLanguageCodeForCurrentUser();
- $languages = Piwik_LanguagesManager_API::getInstance()->getAvailableLanguageNames();
- foreach($languages as $language)
- {
- if($language['code'] === $languageCode)
- {
- return $language['name'];
- }
- }
- }
-
- /**
- * @return string|false if language preference could not be loaded
- */
- static protected function getLanguageFromPreferences()
- {
- if(($language = self::getLanguageForSession()) != null)
- {
- return $language;
- }
-
- try {
- $currentUser = Piwik::getCurrentUserLogin();
- return Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($currentUser);
- } catch(Exception $e) {
- return false;
- }
- }
-
-
- /**
- * Returns the langage for the session
- *
- * @return string|null
- */
- static public function getLanguageForSession()
- {
- $cookieName = Piwik_Config::getInstance()->General['language_cookie_name'];
- $cookie = new Piwik_Cookie($cookieName);
- if($cookie->isCookieFound())
- {
- return $cookie->get('language');
- }
- return null;
- }
-
- /**
- * Set the language for the session
- *
- * @param string $languageCode ISO language code
- * @return bool
- */
- static public function setLanguageForSession($languageCode)
- {
- if(!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode))
- {
- return false;
- }
-
- $cookieName = Piwik_Config::getInstance()->General['language_cookie_name'];
- $cookie = new Piwik_Cookie($cookieName, 0);
- $cookie->set('language', $languageCode);
- $cookie->save();
- }
+ ) DEFAULT CHARSET=utf8 ";
+ Piwik_Exec($sql);
+ } catch (Exception $e) {
+ // mysql code error 1050:table already exists
+ // see bug #153 http://dev.piwik.org/trac/ticket/153
+ if (!Zend_Registry::get('db')->isErrNo($e, '1050')) {
+ throw $e;
+ }
+ }
+ }
+
+ /**
+ * @throws Exception if non-recoverable error
+ */
+ public function uninstall()
+ {
+ Piwik_DropTables(Piwik_Common::prefixTable('user_language'));
+ }
+
+ /**
+ * @return string Two letters language code, eg. "fr"
+ */
+ static public function getLanguageCodeForCurrentUser()
+ {
+ $languageCode = self::getLanguageFromPreferences();
+ if (!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode)) {
+ $languageCode = Piwik_Common::extractLanguageCodeFromBrowserLanguage(Piwik_Common::getBrowserLanguage(), Piwik_LanguagesManager_API::getInstance()->getAvailableLanguages());
+ }
+ if (!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode)) {
+ $languageCode = Piwik_Translate::getInstance()->getLanguageDefault();
+ }
+ return $languageCode;
+ }
+
+ /**
+ * @return string Full english language string, eg. "French"
+ */
+ static public function getLanguageNameForCurrentUser()
+ {
+ $languageCode = self::getLanguageCodeForCurrentUser();
+ $languages = Piwik_LanguagesManager_API::getInstance()->getAvailableLanguageNames();
+ foreach ($languages as $language) {
+ if ($language['code'] === $languageCode) {
+ return $language['name'];
+ }
+ }
+ }
+
+ /**
+ * @return string|false if language preference could not be loaded
+ */
+ static protected function getLanguageFromPreferences()
+ {
+ if (($language = self::getLanguageForSession()) != null) {
+ return $language;
+ }
+
+ try {
+ $currentUser = Piwik::getCurrentUserLogin();
+ return Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($currentUser);
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+
+
+ /**
+ * Returns the langage for the session
+ *
+ * @return string|null
+ */
+ static public function getLanguageForSession()
+ {
+ $cookieName = Piwik_Config::getInstance()->General['language_cookie_name'];
+ $cookie = new Piwik_Cookie($cookieName);
+ if ($cookie->isCookieFound()) {
+ return $cookie->get('language');
+ }
+ return null;
+ }
+
+ /**
+ * Set the language for the session
+ *
+ * @param string $languageCode ISO language code
+ * @return bool
+ */
+ static public function setLanguageForSession($languageCode)
+ {
+ if (!Piwik_LanguagesManager_API::getInstance()->isLanguageAvailable($languageCode)) {
+ return false;
+ }
+
+ $cookieName = Piwik_Config::getInstance()->General['language_cookie_name'];
+ $cookie = new Piwik_Cookie($cookieName, 0);
+ $cookie->set('language', $languageCode);
+ $cookie->save();
+ }
}