23 $lang = RequestContext::getMain()->getLanguage();
24 $r = $this->parent->request;
25 $userLang = $r->getVal(
'uselang',
'' );
26 $contLang = $r->getVal(
'ContLang',
'' );
29 ->getLanguageNameUtils()
30 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
31 $lifetime = intval( ini_get(
'session.gc_maxlifetime' ) );
36 if ( $r->wasPosted() ) {
38 if ( $this->parent->getSession(
'test' ) ===
null ) {
39 $requestTime = $r->getIntOrNull(
'LanguageRequestTime' );
40 if ( !$requestTime ) {
43 $msg =
'config-session-expired';
44 } elseif ( time() - $requestTime > $lifetime ) {
45 $msg =
'config-session-expired';
47 $msg =
'config-no-session';
49 $this->parent->showError( $msg, $lang->formatTimePeriod( $lifetime ) );
51 if ( isset( $languages[$userLang] ) ) {
52 $this->
setVar(
'_UserLang', $userLang );
54 if ( isset( $languages[$contLang] ) ) {
55 $this->
setVar(
'wgLanguageCode', $contLang );
60 } elseif ( $this->parent->showSessionWarning ) {
61 # The user was knocked back from another page to the start
62 # This probably indicates a session expiry
63 $this->parent->showError(
'config-session-expired',
64 $lang->formatTimePeriod( $lifetime ) );
67 $this->parent->setSession(
'test',
true );
69 if ( !isset( $languages[$userLang] ) ) {
70 $userLang = $this->
getVar(
'_UserLang',
'en' );
72 if ( !isset( $languages[$contLang] ) ) {
73 $contLang = $this->
getVar(
'wgLanguageCode',
'en' );
76 $s = Html::hidden(
'LanguageRequestTime', time() ) .
78 $this->parent->getHelpBox(
'config-your-language-help' ) ) .
80 $this->parent->getHelpBox(
'config-wiki-language-help' ) );
82 $this->
endForm(
'continue',
false );
100 $select =
new XmlSelect( $name, $name, $selectedCode );
101 $select->setAttribute(
'tabindex', $this->parent->nextTabIndex() );
102 $select->setAttribute(
'class',
'cdx-select' );
105 ->getLanguageNameUtils()
106 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
107 foreach ( $languages as $code => $lang ) {
108 $select->addOption(
"$code - $lang", $code );
111 $output .= $select->getHTML();
112 return $this->parent->label( $label, $name, $output );