changeslist.php

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

PHP
654
字号
			$clink = '(' . $this->skin->makeKnownLinkObj( $rc->getTitle(), $logname ) . ')';		} elseif( $rc->unpatrolled && $rc_type == RC_NEW ) {			# Unpatrolled new page, give rc_id in query			$clink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '', "rcid={$rc_id}" );		} else {			$clink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '' );		}		$time = $wgContLang->time( $rc_timestamp, true, true );		$rc->watched = $watched;		$rc->link = $clink;		$rc->timestamp = $time;		$rc->numberofWatchingusers = $baseRC->numberofWatchingusers;		# Make "cur" and "diff" links		if( $rc->unpatrolled ) {			$rcIdQuery = "&rcid={$rc_id}";		} else {			$rcIdQuery = '';		}		$querycur = $curIdEq."&diff=0&oldid=$rc_this_oldid";		$querydiff = $curIdEq."&diff=$rc_this_oldid&oldid=$rc_last_oldid$rcIdQuery";		$aprops = ' tabindex="'.$baseRC->counter.'"';		$curLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['cur'], $querycur, '' ,'', $aprops );		if( $rc_type == RC_NEW || $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {			if( $rc_type != RC_NEW ) {				$curLink = $this->message['cur'];			}			$diffLink = $this->message['diff'];		} else {			$diffLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['diff'], $querydiff, '' ,'', $aprops );		}		# Make "last" link		if( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {			$lastLink = $this->message['last'];		} else {			$lastLink = $this->skin->makeKnownLinkObj( $rc->getTitle(), $this->message['last'],			  $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid . $rcIdQuery );		}		$rc->userlink = $this->skin->userLink( $rc_user, $rc_user_text );		$rc->lastlink = $lastLink;		$rc->curlink  = $curLink;		$rc->difflink = $diffLink;		$rc->usertalklink = $this->skin->userToolLinks( $rc_user, $rc_user_text );		# Put accumulated information into the cache, for later display		# Page moves go on their own line		$title = $rc->getTitle();		$secureName = $title->getPrefixedDBkey();		if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {			# Use an @ character to prevent collision with page names			$this->rc_cache['@@' . ($this->rcMoveIndex++)] = array($rc);		} else {			if( !isset ( $this->rc_cache[$secureName] ) ) {				$this->rc_cache[$secureName] = array();			}			array_push( $this->rc_cache[$secureName], $rc );		}		return $ret;	}	/**	 * Enhanced RC group	 */	function recentChangesBlockGroup( $block ) {		$r = '';		# Collate list of users		$isnew = false;		$unpatrolled = false;		$userlinks = array();		foreach( $block as $rcObj ) {			$oldid = $rcObj->mAttribs['rc_last_oldid'];			$newid = $rcObj->mAttribs['rc_this_oldid'];			if( $rcObj->mAttribs['rc_new'] ) {				$isnew = true;			}			$u = $rcObj->userlink;			if( !isset( $userlinks[$u] ) ) {				$userlinks[$u] = 0;			}			if( $rcObj->unpatrolled ) {				$unpatrolled = true;			}			$bot = $rcObj->mAttribs['rc_bot'];			$userlinks[$u]++;		}		# Sort the list and convert to text		krsort( $userlinks );		asort( $userlinks );		$users = array();		foreach( $userlinks as $userlink => $count) {			$text = $userlink;			if( $count > 1 ) {				$text .= ' ('.$count.'&times;)';			}			array_push( $users, $text );		}		$users = ' <span class="changedby">['.implode('; ',$users).']</span>';		# Arrow		$rci = 'RCI'.$this->rcCacheIndex;		$rcl = 'RCL'.$this->rcCacheIndex;		$rcm = 'RCM'.$this->rcCacheIndex;		$toggleLink = "javascript:toggleVisibility('$rci','$rcm','$rcl')";		$tl  = '<span id="'.$rcm.'"><a href="'.$toggleLink.'">' . $this->sideArrow() . '</a></span>';		$tl .= '<span id="'.$rcl.'" style="display:none"><a href="'.$toggleLink.'">' . $this->downArrow() . '</a></span>';		$r .= $tl;		# Main line		$r .= '<tt>';		$r .= $this->recentChangesFlags( $isnew, false, $unpatrolled, '&nbsp;', $bot );		# Timestamp		$r .= ' '.$block[0]->timestamp.' ';		$r .= '</tt>';		# Article link		$r .= $this->maybeWatchedLink( $block[0]->link, $block[0]->watched );		$curIdEq = 'curid=' . $block[0]->mAttribs['rc_cur_id'];		$currentRevision = $block[0]->mAttribs['rc_this_oldid'];		if( $block[0]->mAttribs['rc_type'] != RC_LOG ) {			# Changes			$r .= ' ('.count($block).' ';			if( $isnew ) {				$r .= $this->message['changes'];			} else {				$r .= $this->skin->makeKnownLinkObj( $block[0]->getTitle(),					$this->message['changes'], $curIdEq."&diff=$currentRevision&oldid=$oldid" );			}			$r .= '; ';			# History			$r .= $this->skin->makeKnownLinkObj( $block[0]->getTitle(),				$this->message['history'], $curIdEq.'&action=history' );			$r .= ')';		}		$r .= $users;		if($block[0]->numberofWatchingusers > 0) {			global $wgContLang;			$r .= wfMsg('number_of_watching_users_RCview',  $wgContLang->formatNum($block[0]->numberofWatchingusers));		}		$r .= "<br />\n";		# Sub-entries		$r .= '<div id="'.$rci.'" style="display:none">';		foreach( $block as $rcObj ) {			# Get rc_xxxx variables			extract( $rcObj->mAttribs );			$r .= $this->spacerArrow();			$r .= '<tt>&nbsp; &nbsp; &nbsp; &nbsp;';			$r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );			$r .= '&nbsp;</tt>';			$o = '';			if( $rc_this_oldid != 0 ) {				$o = 'oldid='.$rc_this_oldid;			}			if( $rc_type == RC_LOG ) {				$link = $rcObj->timestamp;			} else {				$link = $this->skin->makeKnownLinkObj( $rcObj->getTitle(), $rcObj->timestamp, $curIdEq.'&'.$o );			}			$link = '<tt>'.$link.'</tt>';			$r .= $link;			$r .= ' (';			$r .= $rcObj->curlink;			$r .= '; ';			$r .= $rcObj->lastlink;			$r .= ') . . '.$rcObj->userlink;			$r .= $rcObj->usertalklink;			$r .= $this->skin->commentBlock( $rc_comment, $rcObj->getTitle() );			$r .= "<br />\n";		}		$r .= "</div>\n";		$this->rcCacheIndex++;		return $r;	}	function maybeWatchedLink( $link, $watched=false ) {		if( $watched ) {			// FIXME: css style might be more appropriate			return '<strong>' . $link . '</strong>';		} else {			return $link;		}	}	/**	 * Generate HTML for an arrow or placeholder graphic	 * @param string $dir one of '', 'd', 'l', 'r'	 * @param string $alt text	 * @return string HTML <img> tag	 * @access private	 */	function arrow( $dir, $alt='' ) {		global $wgStylePath;		$encUrl = htmlspecialchars( $wgStylePath . '/common/images/Arr_' . $dir . '.png' );		$encAlt = htmlspecialchars( $alt );		return "<img src=\"$encUrl\" width=\"12\" height=\"12\" alt=\"$encAlt\" />";	}	/**	 * Generate HTML for a right- or left-facing arrow,	 * depending on language direction.	 * @return string HTML <img> tag	 * @access private	 */	function sideArrow() {		global $wgContLang;		$dir = $wgContLang->isRTL() ? 'l' : 'r';		return $this->arrow( $dir, '+' );	}	/**	 * Generate HTML for a down-facing arrow	 * depending on language direction.	 * @return string HTML <img> tag	 * @access private	 */	function downArrow() {		return $this->arrow( 'd', '-' );	}	/**	 * Generate HTML for a spacer image	 * @return string HTML <img> tag	 * @access private	 */	function spacerArrow() {		return $this->arrow( '', ' ' );	}	/**	 * Enhanced RC ungrouped line.	 * @return string a HTML formated line (generated using $r)	 */	function recentChangesBlockLine( $rcObj ) {		global $wgContLang;		# Get rc_xxxx variables		extract( $rcObj->mAttribs );		$curIdEq = 'curid='.$rc_cur_id;		$r = '';		# Spacer image		$r .= $this->spacerArrow();		# Flag and Timestamp		$r .= '<tt>';		if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {			$r .= '&nbsp;&nbsp;&nbsp;';		} else {			$r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );		}		$r .= ' '.$rcObj->timestamp.' </tt>';		# Article link		$r .= $this->maybeWatchedLink( $rcObj->link, $rcObj->watched );		# Diff		$r .= ' ('. $rcObj->difflink .'; ';		# Hist		$r .= $this->skin->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' );		# User/talk		$r .= ') . . '.$rcObj->userlink . $rcObj->usertalklink;		# Comment		if( $rc_type != RC_MOVE && $rc_type != RC_MOVE_OVER_REDIRECT ) {			$r .= $this->skin->commentBlock( $rc_comment, $rcObj->getTitle() );		}		if( $rcObj->numberofWatchingusers > 0 ) {			$r .= wfMsg('number_of_watching_users_RCview', $wgContLang->formatNum($rcObj->numberofWatchingusers));		}		$r .= "<br />\n";		return $r;	}	/**	 * If enhanced RC is in use, this function takes the previously cached	 * RC lines, arranges them, and outputs the HTML	 */	function recentChangesBlock() {		if( count ( $this->rc_cache ) == 0 ) {			return '';		}		$blockOut = '';		foreach( $this->rc_cache as $secureName => $block ) {			if( count( $block ) < 2 ) {				$blockOut .= $this->recentChangesBlockLine( array_shift( $block ) );			} else {				$blockOut .= $this->recentChangesBlockGroup( $block );			}		}		return '<div>'.$blockOut.'</div>';	}	/** 	 * Returns text for the end of RC	 * If enhanced RC is in use, returns pretty much all the text	 */	function endRecentChangesList() {		return $this->recentChangesBlock() . parent::endRecentChangesList();	}}?>

⌨️ 快捷键说明

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