00001 <?php
00002
00003 class SpecialPreferences extends SpecialPage {
00004 function __construct() {
00005 parent::__construct( 'Preferences' );
00006 }
00007
00008 function execute( $par ) {
00009 global $wgOut, $wgUser, $wgRequest;
00010
00011 $this->setHeaders();
00012 $this->outputHeader();
00013 $wgOut->disallowUserJs(); # Prevent hijacked user scripts from sniffing passwords etc.
00014
00015 if ( $wgUser->isAnon() ) {
00016 $wgOut->showErrorPage( 'prefsnologin', 'prefsnologintext', array( $this->getTitle()->getPrefixedDBkey() ) );
00017 return;
00018 }
00019 if ( wfReadOnly() ) {
00020 $wgOut->readOnlyPage();
00021 return;
00022 }
00023
00024 if ( $par == 'reset' ) {
00025 $this->showResetForm();
00026 return;
00027 }
00028
00029 $wgOut->addScriptFile( 'prefs.js' );
00030
00031 if ( $wgRequest->getCheck( 'success' ) ) {
00032 $wgOut->wrapWikiMsg(
00033 '<div class="successbox"><strong>$1</strong></div><div id="mw-pref-clear"></div>',
00034 'savedprefs'
00035 );
00036 }
00037
00038 if ( $wgRequest->getCheck( 'eauth' ) ) {
00039 $wgOut->wrapWikiMsg( "<div class='error' style='clear: both;'>\n$1</div>",
00040 'eauthentsent', $wgUser->getName() );
00041 }
00042
00043 $htmlForm = Preferences::getFormObject( $wgUser );
00044 $htmlForm->setSubmitCallback( array( 'Preferences', 'tryUISubmit' ) );
00045
00046 $htmlForm->show();
00047 }
00048
00049 function showResetForm() {
00050 global $wgOut;
00051
00052 $wgOut->addWikiMsg( 'prefs-reset-intro' );
00053
00054 $htmlForm = new HTMLForm( array(), 'prefs-restore' );
00055
00056 $htmlForm->setSubmitText( wfMsg( 'restoreprefs' ) );
00057 $htmlForm->setTitle( $this->getTitle( 'reset' ) );
00058 $htmlForm->setSubmitCallback( array( __CLASS__, 'submitReset' ) );
00059 $htmlForm->suppressReset();
00060
00061 $htmlForm->show();
00062 }
00063
00064 static function submitReset( $formData ) {
00065 global $wgUser, $wgOut;
00066 $wgUser->resetOptions();
00067 $wgUser->saveSettings();
00068
00069 $url = SpecialPage::getTitleFor( 'Preferences' )->getFullURL( 'success' );
00070
00071 $wgOut->redirect( $url );
00072
00073 return true;
00074 }
00075 }