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.'×)'; } 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, ' ', $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> '; $r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, ' ', $rc_bot ); $r .= ' </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 .= ' '; } else { $r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, ' ', $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 + -
显示快捷键?