MediaWiki  master
WebInstallerLanguage.php
Go to the documentation of this file.
1 <?php
23 
25 
29  public function execute() {
30  global $wgLang;
31  $r = $this->parent->request;
32  $userLang = $r->getVal( 'uselang' );
33  $contLang = $r->getVal( 'ContLang' );
34 
35  $languages = MediaWikiServices::getInstance()
36  ->getLanguageNameUtils()
37  ->getLanguageNames( null, 'mwfile' );
38  $lifetime = intval( ini_get( 'session.gc_maxlifetime' ) );
39  if ( !$lifetime ) {
40  $lifetime = 1440; // PHP default
41  }
42 
43  if ( $r->wasPosted() ) {
44  # Do session test
45  if ( $this->parent->getSession( 'test' ) === null ) {
46  $requestTime = $r->getVal( 'LanguageRequestTime' );
47  if ( !$requestTime ) {
48  // The most likely explanation is that the user was knocked back
49  // from another page on POST due to session expiry
50  $msg = 'config-session-expired';
51  } elseif ( time() - $requestTime > $lifetime ) {
52  $msg = 'config-session-expired';
53  } else {
54  $msg = 'config-no-session';
55  }
56  $this->parent->showError( $msg, $wgLang->formatTimePeriod( $lifetime ) );
57  } else {
58  if ( isset( $languages[$userLang] ) ) {
59  $this->setVar( '_UserLang', $userLang );
60  }
61  if ( isset( $languages[$contLang] ) ) {
62  $this->setVar( 'wgLanguageCode', $contLang );
63  }
64 
65  return 'continue';
66  }
67  } elseif ( $this->parent->showSessionWarning ) {
68  # The user was knocked back from another page to the start
69  # This probably indicates a session expiry
70  $this->parent->showError( 'config-session-expired',
71  $wgLang->formatTimePeriod( $lifetime ) );
72  }
73 
74  $this->parent->setSession( 'test', true );
75 
76  if ( !isset( $languages[$userLang] ) ) {
77  $userLang = $this->getVar( '_UserLang', 'en' );
78  }
79  if ( !isset( $languages[$contLang] ) ) {
80  $contLang = $this->getVar( 'wgLanguageCode', 'en' );
81  }
82  $this->startForm();
83  $s = Html::hidden( 'LanguageRequestTime', time() ) .
84  $this->getLanguageSelector( 'uselang', 'config-your-language', $userLang,
85  $this->parent->getHelpBox( 'config-your-language-help' ) ) .
86  $this->getLanguageSelector( 'ContLang', 'config-wiki-language', $contLang,
87  $this->parent->getHelpBox( 'config-wiki-language-help' ) );
88  $this->addHTML( $s );
89  $this->endForm( 'continue', false );
90 
91  return null;
92  }
93 
104  public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
105  $output = $helpHtml;
106 
107  $select = new XmlSelect( $name, $name, $selectedCode );
108  $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
109 
110  $languages = MediaWikiServices::getInstance()
111  ->getLanguageNameUtils()
112  ->getLanguageNames( null, 'mwfile' );
113  foreach ( $languages as $code => $lang ) {
114  $select->addOption( "$code - $lang", $code );
115  }
116 
117  $output .= $select->getHTML();
118  return $this->parent->label( $label, $name, $output );
119  }
120 
121 }
WebInstallerPage\startForm
startForm()
Definition: WebInstallerPage.php:69
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:154
$lang
if(!isset( $args[0])) $lang
Definition: testCompression.php:37
$s
$s
Definition: mergeMessageFileList.php:185
WebInstallerPage\endForm
endForm( $continue='continue', $back='back')
Definition: WebInstallerPage.php:86
XmlSelect
Class for generating HTML <select> or <datalist> elements.
Definition: XmlSelect.php:26
$wgLang
$wgLang
Definition: Setup.php:776
WebInstallerPage\getVar
getVar( $var, $default=null)
Definition: WebInstallerPage.php:152
WebInstallerLanguage\getLanguageSelector
getLanguageSelector( $name, $label, $selectedCode, $helpHtml='')
Get a "<select>" for selecting languages.
Definition: WebInstallerLanguage.php:104
WebInstallerLanguage
Definition: WebInstallerLanguage.php:24
Html\hidden
static hidden( $name, $value, array $attribs=[])
Convenience function to produce an input element with type=hidden.
Definition: Html.php:802
WebInstallerPage\addHTML
addHTML( $html)
Definition: WebInstallerPage.php:65
WebInstallerPage\setVar
setVar( $name, $value)
Definition: WebInstallerPage.php:160
WebInstallerPage
Abstract class to define pages for the web installer.
Definition: WebInstallerPage.php:30
WebInstallerLanguage\execute
execute()
Definition: WebInstallerLanguage.php:29