MediaWiki master
WebInstallerLanguage.php
Go to the documentation of this file.
1<?php
2
9namespace MediaWiki\Installer;
10
16
18
22 public function execute() {
23 $lang = RequestContext::getMain()->getLanguage();
24 $r = $this->parent->request;
25 $userLang = $r->getVal( 'uselang', '' );
26 $contLang = $r->getVal( 'ContLang', '' );
27
29 ->getLanguageNameUtils()
30 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
31 $lifetime = intval( ini_get( 'session.gc_maxlifetime' ) );
32 if ( !$lifetime ) {
33 $lifetime = 1440; // PHP default
34 }
35
36 if ( $r->wasPosted() ) {
37 # Do session test
38 if ( $this->parent->getSession( 'test' ) === null ) {
39 $requestTime = $r->getIntOrNull( 'LanguageRequestTime' );
40 if ( !$requestTime ) {
41 // The most likely explanation is that the user was knocked back
42 // from another page on POST due to session expiry
43 $msg = 'config-session-expired';
44 } elseif ( time() - $requestTime > $lifetime ) {
45 $msg = 'config-session-expired';
46 } else {
47 $msg = 'config-no-session';
48 }
49 $this->parent->showError( $msg, $lang->formatTimePeriod( $lifetime ) );
50 } else {
51 if ( isset( $languages[$userLang] ) ) {
52 $this->setVar( '_UserLang', $userLang );
53 }
54 if ( isset( $languages[$contLang] ) ) {
55 $this->setVar( 'wgLanguageCode', $contLang );
56 }
57
58 return 'continue';
59 }
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 ) );
65 }
66
67 $this->parent->setSession( 'test', true );
68
69 if ( !isset( $languages[$userLang] ) ) {
70 $userLang = $this->getVar( '_UserLang', 'en' );
71 }
72 if ( !isset( $languages[$contLang] ) ) {
73 $contLang = $this->getVar( 'wgLanguageCode', 'en' );
74 }
75 $this->startForm();
76 $s = Html::hidden( 'LanguageRequestTime', time() ) .
77 $this->getLanguageSelector( 'uselang', 'config-your-language', $userLang,
78 $this->parent->getHelpBox( 'config-your-language-help' ) ) .
79 $this->getLanguageSelector( 'ContLang', 'config-wiki-language', $contLang,
80 $this->parent->getHelpBox( 'config-wiki-language-help' ) );
81 $this->addHTML( $s );
82 $this->endForm( 'continue', false );
83
84 return null;
85 }
86
97 public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
98 $output = $helpHtml;
99
100 $select = new XmlSelect( $name, $name, $selectedCode );
101 $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
102 $select->setAttribute( 'class', 'cdx-select' );
103
104 $languages = MediaWikiServices::getInstance()
105 ->getLanguageNameUtils()
106 ->getLanguageNames( LanguageNameUtils::AUTONYMS, LanguageNameUtils::SUPPORTED );
107 foreach ( $languages as $code => $lang ) {
108 $select->addOption( "$code - $lang", $code );
109 }
110
111 $output .= $select->getHTML();
112 return $this->parent->label( $label, $name, $output );
113 }
114
115}
Group all the pieces relevant to the context of a request into one instance.
This class is a collection of static functions that serve two purposes:
Definition Html.php:44
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')
A service that provides utilities to do with language names and codes.
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