}
static function isRealObject( $obj ) {
- return is_object( $obj ) && !is_a( $obj, 'StubObject' );
+ return is_object( $obj ) && !($obj instanceof StubObject);
}
function _call( $name, $args ) {
function _newObject() {
return wfCreateObject( $this->mClass, $this->mParams );
}
-
+
function __call( $name, $args ) {
return $this->_call( $name, $args );
}
function _newObject() {
global $wgContLanguageCode, $wgRequest, $wgUser, $wgContLang;
- $code = $wgRequest->getVal('uselang', '');
- if ($code == '')
- $code = $wgUser->getOption('language');
+ $code = $wgRequest->getVal('uselang', $wgUser->getOption('language') );
+
+ // if variant is explicitely selected, use it instead the one from wgUser
+ // see bug #7605
+ if($wgContLang->hasVariants()){
+ $variant = $wgContLang->getPreferredVariant();
+ if($variant != $wgContLanguageCode)
+ $code = $variant;
+ }
+
# Validate $code
- if( empty( $code ) || !preg_match( '/^[a-z]+(-[a-z]+)?$/', $code ) ) {
+ if( empty( $code ) || !preg_match( '/^[a-z-]+$/', $code ) ) {
+ wfDebug( "Invalid user language code\n" );
$code = $wgContLanguageCode;
}
- if( $code == $wgContLanguageCode ) {
+ if( $code === $wgContLanguageCode ) {
return $wgContLang;
} else {
$obj = Language::factory( $code );
global $wgCommandLineMode;
if( $wgCommandLineMode ) {
$user = new User;
- $user->setLoaded( true );
} else {
- $user = User::loadFromSession();
+ $user = User::newFromSession();
+ wfRunHooks('AutoAuthenticate',array(&$user));
}
return $user;
}
}
-?>
+