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 }