diff options
author | Nicolas LÅ“uillet <nicolas.loeuillet@gmail.com> | 2013-10-07 14:26:25 +0200 |
---|---|---|
committer | Nicolas LÅ“uillet <nicolas.loeuillet@gmail.com> | 2013-10-07 14:26:25 +0200 |
commit | 5011388f39432f810e397a60d9b200faba6c868b (patch) | |
tree | 4c5fd66795f1b20c42cb054f0e760b6db5b71eb5 /inc/poche | |
parent | 894c36ea32d38d425e27dae43a29dcd9e669040e (diff) | |
download | wallabag-5011388f39432f810e397a60d9b200faba6c868b.tar.gz wallabag-5011388f39432f810e397a60d9b200faba6c868b.tar.zst wallabag-5011388f39432f810e397a60d9b200faba6c868b.zip |
bug fix #215: change language from config screen
Diffstat (limited to 'inc/poche')
-rw-r--r-- | inc/poche/Poche.class.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 245f6a13..5299e374 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -20,6 +20,7 @@ class Poche | |||
20 | public $pagination; | 20 | public $pagination; |
21 | 21 | ||
22 | private $currentTheme = ''; | 22 | private $currentTheme = ''; |
23 | private $currentLanguage = ''; | ||
23 | private $notInstalledMessage = array(); | 24 | private $notInstalledMessage = array(); |
24 | 25 | ||
25 | # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) | 26 | # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) |
@@ -83,6 +84,15 @@ class Poche | |||
83 | } | 84 | } |
84 | 85 | ||
85 | $this->currentTheme = $themeDirectory; | 86 | $this->currentTheme = $themeDirectory; |
87 | |||
88 | # Set up language | ||
89 | $languageDirectory = $this->user->getConfigValue('language'); | ||
90 | |||
91 | if ($languageDirectory === false) { | ||
92 | $languageDirectory = DEFAULT_THEME; | ||
93 | } | ||
94 | |||
95 | $this->currentLanguage = $languageDirectory; | ||
86 | } | 96 | } |
87 | 97 | ||
88 | public function configFileIsAvailable() { | 98 | public function configFileIsAvailable() { |
@@ -253,6 +263,10 @@ class Poche | |||
253 | public function getTheme() { | 263 | public function getTheme() { |
254 | return $this->currentTheme; | 264 | return $this->currentTheme; |
255 | } | 265 | } |
266 | |||
267 | public function getLanguage() { | ||
268 | return $this->currentLanguage; | ||
269 | } | ||
256 | 270 | ||
257 | public function getInstalledThemes() { | 271 | public function getInstalledThemes() { |
258 | $handle = opendir(THEME); | 272 | $handle = opendir(THEME); |
@@ -277,6 +291,29 @@ class Poche | |||
277 | return $themes; | 291 | return $themes; |
278 | } | 292 | } |
279 | 293 | ||
294 | public function getInstalledLanguages() { | ||
295 | $handle = opendir(LOCALE); | ||
296 | $languages = array(); | ||
297 | |||
298 | while (($language = readdir($handle)) !== false) { | ||
299 | # Languages are stored in a directory, so all directory names are languages | ||
300 | # @todo move language installation data to database | ||
301 | if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.'))) { | ||
302 | continue; | ||
303 | } | ||
304 | |||
305 | $current = false; | ||
306 | |||
307 | if ($language === $this->getLanguage()) { | ||
308 | $current = true; | ||
309 | } | ||
310 | |||
311 | $languages[] = array('name' => $language, 'current' => $current); | ||
312 | } | ||
313 | |||
314 | return $languages; | ||
315 | } | ||
316 | |||
280 | public function getDefaultConfig() | 317 | public function getDefaultConfig() |
281 | { | 318 | { |
282 | return array( | 319 | return array( |
@@ -369,8 +406,10 @@ class Poche | |||
369 | $compare_dev = version_compare(POCHE, $dev); | 406 | $compare_dev = version_compare(POCHE, $dev); |
370 | $compare_prod = version_compare(POCHE, $prod); | 407 | $compare_prod = version_compare(POCHE, $prod); |
371 | $themes = $this->getInstalledThemes(); | 408 | $themes = $this->getInstalledThemes(); |
409 | $languages = $this->getInstalledLanguages(); | ||
372 | $tpl_vars = array( | 410 | $tpl_vars = array( |
373 | 'themes' => $themes, | 411 | 'themes' => $themes, |
412 | 'languages' => $languages, | ||
374 | 'dev' => $dev, | 413 | 'dev' => $dev, |
375 | 'prod' => $prod, | 414 | 'prod' => $prod, |
376 | 'compare_dev' => $compare_dev, | 415 | 'compare_dev' => $compare_dev, |
@@ -495,6 +534,44 @@ class Poche | |||
495 | Tools::redirect('?view=config'); | 534 | Tools::redirect('?view=config'); |
496 | } | 535 | } |
497 | 536 | ||
537 | public function updateLanguage() | ||
538 | { | ||
539 | # no data | ||
540 | if (empty($_POST['language'])) { | ||
541 | } | ||
542 | |||
543 | # we are not going to change it to the current language... | ||
544 | if ($_POST['language'] == $this->getLanguage()) { | ||
545 | $this->messages->add('w', _('still using the "' . $this->getLanguage() . '" language!')); | ||
546 | Tools::redirect('?view=config'); | ||
547 | } | ||
548 | |||
549 | $languages = $this->getInstalledLanguages(); | ||
550 | $actualLanguage = false; | ||
551 | |||
552 | foreach ($languages as $language) { | ||
553 | if ($language['name'] == $_POST['language']) { | ||
554 | $actualLanguage = true; | ||
555 | break; | ||
556 | } | ||
557 | } | ||
558 | |||
559 | if (! $actualLanguage) { | ||
560 | $this->messages->add('e', _('that language does not seem to be installed')); | ||
561 | Tools::redirect('?view=config'); | ||
562 | } | ||
563 | |||
564 | $this->store->updateUserConfig($this->user->getId(), 'language', $_POST['language']); | ||
565 | $this->messages->add('s', _('you have changed your language preferences')); | ||
566 | |||
567 | $currentConfig = $_SESSION['poche_user']->config; | ||
568 | $currentConfig['language'] = $_POST['language']; | ||
569 | |||
570 | $_SESSION['poche_user']->setConfig($currentConfig); | ||
571 | |||
572 | Tools::redirect('?view=config'); | ||
573 | } | ||
574 | |||
498 | /** | 575 | /** |
499 | * checks if login & password are correct and save the user in session. | 576 | * checks if login & password are correct and save the user in session. |
500 | * it redirects the user to the $referer link | 577 | * it redirects the user to the $referer link |