if ( (!serendipity_checkPermission('adminUsersEditUserlevel') || !serendipity_checkPermission('adminUsersMaintainOthers') )
&& (int)$_POST['userlevel'] > $serendipity['serendipityUserlevel']) {
echo '<div class="serendipityAdminMsgError">' . CREATE_NOT_AUTHORIZED_USERLEVEL . '</div>';
+ } elseif (empty($_POST['username'])) {
+ echo '<div class="serendipityAdminMsgError">' . USERCONF_CHECK_USERNAME_ERROR . '</div>';
} elseif (!empty($_POST['password']) && $_POST['check_password'] != $_SESSION['serendipityPassword'] && md5($_POST['check_password']) != $_SESSION['serendipityPassword']) {
echo '<div class="serendipityAdminMsgError">' . USERCONF_CHECK_PASSWORD_ERROR . '</div>';
} else {
serendipity_updatePermalink($pl_data, 'author');
serendipity_plugin_api::hook_event('backend_users_edit', $pl_data);
}
+ if ($serendipity['authorid'] === $_SESSION['serendipityAuthorid']) {
+ if (is_null($serendipity['detected_lang'])) {
+ $_SESSION['serendipityLanguage'] = $serendipity['lang'];
+ }
+ }
$from = $_POST;
?>
<div class="serendipityAdminMsgSuccess"><?php echo sprintf(MODIFIED_USER, $_POST['realname']) ?></div>
}
}
$config_loaded[$author] = true;
+
+ // Store default language
+ $serendipity['default_lang'] = $serendipity['lang'];
}
/**
$is_md5 = true;
}
+ $is_authenticated = false;
+ serendipity_plugin_api::hook_event('backend_login', $is_authenticated, NULL);
+ if ($is_authenticated) {
+ return true;
+ }
+
if ($username != '') {
if ($use_external) {
serendipity_plugin_api::hook_event('backend_auth', $is_md5, array('username' => $username, 'password' => $password));
$_SESSION['serendipityAuthedUser'] = $serendipity['serendipityAuthedUser'] = true;
$_SESSION['serendipityRightPublish']= $serendipity['serendipityRightPublish'] = $row['right_publish'];
serendipity_load_configuration($serendipity['authorid']);
+ serendipity_setCookie('userDefLang', $serendipity['lang'], false);
return true;
} else {
$_SESSION['serendipityAuthedUser'] = false;
function serendipity_getSessionLanguage() {
global $serendipity;
- // Store default language
- $serendipity['default_lang'] = $serendipity['lang'];
-
// DISABLE THIS!
/*
if ($_SESSION['serendipityAuthedUser']) {
*/
if (isset($_REQUEST['user_language']) && (!empty($serendipity['languages'][$_REQUEST['user_language']])) && !headers_sent()) {
- serendipity_setCookie('serendipityLanguage', $_REQUEST['user_language']);
+ serendipity_setCookie('serendipityLanguage', $_REQUEST['user_language'], false);
}
if (isset($serendipity['COOKIE']['serendipityLanguage'])) {
} elseif (serendipity_db_bool($serendipity['lang_content_negotiation'])) {
if ($serendipity['expose_s9y']) serendipity_header('X-Serendipity-InterfaceLangSource: Content-Negotiation');
$lang = serendipity_detectLang();
- } elseif ($_SESSION['serendipityAuthedUser']) {
+ }
+
+ if (isset($lang)) {
+ $serendipity['detected_lang'] = $lang;
+ } else {
+ if (! empty($_SESSION['serendipityLanguage'])) {
+ $lang = $_SESSION['serendipityLanguage'];
+ } else {
+ if (isset($serendipity['COOKIE']['userDefLang']) && ! empty($serendipity['COOKIE']['userDefLang'])) {
+ $lang = $serendipity['COOKIE']['userDefLang'];
+ } else {
+ $lang = $serendipity['lang'];
+ }
+ }
+ $serendipity['detected_lang'] = null;
+ }
+
+ if (!isset($serendipity['languages'][$lang])) {
+ $serendipity['detected_lang'] = null;
+ return $serendipity['lang'];
+ } else {
+ $_SESSION['serendipityLanguage'] = $lang;
+ if (! is_null($serendipity['detected_lang'])) {
+ if ($serendipity['expose_s9y']) serendipity_header('X-Serendipity-InterfaceLang: ' . $lang);
+ }
+ }
+
+ return $lang;
+}
+
+/**
+ * Gets the selected language from personal configuration if needed
+ *
+ * This function also sets HTTP Headers and cookies to contain the language for follow-up requests
+ *
+ * @access public
+ * @return string Returns the name of the selected language.
+ */
+function serendipity_getPostAuthSessionLanguage() {
+ global $serendipity;
+
+ if (! is_null($serendipity['detected_lang'])) {
+ return $serendipity['detected_lang'];
+ }
+
+ if ($_SESSION['serendipityAuthedUser']) {
if ($serendipity['expose_s9y']) serendipity_header('X-Serendipity-InterfaceLangSource: Database');
$lang = $serendipity['lang'];
+ } else {
+ $lang = (isset($_SESSION['serendipityLanguage']))?$_SESSION['serendipityLanguage']:$serendipity['lang'];
}
- if (!isset($lang) || !isset($serendipity['languages'][$lang])) {
+ if (!isset($serendipity['languages'][$lang])) {
$lang = $serendipity['lang'];
}
+ $_SESSION['serendipityLanguage'] = $lang;
+
if ($serendipity['expose_s9y']) serendipity_header('X-Serendipity-InterfaceLang: ' . $lang);
if ($lang != $serendipity['lang']) {
*/
serendipity_load_configuration();
+$serendipity['lang'] = serendipity_getSessionLanguage();
/*
* If a user is logged in, fetch his preferences. He possibly wants to have a different language
if (isset($_SESSION['serendipityAuthorid'])) {
serendipity_load_configuration($_SESSION['serendipityAuthorid']);
+ $serendipity['lang'] = serendipity_getPostAuthSessionLanguage();
}
-$serendipity['lang'] = serendipity_getSessionLanguage(); // @see function declaration for todo
-
// Try to fix some path settings. It seems common users have this setting wrong
// when s9y is installed into the root directory, especially 0.7.1 upgrade users.
if (empty($serendipity['serendipityHTTPPath'])) {