%PDF- %PDF-
Direktori : /proc/thread-self/root/www/varak.net/wiki.varak.net/includes/installer/ |
Current File : //proc/thread-self/root/www/varak.net/wiki.varak.net/includes/installer/WebInstallerLanguage.php |
<?php /** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * * @file * @ingroup Deployment */ class WebInstallerLanguage extends WebInstallerPage { /** * @return string|null */ public function execute() { global $wgLang; $r = $this->parent->request; $userLang = $r->getVal( 'uselang' ); $contLang = $r->getVal( 'ContLang' ); $languages = Language::fetchLanguageNames( null, 'mwfile' ); $lifetime = intval( ini_get( 'session.gc_maxlifetime' ) ); if ( !$lifetime ) { $lifetime = 1440; // PHP default } if ( $r->wasPosted() ) { # Do session test if ( $this->parent->getSession( 'test' ) === null ) { $requestTime = $r->getVal( 'LanguageRequestTime' ); if ( !$requestTime ) { // The most likely explanation is that the user was knocked back // from another page on POST due to session expiry $msg = 'config-session-expired'; } elseif ( time() - $requestTime > $lifetime ) { $msg = 'config-session-expired'; } else { $msg = 'config-no-session'; } $this->parent->showError( $msg, $wgLang->formatTimePeriod( $lifetime ) ); } else { if ( isset( $languages[$userLang] ) ) { $this->setVar( '_UserLang', $userLang ); } if ( isset( $languages[$contLang] ) ) { $this->setVar( 'wgLanguageCode', $contLang ); } return 'continue'; } } elseif ( $this->parent->showSessionWarning ) { # The user was knocked back from another page to the start # This probably indicates a session expiry $this->parent->showError( 'config-session-expired', $wgLang->formatTimePeriod( $lifetime ) ); } $this->parent->setSession( 'test', true ); if ( !isset( $languages[$userLang] ) ) { $userLang = $this->getVar( '_UserLang', 'en' ); } if ( !isset( $languages[$contLang] ) ) { $contLang = $this->getVar( 'wgLanguageCode', 'en' ); } $this->startForm(); $s = Html::hidden( 'LanguageRequestTime', time() ) . $this->getLanguageSelector( 'uselang', 'config-your-language', $userLang, $this->parent->getHelpBox( 'config-your-language-help' ) ) . $this->getLanguageSelector( 'ContLang', 'config-wiki-language', $contLang, $this->parent->getHelpBox( 'config-wiki-language-help' ) ); $this->addHTML( $s ); $this->endForm( 'continue', false ); return null; } /** * Get a "<select>" for selecting languages. * * @param string $name * @param string $label * @param string $selectedCode * @param string $helpHtml * * @return string */ public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) { $output = $helpHtml; $select = new XmlSelect( $name, $name, $selectedCode ); $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() ); $languages = Language::fetchLanguageNames( null, 'mwfile' ); foreach ( $languages as $code => $lang ) { $select->addOption( "$code - $lang", $code ); } $output .= $select->getHTML(); return $this->parent->label( $label, $name, $output ); } }