1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-31 20:00:37 +02:00

Allow for disabling of language-perm checking on a page-by-page basis. Usage: $_E107['no_language_perm_check'] = true; before class2.php.

Allow language to be defined by script. Usage Example: define("e_PAGE_LANGUAGE", "French"); OR define("e_PAGE_LANGUAGE", "E_SITELANGUAGE"); before class2.php.
This commit is contained in:
Cameron
2015-09-03 16:19:39 -07:00
parent 296e049ad7
commit caa89c9c3e
2 changed files with 27 additions and 12 deletions

View File

@@ -24,7 +24,7 @@ define('e_CAPTCHA_FONTCOLOR','#F9A533');
// Required for a clean v1.x -> v2 upgrade.
$core = e107::getConfig('core');
if($core->get('admintheme') != 'bootstrap' && $core->get('admintheme') != 'bootstrap3')
if($core->get('admintheme') != 'bootstrap3')
{
$core->update('admintheme','bootstrap3');
$core->update('adminstyle','infopanel');
@@ -35,7 +35,7 @@ if($core->get('admintheme') != 'bootstrap' && $core->get('admintheme') != 'boots
}
// Check Admin-Perms for current language and redirect if necessary.
if(USER && !getperms('0') && vartrue($pref['multilanguage']) && !getperms(e_LANGUAGE))
if(USER && !getperms('0') && vartrue($pref['multilanguage']) && !getperms(e_LANGUAGE) && empty($_E107['no_language_perm_check']))
{
$lng = e107::getLanguage();

View File

@@ -289,6 +289,16 @@ class language{
return false;
}
if($lang == 'E_SITELANGUAGE') // allows for overriding language using a scripted 'define' before class2.php is loaded.
{
$lang = $pref['sitelanguage'];
}
if($lang == 'E_ADMINLANGUAGE')
{
$lang = $pref['adminlanguage'];
}
if(strlen($lang)== 2)
{
$iso = $lang;
@@ -453,12 +463,13 @@ class language{
/**
* Detect a Language Change
* 0. Parked Domain eg. http://mylanguagedomain.com
* 1. Parked subDomain eg. http://es.mydomain.com (Preferred for SEO)
* 2. e_MENU Query eg. /index.php?[es]
* 3. $_GET['elan'] eg. /index.php?elan=es
* 4. $_POST['sitelanguage'] eg. <input type='hidden' name='sitelanguage' value='Spanish' />
* 5. $GLOBALS['elan'] eg. <?php $GLOBALS['elan']='es' (deprecated)
* 1. Scripted Definition eg. define('e_PAGE_LANGUAGE', 'English');
* 2. Parked Domain eg. http://mylanguagedomain.com
* 3. Parked subDomain eg. http://es.mydomain.com (Preferred for SEO)
* 4. e_MENU Query eg. /index.php?[es]
* 5. $_GET['elan'] eg. /index.php?elan=es
* 6. $_POST['sitelanguage'] eg. <input type='hidden' name='sitelanguage' value='Spanish' />
* 7. $GLOBALS['elan'] eg. <?php $GLOBALS['elan']='es' (deprecated)
*
* @param boolean $force force detection, don't use cached value
*/
@@ -470,7 +481,11 @@ class language{
if(false !== $this->detect && !$force) return $this->detect;
$this->_cookie_domain = '';
if(vartrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== false))
if(defined('e_PAGE_LANGUAGE') && ($detect_language = $this->isValid(e_PAGE_LANGUAGE))) // page specific override.
{
// Do nothing as $detect_language is set.
}
elseif(vartrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== false))
{
$detect_language = (e_SUBDOMAIN) ? $this->isValid(e_SUBDOMAIN) : $pref['sitelanguage'];
// Done in session handler now, based on MULTILANG_SUBDOMAIN value