specialpreferences.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 939 行 · 第 1/3 页

PHP
939
字号
					}				} else {					$error = wfMsg( 'invalidemailaddress' );				}			} else {				$wgUser->setEmail( $this->mUserEmail );				$wgUser->setCookies();				$wgUser->saveSettings();			}		}		if( $needRedirect && $error === false ) {			$title =& Title::makeTitle( NS_SPECIAL, "Preferences" );			$wgOut->redirect($title->getFullURL('success'));			return;		}		$wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) );		$po = ParserOptions::newFromUser( $wgUser );		$this->mainPrefsForm( $error === false ? 'success' : 'error', $error);	}	/**	 * @access private	 */	function resetPrefs() {		global $wgUser, $wgLang, $wgContLang, $wgAllowRealName;		$this->mOldpass = $this->mNewpass = $this->mRetypePass = '';		$this->mUserEmail = $wgUser->getEmail();		$this->mUserEmailAuthenticationtimestamp = $wgUser->getEmailAuthenticationtimestamp();		$this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : '';		$this->mUserLanguage = $wgUser->getOption( 'language' );		if( empty( $this->mUserLanguage ) ) {			# Quick hack for conversions, where this value is blank			global $wgContLanguageCode;			$this->mUserLanguage = $wgContLanguageCode;		}		$this->mUserVariant = $wgUser->getOption( 'variant');		$this->mEmailFlag = $wgUser->getOption( 'disablemail' ) == 1 ? 1 : 0;		$this->mNick = $wgUser->getOption( 'nickname' );		$this->mQuickbar = $wgUser->getOption( 'quickbar' );		$this->mSkin = Skin::normalizeKey( $wgUser->getOption( 'skin' ) );		$this->mMath = $wgUser->getOption( 'math' );		$this->mDate = $wgUser->getOption( 'date' );		$this->mRows = $wgUser->getOption( 'rows' );		$this->mCols = $wgUser->getOption( 'cols' );		$this->mStubs = $wgUser->getOption( 'stubthreshold' );		$this->mHourDiff = $wgUser->getOption( 'timecorrection' );		$this->mSearch = $wgUser->getOption( 'searchlimit' );		$this->mSearchLines = $wgUser->getOption( 'contextlines' );		$this->mSearchChars = $wgUser->getOption( 'contextchars' );		$this->mImageSize = $wgUser->getOption( 'imagesize' );		$this->mThumbSize = $wgUser->getOption( 'thumbsize' );		$this->mRecent = $wgUser->getOption( 'rclimit' );		$this->mWatchlistEdits = $wgUser->getOption( 'wllimit' );		$this->mUnderline = $wgUser->getOption( 'underline' );		$this->mWatchlistDays = $wgUser->getOption( 'watchlistdays' );		$togs = $wgLang->getUserToggles();		foreach ( $togs as $tname ) {			$ttext = wfMsg('tog-'.$tname);			$this->mToggles[$tname] = $wgUser->getOption( $tname );		}		$namespaces = $wgContLang->getNamespaces();		foreach ( $namespaces as $i => $namespace ) {			if ( $i >= NS_MAIN ) {				$this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i );			}		}	}	/**	 * @access private	 */	function namespacesCheckboxes() {		global $wgContLang;		# Determine namespace checkboxes		$namespaces = $wgContLang->getNamespaces();		$r1 = null;		foreach ( $namespaces as $i => $name ) {			if ($i < 0)				continue;			$checked = $this->mSearchNs[$i] ? "checked='checked'" : '';			$name = str_replace( '_', ' ', $namespaces[$i] );			if ( empty($name) )				$name = wfMsg( 'blanknamespace' );			$r1 .= "<input type='checkbox' value='1' name='wpNs$i' id='wpNs$i' {$checked}/> <label for='wpNs$i'>{$name}</label><br />\n";		}		return $r1;	}	function getToggle( $tname, $trailer = false, $disabled = false ) {		global $wgUser, $wgLang;		$this->mUsedToggles[$tname] = true;		$ttext = $wgLang->getUserToggle( $tname );		$checked = $wgUser->getOption( $tname ) == 1 ? ' checked="checked"' : '';		$disabled = $disabled ? ' disabled="disabled"' : '';		$trailer = $trailer ? $trailer : '';		return "<div class='toggle'><input type='checkbox' value='1' id=\"$tname\" name=\"wpOp$tname\"$checked$disabled />" .			" <span class='toggletext'><label for=\"$tname\">$ttext</label>$trailer</span></div>\n";	}	function getToggles( $items ) {		$out = "";		foreach( $items as $item ) {			if( $item === false )				continue;			if( is_array( $item ) ) {				list( $key, $trailer ) = $item;			} else {				$key = $item;				$trailer = false;			}			$out .= $this->getToggle( $key, $trailer );		}		return $out;	}	function addRow($td1, $td2) {		return "<tr><td align='right'>$td1</td><td align='left'>$td2</td></tr>";	}	/**	 * @access private	 */	function mainPrefsForm( $status , $message = '' ) {		global $wgUser, $wgOut, $wgLang, $wgContLang;		global $wgAllowRealName, $wgImageLimits, $wgThumbLimits;		global $wgDisableLangConversion;		global $wgEnotifWatchlist, $wgEnotifUserTalk,$wgEnotifMinorEdits;		global $wgRCShowWatchingUsers, $wgEnotifRevealEditorAddress;		global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication;		global $wgContLanguageCode, $wgDefaultSkin, $wgSkipSkins, $wgAuth;		$wgOut->setPageTitle( wfMsg( 'preferences' ) );		$wgOut->setArticleRelated( false );		$wgOut->setRobotpolicy( 'noindex,nofollow' );		if ( $this->mSuccess || 'success' == $status ) {			$wgOut->addWikitext( '<div class="successbox"><strong>'. wfMsg( 'savedprefs' ) . '</strong></div>' );		} else	if ( 'error' == $status ) {			$wgOut->addWikitext( '<div class="errorbox"><strong>' . $message  . '</strong></div>' );		} else if ( '' != $status ) {			$wgOut->addWikitext( $message . "\n----" );		}		$qbs = $wgLang->getQuickbarSettings();		$skinNames = $wgLang->getSkinNames();		$mathopts = $wgLang->getMathNames();		$dateopts = $wgLang->getDateFormats();		$togs = $wgLang->getUserToggles();		$titleObj = Title::makeTitle( NS_SPECIAL, 'Preferences' );		$action = $titleObj->escapeLocalURL();		# Pre-expire some toggles so they won't show if disabled		$this->mUsedToggles[ 'shownumberswatching' ] = true;		$this->mUsedToggles[ 'showupdated' ] = true;		$this->mUsedToggles[ 'enotifwatchlistpages' ] = true;		$this->mUsedToggles[ 'enotifusertalkpages' ] = true;		$this->mUsedToggles[ 'enotifminoredits' ] = true;		$this->mUsedToggles[ 'enotifrevealaddr' ] = true;		$this->mUsedToggles[ 'uselivepreview' ] = true;		# Enotif		# <FIXME>		$this->mUserEmail = htmlspecialchars( $this->mUserEmail );		$this->mRealName = htmlspecialchars( $this->mRealName );		$rawNick = $this->mNick;		$this->mNick = htmlspecialchars( $this->mNick );		if ( !$this->mEmailFlag ) { $emfc = 'checked="checked"'; }		else { $emfc = ''; }		if ($wgEmailAuthentication && ($this->mUserEmail != '') ) {			if( $wgUser->getEmailAuthenticationTimestamp() ) {				$emailauthenticated = wfMsg('emailauthenticated',$wgLang->timeanddate($wgUser->getEmailAuthenticationTimestamp(), true ) ).'<br />';				$disableEmailPrefs = false;			} else {				$disableEmailPrefs = true;				$skin = $wgUser->getSkin();				$emailauthenticated = wfMsg('emailnotauthenticated').'<br />' .					$skin->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Confirmemail' ),						wfMsg( 'emailconfirmlink' ) );			}		} else {			$emailauthenticated = '';			$disableEmailPrefs = false;		}		if ($this->mUserEmail == '') {			$emailauthenticated = wfMsg( 'noemailprefs' );		}		$ps = $this->namespacesCheckboxes();		$enotifwatchlistpages = ($wgEnotifWatchlist) ? $this->getToggle( 'enotifwatchlistpages', false, $disableEmailPrefs ) : '';		$enotifusertalkpages = ($wgEnotifUserTalk) ? $this->getToggle( 'enotifusertalkpages', false, $disableEmailPrefs ) : '';		$enotifminoredits = ($wgEnotifWatchlist && $wgEnotifMinorEdits) ? $this->getToggle( 'enotifminoredits', false, $disableEmailPrefs ) : '';		$enotifrevealaddr = (($wgEnotifWatchlist || $wgEnotifUserTalk) && $wgEnotifRevealEditorAddress) ? $this->getToggle( 'enotifrevealaddr', false, $disableEmailPrefs ) : '';		$prefs_help_email_enotif = ( $wgEnotifWatchlist || $wgEnotifUserTalk) ? ' ' . wfMsg('prefs-help-email-enotif') : '';		$prefs_help_realname = '';		# </FIXME>		$wgOut->addHTML( "<form action=\"$action\" method='post'>" );		$wgOut->addHTML( "<div id='preferences'>" );		# User data		#		$wgOut->addHTML( "<fieldset>\n<legend>" . wfMsg('prefs-personal') . "</legend>\n<table>\n");		$wgOut->addHTML(			$this->addRow(				wfMsg( 'username'),				$wgUser->getName()			)		);		$wgOut->addHTML(			$this->addRow(				wfMsg( 'uid' ),				$wgUser->getID()			)		);		if ($wgAllowRealName) {			$wgOut->addHTML(				$this->addRow(					'<label for="wpRealName">' . wfMsg('yourrealname') . '</label>',					"<input type='text' name='wpRealName' id='wpRealName' value=\"{$this->mRealName}\" size='25' />"				)			);		}		if ($wgEnableEmail) {			$wgOut->addHTML(				$this->addRow(					'<label for="wpUserEmail">' . wfMsg( 'youremail' ) . '</label>',					"<input type='text' name='wpUserEmail' id='wpUserEmail' value=\"{$this->mUserEmail}\" size='25' />"				)			);		}		global $wgParser;		if( !empty( $this->mToggles['fancysig'] ) &&			false === $wgParser->validateSig( $rawNick ) ) {			$invalidSig = $this->addRow(				'&nbsp;',				'<span class="error">' . wfMsgHtml( 'badsig' ) . '<span>'			);		} else {			$invalidSig = '';		}		$wgOut->addHTML(			$this->addRow(				'<label for="wpNick">' . wfMsg( 'yournick' ) . '</label>',				"<input type='text' name='wpNick' id='wpNick' value=\"{$this->mNick}\" size='25' />"			) .			$invalidSig .			# FIXME: The <input> part should be where the &nbsp; is, getToggle() needs			# to be changed to out return its output in two parts. -忙var			$this->addRow(				'&nbsp;',				$this->getToggle( 'fancysig' )			)		);		/**		 * Make sure the site language is in the list; a custom language code		 * might not have a defined name...		 */		$languages = $wgLang->getLanguageNames();		if( !array_key_exists( $wgContLanguageCode, $languages ) ) {			$languages[$wgContLanguageCode] = $wgContLanguageCode;		}		ksort( $languages );		/**		 * If a bogus value is set, default to the content language.		 * Otherwise, no default is selected and the user ends up		 * with an Afrikaans interface since it's first in the list.		 */		$selectedLang = isset( $languages[$this->mUserLanguage] ) ? $this->mUserLanguage : $wgContLanguageCode;		$selbox = null;		foreach($languages as $code => $name) {			global $IP;			/* only add languages that have a file */			$langfile="$IP/languages/Language".str_replace('-', '_', ucfirst($code)).".php";			if(file_exists($langfile) || $code == $wgContLanguageCode) {				$sel = ($code == $selectedLang)? ' selected="selected"' : '';				$selbox .= "<option value=\"$code\"$sel>$code - $name</option>\n";			}		}		$wgOut->addHTML(			$this->addRow(				'<label for="wpUserLanguage">' . wfMsg('yourlanguage') . '</label>',				"<select name='wpUserLanguage' id='wpUserLanguage'>$selbox</select>"			)		);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?