mirror of
https://github.com/e107inc/e107.git
synced 2025-07-30 19:30:25 +02:00
Language selection simplification
Bug #4325 fixed USERLAN deprecated Bug #3485 possible fix work in progress
This commit is contained in:
90
class2.php
90
class2.php
@@ -9,9 +9,9 @@
|
||||
* General purpose file
|
||||
*
|
||||
* $Source: /cvs_backup/e107_0.8/class2.php,v $
|
||||
* $Revision: 1.117 $
|
||||
* $Date: 2009-08-03 19:51:24 $
|
||||
* $Author: e107steved $
|
||||
* $Revision: 1.118 $
|
||||
* $Date: 2009-08-03 21:12:44 $
|
||||
* $Author: marj_nl_fr $
|
||||
*
|
||||
*/
|
||||
//
|
||||
@@ -456,14 +456,14 @@ define('e_COOKIE', $pref['cookie_name']);
|
||||
|
||||
|
||||
// let the subdomain determine the language (when enabled).
|
||||
if(varset($pref['multilanguage_subdomain']) && ($pref['user_tracking'] == 'session') && e_DOMAIN && MULTILANG_SUBDOMAIN !== false)
|
||||
if(varset($pref['multilanguage_subdomain']) && ($pref['user_tracking'] == 'session') && e_DOMAIN && MULTILANG_SUBDOMAIN !== FALSE)
|
||||
{
|
||||
$mtmp = explode("\n",$pref['multilanguage_subdomain']);
|
||||
$mtmp = explode("\n", $pref['multilanguage_subdomain']);
|
||||
foreach($mtmp as $val)
|
||||
{
|
||||
if(e_DOMAIN == trim($val))
|
||||
{
|
||||
$domain_active = true;
|
||||
$domain_active = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -491,7 +491,8 @@ if ($pref['user_tracking'] == 'session')
|
||||
session_start();
|
||||
if (!isset($_SESSION['challenge']))
|
||||
{ // New session
|
||||
$_SESSION['challenge'] = sha1(time().session_id()); // Create a unique challenge string for CHAP login
|
||||
// Create a unique challenge string for CHAP login
|
||||
$_SESSION['challenge'] = sha1(time().session_id());
|
||||
}
|
||||
$ubrowser = md5('E107'.$_SERVER['HTTP_USER_AGENT']);
|
||||
if (!isset($_SESSION['ubrowser']))
|
||||
@@ -559,9 +560,10 @@ define('e_PAGE', $page);
|
||||
// sort out the users language selection
|
||||
if (isset($_POST['setlanguage']) || isset($_GET['elan']) || isset($GLOBALS['elan']))
|
||||
{
|
||||
if($_GET['elan']) // query support, for language selection splash pages. etc
|
||||
// query support, for language selection splash pages. etc
|
||||
if($_GET['elan'])
|
||||
{
|
||||
$_POST['sitelanguage'] = str_replace(array(".","/","%"),"",$_GET['elan']);
|
||||
$_POST['sitelanguage'] = str_replace(array(".", "/", "%"), "", $_GET['elan']);
|
||||
}
|
||||
if($GLOBALS['elan'] && !isset($_POST['sitelanguage']))
|
||||
{
|
||||
@@ -570,6 +572,7 @@ if (isset($_POST['setlanguage']) || isset($_GET['elan']) || isset($GLOBALS['elan
|
||||
|
||||
$sql->mySQLlanguage = $_POST['sitelanguage'];
|
||||
$sql2->mySQLlanguage = $_POST['sitelanguage'];
|
||||
|
||||
session_set('e107language_'.e_COOKIE, $_POST['sitelanguage'], time() + 86400);
|
||||
if ($pref['user_tracking'] != 'session' && (strpos(e_SELF, ADMINDIR) === false))
|
||||
{
|
||||
@@ -599,12 +602,13 @@ if (isset($pref['multilanguage']) && $pref['multilanguage'])
|
||||
}
|
||||
|
||||
// Get Language List for rights checking.
|
||||
if(!$tmplan = getcachedvars('language-list'))
|
||||
if( ! $tmplan = getcachedvars('language-list'))
|
||||
{
|
||||
$handle=opendir(e_LANGUAGEDIR);
|
||||
$handle = opendir(e_LANGUAGEDIR);
|
||||
while ($file = readdir($handle))
|
||||
{
|
||||
if (is_dir(e_LANGUAGEDIR.$file) && $file != '.' && $file != '..' && $file != 'CVS')
|
||||
// add only if e_LANGUAGEDIR.e_LANGUAGE/e_LANGUAGE
|
||||
if ($file != '.' && $file != '..' && is_readable(e_LANGUAGEDIR.$file.'/'.$file.'.php'))
|
||||
{
|
||||
$lanlist[] = $file;
|
||||
}
|
||||
@@ -613,21 +617,69 @@ if(!$tmplan = getcachedvars('language-list'))
|
||||
$tmplan = implode(',', $lanlist);
|
||||
cachevars('language-list', $tmplan);
|
||||
}
|
||||
// Save language flat list
|
||||
define('e_LANLIST', $tmplan);
|
||||
|
||||
define('e_LANLIST', (isset($tmplan) ? $tmplan : ''));
|
||||
// Set $language fallback to $pref['sitelanguage'] for the time being
|
||||
$language = $pref['sitelanguage'];
|
||||
|
||||
$language=(isset($_COOKIE['e107language_'.e_COOKIE]) ? $_COOKIE['e107language_'.e_COOKIE] : ($pref['sitelanguage'] ? $pref['sitelanguage'] : 'English'));
|
||||
$language = preg_replace('#\W#', '', $language);
|
||||
define('USERLAN', ($user_language && (strpos(e_SELF, $PLUGINS_DIRECTORY) !== FALSE || (strpos(e_SELF, $ADMIN_DIRECTORY) === FALSE && file_exists(e_LANGUAGEDIR.$user_language."/lan_".e_PAGE)) || (strpos(e_SELF, $ADMIN_DIRECTORY) !== FALSE && file_exists(e_LANGUAGEDIR.$user_language."/admin/lan_".e_PAGE)) || file_exists(dirname($_SERVER['SCRIPT_FILENAME'])."/languages/".$user_language."/lan_".e_PAGE) || ( (strpos(e_SELF, $ADMIN_DIRECTORY) == FALSE) && (strpos(e_SELF, $PLUGINS_DIRECTORY) == FALSE) && file_exists(e_LANGUAGEDIR.$user_language.'/'.$user_language.'.php') ) ) ? $user_language : FALSE));
|
||||
define('e_LANGUAGE', (!USERLAN || !defined('USERLAN') ? $language : USERLAN));
|
||||
// Get user language choice
|
||||
/// Force no multilingual sites to keep there preset languages? if (varset($pref['multilanguage']))
|
||||
{
|
||||
if ($pref['user_tracking'] == 'session')
|
||||
{
|
||||
$user_language = (array_key_exists('e107language_'.$pref['cookie_name'], $_SESSION) ? $_SESSION['e107language_'.$pref['cookie_name']] : '');
|
||||
}
|
||||
else
|
||||
{
|
||||
$user_language= (isset($_COOKIE['e107language_'.$pref['cookie_name']])) ? $_COOKIE['e107language_'.$pref['cookie_name']] : '';
|
||||
}
|
||||
// Strip $user_language
|
||||
//TODO allow [a-z][A-Z][0-9]_
|
||||
$user_language = preg_replace('#\W#', '', $user_language);
|
||||
|
||||
e107_include(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php');
|
||||
// Is user language choice available?
|
||||
if( ! in_array($user_language, $lanlist))
|
||||
{
|
||||
// Reset session
|
||||
if(array_key_exists('e107language_'.$pref['cookie_name'], $_SESSION))
|
||||
{
|
||||
unset($_SESSION['e107language_'.$pref['cookie_name']]);
|
||||
}
|
||||
// Reset cookie
|
||||
if(isset($_COOKIE['e107language_'.$pref['cookie_name']]))
|
||||
{
|
||||
unset($_COOKIE['e107language_'.$pref['cookie_name']]);
|
||||
}
|
||||
$user_language = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$language = $user_language;
|
||||
}
|
||||
|
||||
// Ensure db got the proper language - default is empty
|
||||
if (varset($pref['multilanguage']))
|
||||
{
|
||||
$sql->mySQLlanguage = $user_language;
|
||||
$sql2->mySQLlanguage = $user_language;
|
||||
}
|
||||
}
|
||||
|
||||
// We should have the language by now
|
||||
define('e_LANGUAGE', $language);
|
||||
|
||||
// Keep USERLAN for backward compatibility
|
||||
define('USERLAN', e_LANGUAGE);
|
||||
|
||||
//TODO do it only once and with the proper function
|
||||
e107_include_once(e_LANGUAGEDIR.e_LANGUAGE.'/'.e_LANGUAGE.'.php');
|
||||
e107_include_once(e_LANGUAGEDIR.e_LANGUAGE."/".e_LANGUAGE.'_custom.php');
|
||||
|
||||
// Now we know the site CHARSET, define how to handle utf-8 as necessary
|
||||
$tp->initCharset();
|
||||
|
||||
if($pref['sitelanguage'] != e_LANGUAGE && isset($pref['multilanguage']) && $pref['multilanguage'] && !$pref['multilanguage_subdomain'])
|
||||
if($pref['sitelanguage'] != e_LANGUAGE && varset($pref['multilanguage']) && !$pref['multilanguage_subdomain'])
|
||||
{
|
||||
list($clc) = explode("_",CORE_LC);
|
||||
define('e_LAN', strtolower($clc));
|
||||
|
Reference in New Issue
Block a user