X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=inc%2Fpoche%2FPoche.class.php;h=3ecaf084a7347c737e78e8e1fd3bf87615b8377d;hb=f616ab60efc502b919b9b72f81aee2975b2e8465;hp=245f6a138fc353049c52c2ccf3a2941432ff0938;hpb=5e07dc8b51f9612de5f5a00bbac399c777e82fa4;p=github%2Fwallabag%2Fwallabag.git diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 245f6a13..3ecaf084 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -20,6 +20,7 @@ class Poche public $pagination; private $currentTheme = ''; + private $currentLanguage = ''; private $notInstalledMessage = array(); # @todo make this dynamic (actually install themes and save them in the database including author information et cetera) @@ -83,6 +84,15 @@ class Poche } $this->currentTheme = $themeDirectory; + + # Set up language + $languageDirectory = $this->user->getConfigValue('language'); + + if ($languageDirectory === false) { + $languageDirectory = DEFAULT_THEME; + } + + $this->currentLanguage = $languageDirectory; } public function configFileIsAvailable() { @@ -253,6 +263,10 @@ class Poche public function getTheme() { return $this->currentTheme; } + + public function getLanguage() { + return $this->currentLanguage; + } public function getInstalledThemes() { $handle = opendir(THEME); @@ -261,7 +275,7 @@ class Poche while (($theme = readdir($handle)) !== false) { # Themes are stored in a directory, so all directory names are themes # @todo move theme installation data to database - if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.', '.git'))) { + if (! is_dir(THEME . '/' . $theme) || in_array($theme, array('..', '.'))) { continue; } @@ -274,9 +288,33 @@ class Poche $themes[] = array('name' => $theme, 'current' => $current); } + sort($themes); return $themes; } + public function getInstalledLanguages() { + $handle = opendir(LOCALE); + $languages = array(); + + while (($language = readdir($handle)) !== false) { + # Languages are stored in a directory, so all directory names are languages + # @todo move language installation data to database + if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.'))) { + continue; + } + + $current = false; + + if ($language === $this->getLanguage()) { + $current = true; + } + + $languages[] = array('name' => $language, 'current' => $current); + } + + return $languages; + } + public function getDefaultConfig() { return array( @@ -289,7 +327,7 @@ class Poche /** * Call action (mark as fav, archive, delete, etc.) */ - public function action($action, Url $url, $id = 0, $import = FALSE) + public function action($action, Url $url, $id = 0, $import = FALSE, $autoclose = FALSE) { switch ($action) { @@ -320,7 +358,11 @@ class Poche } if (!$import) { - Tools::redirect('?view=home'); + if ($autoclose == TRUE) { + Tools::redirect('?view=home'); + } else { + Tools::redirect('?view=home&closewin=true'); + } } break; case 'delete': @@ -336,7 +378,7 @@ class Poche $msg = 'error : can\'t delete link #' . $id; } Tools::logm($msg); - Tools::redirect(); + Tools::redirect('?'); break; case 'toggle_fav' : $this->store->favoriteById($id, $this->user->getId()); @@ -369,12 +411,16 @@ class Poche $compare_dev = version_compare(POCHE, $dev); $compare_prod = version_compare(POCHE, $prod); $themes = $this->getInstalledThemes(); + $languages = $this->getInstalledLanguages(); + $http_auth = (isset($_SERVER['PHP_AUTH_USER']))?true:false; $tpl_vars = array( 'themes' => $themes, + 'languages' => $languages, 'dev' => $dev, 'prod' => $prod, 'compare_dev' => $compare_dev, 'compare_prod' => $compare_prod, + 'http_auth' => $http_auth, ); Tools::logm('config view'); break; @@ -495,6 +541,59 @@ class Poche Tools::redirect('?view=config'); } + public function updateLanguage() + { + # no data + if (empty($_POST['language'])) { + } + + # we are not going to change it to the current language... + if ($_POST['language'] == $this->getLanguage()) { + $this->messages->add('w', _('still using the "' . $this->getLanguage() . '" language!')); + Tools::redirect('?view=config'); + } + + $languages = $this->getInstalledLanguages(); + $actualLanguage = false; + + foreach ($languages as $language) { + if ($language['name'] == $_POST['language']) { + $actualLanguage = true; + break; + } + } + + if (! $actualLanguage) { + $this->messages->add('e', _('that language does not seem to be installed')); + Tools::redirect('?view=config'); + } + + $this->store->updateUserConfig($this->user->getId(), 'language', $_POST['language']); + $this->messages->add('s', _('you have changed your language preferences')); + + $currentConfig = $_SESSION['poche_user']->config; + $currentConfig['language'] = $_POST['language']; + + $_SESSION['poche_user']->setConfig($currentConfig); + + Tools::redirect('?view=config'); + } + + /** + * get credentials from differents sources + * it redirects the user to the $referer link + * @return array + */ + private function credentials() { + if(isset($_SERVER['PHP_AUTH_USER'])) { + return array($_SERVER['PHP_AUTH_USER'],'php_auth'); + } + if(!empty($_POST['login']) && !empty($_POST['password'])) { + return array($_POST['login'],$_POST['password']); + } + return array(false,false); + } + /** * checks if login & password are correct and save the user in session. * it redirects the user to the $referer link @@ -504,11 +603,17 @@ class Poche */ public function login($referer) { - if (!empty($_POST['login']) && !empty($_POST['password'])) { - $user = $this->store->login($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); + list($login,$password)=$this->credentials(); + if($login === false || $password === false) { + $this->messages->add('e', _('login failed: you have to fill all fields')); + Tools::logm('login failed'); + Tools::redirect(); + } + if (!empty($login) && !empty($password)) { + $user = $this->store->login($login, Tools::encodeString($password . $login)); if ($user != array()) { # Save login into Session - Session::login($user['username'], $user['password'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']), array('poche_user' => new User($user))); + Session::login($user['username'], $user['password'], $login, Tools::encodeString($password . $login), array('poche_user' => new User($user))); $this->messages->add('s', _('welcome to your poche')); Tools::logm('login successful'); Tools::redirect($referer); @@ -516,10 +621,6 @@ class Poche $this->messages->add('e', _('login failed: bad login or password')); Tools::logm('login failed'); Tools::redirect(); - } else { - $this->messages->add('e', _('login failed: you have to fill all fields')); - Tools::logm('login failed'); - Tools::redirect(); } } @@ -736,4 +837,4 @@ class Poche } return $version; } -} \ No newline at end of file +}