MediaWiki master
WebInstallerLanguage.php
Go to the documentation of this file.
1<?php
2
9namespace MediaWiki\Installer;
10
12use MediaWiki\Languages\LanguageNameUtils;
15
17
21 public function execute() {
22 global $wgLang;
23 $r = $this->parent->request;
24 $userLang = $r->getVal( 'uselang', '' );
25 $contLang = $r->getVal( 'ContLang', '' );
26
28 ->getLanguageNameUtils()
29 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
30 $lifetime = intval( ini_get( 'session.gc_maxlifetime' ) );
31 if ( !$lifetime ) {
32 $lifetime = 1440; // PHP default
33 }
34
35 if ( $r->wasPosted() ) {
36 # Do session test
37 if ( $this->parent->getSession( 'test' ) === null ) {
38 $requestTime = $r->getIntOrNull( 'LanguageRequestTime' );
39 if ( !$requestTime ) {
40 // The most likely explanation is that the user was knocked back
41 // from another page on POST due to session expiry
42 $msg = 'config-session-expired';
43 } elseif ( time() - $requestTime > $lifetime ) {
44 $msg = 'config-session-expired';
45 } else {
46 $msg = 'config-no-session';
47 }
48 $this->parent->showError( $msg, $wgLang->formatTimePeriod( $lifetime ) );
49 } else {
50 if ( isset( $languages[$userLang] ) ) {
51 $this->setVar( '_UserLang', $userLang );
52 }
53 if ( isset( $languages[$contLang] ) ) {
54 $this->setVar( 'wgLanguageCode', $contLang );
55 }
56
57 return 'continue';
58 }
59 } elseif ( $this->parent->showSessionWarning ) {
60 # The user was knocked back from another page to the start
61 # This probably indicates a session expiry
62 $this->parent->showError( 'config-session-expired',
63 $wgLang->formatTimePeriod( $lifetime ) );
64 }
65
66 $this->parent->setSession( 'test', true );
67
68 if ( !isset( $languages[$userLang] ) ) {
69 $userLang = $this->getVar( '_UserLang', 'en' );
70 }
71 if ( !isset( $languages[$contLang] ) ) {
72 $contLang = $this->getVar( 'wgLanguageCode', 'en' );
73 }
74 $this->startForm();
75 $s = Html::hidden( 'LanguageRequestTime', time() ) .
76 $this->getLanguageSelector( 'uselang', 'config-your-language', $userLang,
77 $this->parent->getHelpBox( 'config-your-language-help' ) ) .
78 $this->getLanguageSelector( 'ContLang', 'config-wiki-language', $contLang,
79 $this->parent->getHelpBox( 'config-wiki-language-help' ) );
80 $this->addHTML( $s );
81 $this->endForm( 'continue', false );
82
83 return null;
84 }
85
96 public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
97 $output = $helpHtml;
98
99 $select = new XmlSelect( $name, $name, $selectedCode );
100 $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
101 $select->setAttribute( 'class', 'cdx-select' );
102
103 $languages = MediaWikiServices::getInstance()
104 ->getLanguageNameUtils()
105 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
106 foreach ( $languages as $code => $lang ) {
107 $select->addOption( "$code - $lang", $code );
108 }
109
110 $output .= $select->getHTML();
111 return $this->parent->label( $label, $name, $output );
112 }
113
114}
if(MW_ENTRY_POINT==='index') if(!defined( 'MW_NO_SESSION') &&MW_ENTRY_POINT !=='cli' $wgLang
Definition Setup.php:551
This class is a collection of static functions that serve two purposes:
Definition Html.php:43
getLanguageSelector( $name, $label, $selectedCode, $helpHtml='')
Get a "<select>" for selecting languages.
Abstract class to define pages for the web installer.
endForm( $continue='continue', $back='back')
Service locator for MediaWiki core services.
static getInstance()
Returns the global default instance of the top level service locator.
Class for generating HTML <select> or <datalist> elements.
Definition XmlSelect.php:16