本文整理汇总了PHP中Sanitizer::escapeClass方法的典型用法代码示例。如果您正苦于以下问题:PHP Sanitizer::escapeClass方法的具体用法?PHP Sanitizer::escapeClass怎么用?PHP Sanitizer::escapeClass使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sanitizer
的用法示例。
在下文中一共展示了Sanitizer::escapeClass方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onImagePageAfterImageLinks
/**
* Show a global usage section on the image page
*
* @param object $imagePage The ImagePage
* @param string $html HTML to add to the image page as global usage section
* @return bool
*/
public static function onImagePageAfterImageLinks($imagePage, &$html)
{
if (!self::hasResults($imagePage)) {
return true;
}
$title = $imagePage->getFile()->getTitle();
$targetName = $title->getText();
$query = self::getImagePageQuery($title);
$guHtml = '';
foreach ($query->getSingleImageResult() as $wiki => $result) {
$wikiName = WikiMap::getWikiName($wiki);
$escWikiName = Sanitizer::escapeClass($wikiName);
/* Wikia change begin */
wfRunHooks('GlobalUsageImagePageWikiLink', array(&$wikiName));
/* Wikia change end */
$guHtml .= "<li class='mw-gu-onwiki-{$escWikiName}'>" . wfMsgExt('globalusage-on-wiki', 'parseinline', $targetName, $wikiName) . "\n<ul>";
foreach ($result as $item) {
$guHtml .= "\t<li>" . SpecialGlobalUsage::formatItem($item) . "</li>\n";
}
$guHtml .= "</ul></li>\n";
}
if ($guHtml) {
$html .= '<h2 id="globalusage">' . wfMsgHtml('globalusage') . "</h2>\n" . '<div id="mw-imagepage-section-globalusage">' . wfMsgExt('globalusage-of-file', 'parse') . "<ul>\n" . $guHtml . "</ul>\n";
if ($query->hasMore()) {
$html .= wfMsgExt('globalusage-more', 'parse', $targetName);
}
$html .= '</div>';
}
return true;
}
示例2: recentChangesLine
/**
* Format a line using the old system (aka without any javascript).
*
* @param RecentChange $rc Passed by reference
* @param bool $watched (default false)
* @param int $linenumber (default null)
*
* @return string|bool
*/
public function recentChangesLine(&$rc, $watched = false, $linenumber = null)
{
$classes = array();
// use mw-line-even/mw-line-odd class only if linenumber is given (feature from bug 14468)
if ($linenumber) {
if ($linenumber & 1) {
$classes[] = 'mw-line-odd';
} else {
$classes[] = 'mw-line-even';
}
}
// Indicate watched status on the line to allow for more
// comprehensive styling.
$classes[] = $watched && $rc->mAttribs['rc_timestamp'] >= $watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
$html = $this->formatChangeLine($rc, $classes, $watched);
if ($this->watchlist) {
$classes[] = Sanitizer::escapeClass('watchlist-' . $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title']);
}
if (!Hooks::run('OldChangesListRecentChangesLine', array(&$this, &$html, $rc, &$classes))) {
return false;
}
$dateheader = '';
// $html now contains only <li>...</li>, for hooks' convenience.
$this->insertDateHeader($dateheader, $rc->mAttribs['rc_timestamp']);
return "{$dateheader}<li class=\"" . implode(' ', $classes) . "\">" . $html . "</li>\n";
}
示例3: formatSummaryRow
/**
* Creates HTML for the given tags
*
* @param string $tags Comma-separated list of tags
* @param string $page A label for the type of action which is being displayed,
* for example: 'history', 'contributions' or 'newpages'
* @return array Array with two items: (html, classes)
* - html: String: HTML for displaying the tags (empty string when param $tags is empty)
* - classes: Array of strings: CSS classes used in the generated html, one class for each tag
*/
public static function formatSummaryRow($tags, $page)
{
global $wgLang;
if (!$tags) {
return array('', array());
}
$classes = array();
$tags = explode(',', $tags);
$displayTags = array();
foreach ($tags as $tag) {
if (!$tag) {
continue;
}
$description = self::tagDescription($tag);
if ($description === false) {
continue;
}
$displayTags[] = Xml::tags('span', array('class' => 'mw-tag-marker ' . Sanitizer::escapeClass("mw-tag-marker-{$tag}")), $description);
$classes[] = Sanitizer::escapeClass("mw-tag-{$tag}");
}
if (!$displayTags) {
return array('', array());
}
$markers = wfMessage('tag-list-wrapper')->numParams(count($displayTags))->rawParams($wgLang->commaList($displayTags))->parse();
$markers = Xml::tags('span', array('class' => 'mw-tag-markers'), $markers);
return array($markers, $classes);
}
示例4: formatSummaryRow
/**
* Creates HTML for the given tags
*
* @param string $tags Comma-separated list of tags
* @param string $page A label for the type of action which is being displayed,
* for example: 'history', 'contributions' or 'newpages'
* @param IContextSource|null $context
* @note Even though it takes null as a valid argument, an IContextSource is preferred
* in a new code, as the null value is subject to change in the future
* @return array Array with two items: (html, classes)
* - html: String: HTML for displaying the tags (empty string when param $tags is empty)
* - classes: Array of strings: CSS classes used in the generated html, one class for each tag
*/
public static function formatSummaryRow($tags, $page, IContextSource $context = null)
{
if (!$tags) {
return array('', array());
}
if (!$context) {
$context = RequestContext::getMain();
}
$classes = array();
$tags = explode(',', $tags);
$displayTags = array();
foreach ($tags as $tag) {
if (!$tag) {
continue;
}
$description = self::tagDescription($tag);
if ($description === false) {
continue;
}
$displayTags[] = Xml::tags('span', array('class' => 'mw-tag-marker ' . Sanitizer::escapeClass("mw-tag-marker-{$tag}")), $description);
$classes[] = Sanitizer::escapeClass("mw-tag-{$tag}");
}
if (!$displayTags) {
return array('', array());
}
$markers = $context->msg('tag-list-wrapper')->numParams(count($displayTags))->rawParams($context->getLanguage()->commaList($displayTags))->parse();
$markers = Xml::tags('span', array('class' => 'mw-tag-markers'), $markers);
return array($markers, $classes);
}
示例5: formatSummaryRow
static function formatSummaryRow($tags, $page)
{
if (!$tags) {
return array('', array());
}
$classes = array();
$tags = explode(',', $tags);
$displayTags = array();
foreach ($tags as $tag) {
$displayTags[] = Xml::tags('span', array('class' => 'mw-tag-marker ' . Sanitizer::escapeClass("mw-tag-marker-{$tag}")), self::tagDescription($tag));
$classes[] = Sanitizer::escapeClass("mw-tag-{$tag}");
}
$markers = '(' . implode(', ', $displayTags) . ')';
$markers = Xml::tags('span', array('class' => 'mw-tag-markers'), $markers);
return array($markers, $classes);
}
示例6: makeIcon
/**
* Generate an in icon using a canned CK icon
* @param $icon string icon id or random seed
* @param $size int intended height/width for rendered icon in px
* @param $fallback string what to do for no icon; allowed values are 'random', 'none', or a valid icon id
* @return string html
*/
public static function makeIcon($icon, $size = 50, $colour, $background = 'transparent')
{
$iconsPreset = CollaborationKitIcon::getCannedIcons();
if (in_array($icon, $iconsPreset)) {
$iconClass = Sanitizer::escapeClass($icon);
} else {
// Random time
// Choose class name using $icon value as seed
$iconClass = $iconsPreset[hexdec(sha1($icon)[0]) % 27];
}
if (!isset($colour) || $colour == 'black') {
$colorSuffix = '';
} else {
$colorSuffix = '-' . $colour;
}
return Html::element('div', ['class' => ['mw-ck-icon', 'mw-ck-icon-' . $iconClass . $colorSuffix], 'css' => "height: {$size}px; width: {$size}px; background-color: {$background};"]);
}
示例7: formatSummaryRow
/**
* Creates HTML for the given tags
*
* @param string $tags Comma-separated list of tags
* @param string $page A label for the type of action which is being displayed,
* for example: 'history', 'contributions' or 'newpages'
*
* @return Array with two items: (html, classes)
* - html: String: HTML for displaying the tags (empty string when param $tags is empty)
* - classes: Array of strings: CSS classes used in the generated html, one class for each tag
*
*/
static function formatSummaryRow($tags, $page)
{
global $wgLang;
if (!$tags) {
return array('', array());
}
$classes = array();
$tags = explode(',', $tags);
$displayTags = array();
foreach ($tags as $tag) {
$displayTags[] = Xml::tags('span', array('class' => 'mw-tag-marker ' . Sanitizer::escapeClass("mw-tag-marker-{$tag}")), self::tagDescription($tag));
$classes[] = Sanitizer::escapeClass("mw-tag-{$tag}");
}
$markers = wfMessage('parentheses')->rawParams($wgLang->commaList($displayTags))->text();
$markers = Xml::tags('span', array('class' => 'mw-tag-markers'), $markers);
return array($markers, $classes);
}
示例8: recentChangesLine
/**
* Format a line using the old system (aka without any javascript).
*
* @param RecentChange $rc Passed by reference
* @param bool $watched (default false)
* @param int $linenumber (default null)
*
* @return string|bool
*/
public function recentChangesLine(&$rc, $watched = false, $linenumber = null)
{
$classes = $this->getHTMLClasses($rc, $watched);
// use mw-line-even/mw-line-odd class only if linenumber is given (feature from bug 14468)
if ($linenumber) {
if ($linenumber & 1) {
$classes[] = 'mw-line-odd';
} else {
$classes[] = 'mw-line-even';
}
}
$html = $this->formatChangeLine($rc, $classes, $watched);
if ($this->watchlist) {
$classes[] = Sanitizer::escapeClass('watchlist-' . $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title']);
}
if (!Hooks::run('OldChangesListRecentChangesLine', [&$this, &$html, $rc, &$classes])) {
return false;
}
$dateheader = '';
// $html now contains only <li>...</li>, for hooks' convenience.
$this->insertDateHeader($dateheader, $rc->mAttribs['rc_timestamp']);
return "{$dateheader}<li class=\"" . implode(' ', $classes) . "\">" . $html . "</li>\n";
}
示例9: outputPage
/**
* initialize various variables and generate the template
*
* @param $out OutputPage
*/
function outputPage(OutputPage $out)
{
global $wgUser, $wgLang, $wgContLang;
global $wgScript, $wgStylePath;
global $wgMimeType, $wgJsMimeType, $wgRequest;
global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
global $wgDisableCounters, $wgLogo, $wgHideInterlanguageLinks;
global $wgMaxCredits, $wgShowCreditsIfMax;
global $wgPageShowWatchingUsers;
global $wgUseTrackbacks, $wgUseSiteJs, $wgDebugComments;
global $wgArticlePath, $wgScriptPath, $wgServer;
wfProfileIn(__METHOD__);
Profiler::instance()->setTemplated(true);
$oldid = $wgRequest->getVal('oldid');
$diff = $wgRequest->getVal('diff');
$action = $wgRequest->getVal('action', 'view');
wfProfileIn(__METHOD__ . '-init');
$this->initPage($out);
$tpl = $this->setupTemplate($this->template, 'skins');
wfProfileOut(__METHOD__ . '-init');
wfProfileIn(__METHOD__ . '-stuff');
$this->thispage = $this->getTitle()->getPrefixedDBkey();
$this->userpage = $wgUser->getUserPage()->getPrefixedText();
$query = array();
if (!$wgRequest->wasPosted()) {
$query = $wgRequest->getValues();
unset($query['title']);
unset($query['returnto']);
unset($query['returntoquery']);
}
$this->thisquery = wfArrayToCGI($query);
$this->loggedin = $wgUser->isLoggedIn();
$this->iscontent = $this->getTitle()->getNamespace() != NS_SPECIAL;
$this->iseditable = ($this->iscontent and !($action == 'edit' or $action == 'submit'));
$this->username = $wgUser->getName();
if ($wgUser->isLoggedIn() || $this->showIPinHeader()) {
$this->userpageUrlDetails = self::makeUrlDetails($this->userpage);
} else {
# This won't be used in the standard skins, but we define it to preserve the interface
# To save time, we check for existence
$this->userpageUrlDetails = self::makeKnownUrlDetails($this->userpage);
}
$this->titletxt = $this->getTitle()->getPrefixedText();
wfProfileOut(__METHOD__ . '-stuff');
wfProfileIn(__METHOD__ . '-stuff-head');
if ($this->useHeadElement) {
$pagecss = $this->setupPageCss();
if ($pagecss) {
$out->addInlineStyle($pagecss);
}
} else {
$this->setupUserCss($out);
$tpl->set('pagecss', $this->setupPageCss());
$tpl->set('usercss', false);
$this->userjs = $this->userjsprev = false;
# @todo FIXME: This is the only use of OutputPage::isUserJsAllowed() anywhere; can we
# get rid of it? For that matter, why is any of this here at all?
$this->setupUserJs($out->isUserJsAllowed());
$tpl->setRef('userjs', $this->userjs);
$tpl->setRef('userjsprev', $this->userjsprev);
if ($wgUseSiteJs) {
$jsCache = $this->loggedin ? '&smaxage=0' : '';
$tpl->set('jsvarurl', self::makeUrl('-', "action=raw{$jsCache}&gen=js&useskin=" . urlencode($this->getSkinName())));
} else {
$tpl->set('jsvarurl', false);
}
$tpl->setRef('xhtmldefaultnamespace', $wgXhtmlDefaultNamespace);
$tpl->set('xhtmlnamespaces', $wgXhtmlNamespaces);
$tpl->set('html5version', $wgHtml5Version);
$tpl->set('headlinks', $out->getHeadLinks($this));
$tpl->set('csslinks', $out->buildCssLinks($this));
if ($wgUseTrackbacks && $out->isArticleRelated()) {
$tpl->set('trackbackhtml', $out->getTitle()->trackbackRDF());
} else {
$tpl->set('trackbackhtml', null);
}
}
wfProfileOut(__METHOD__ . '-stuff-head');
wfProfileIn(__METHOD__ . '-stuff2');
$tpl->set('title', $out->getPageTitle());
$tpl->set('pagetitle', $out->getHTMLTitle());
$tpl->set('displaytitle', $out->mPageLinkTitle);
$tpl->set('pageclass', $this->getPageClasses($this->getTitle()));
$tpl->set('skinnameclass', 'skin-' . Sanitizer::escapeClass($this->getSkinName()));
$nsname = MWNamespace::exists($this->getTitle()->getNamespace()) ? MWNamespace::getCanonicalName($this->getTitle()->getNamespace()) : $this->getTitle()->getNsText();
$tpl->set('nscanonical', $nsname);
$tpl->set('nsnumber', $this->getTitle()->getNamespace());
$tpl->set('titleprefixeddbkey', $this->getTitle()->getPrefixedDBKey());
$tpl->set('titletext', $this->getTitle()->getText());
$tpl->set('articleid', $this->getTitle()->getArticleId());
$tpl->set('currevisionid', $this->getTitle()->getLatestRevID());
$tpl->set('isarticle', $out->isArticle());
$tpl->setRef('thispage', $this->thispage);
$subpagestr = $this->subPageSubtitle();
$tpl->set('subtitle', !empty($subpagestr) ? '<span class="subpages">' . $subpagestr . '</span>' . $out->getSubtitle() : $out->getSubtitle());
//.........这里部分代码省略.........
示例10: htmlspecialchars
<table class="mw-collapsible mw-collapsed mw-enhanced-rc <?php
echo Sanitizer::escapeClass('mw-changeslist-ns' . $title->getNamespace() . '-' . $title->getText());
?>
">
<tr>
<td>
<span class="mw-collapsible-toggle">
<span class="mw-rc-openarrow">
<a title="<?php
echo htmlspecialchars(wfMsg('rc-enhanced-expand'));
?>
" href="#">
<img width="12" height="12" title="<?php
echo htmlspecialchars(wfMsg('rc-enhanced-expand'));
?>
" alt="+" src="<?php
echo $wgStylePath;
?>
/common/images/Arr_r.png">
</a>
</span>
<span class="mw-rc-closearrow">
<a title="<?php
echo htmlspecialchars(wfMsg('rc-enhanced-hide'));
?>
" href="#">
<img width="12" height="12" title="<?php
echo htmlspecialchars(wfMsg('rc-enhanced-hide'));
?>
" alt="-" src="<?php
echo $wgStylePath;
示例11: formatReviewSummaryRow
/**
* Insert the tags of the given change
*/
private function formatReviewSummaryRow($rc, $page)
{
global $wgRequest;
$s = '';
if (!$rc) {
return $s;
}
$attr = $rc->mAttribs;
$tagRows = $attr['collabwatchlist_tags'];
$classes = array();
$displayTags = array();
foreach ($tagRows as $tagRow) {
$tag = $tagRow['ct_tag'];
$collabwatchlistTag = Xml::tags('span', array('class' => 'mw-collabwatchlist-tag-marker ' . Sanitizer::escapeClass("mw-collabwatchlist-tag-marker-{$tag}"), 'title' => $tagRow['rrt_comment']), ChangeTags::tagDescription($tag));
$classes[] = Sanitizer::escapeClass("mw-collabwatchlist-tag-{$tag}");
/** Insert links to user page, user talk page and eventually a blocking link */
$userLink = $this->skin->userLink($tagRow['user_id'], $tagRow['user_name']);
$delTagTarget = CollabWatchlistEditor::getUnsetTagUrl($wgRequest->getFullRequestURL(), $attr['rc_title'], $tagRow['cw_id'], $tag, $attr['rc_id']);
$delTagLink = Xml::element('a', array('href' => $delTagTarget, 'class' => 'mw-collabwatchlist-unsettag-' . $tag), wfMsg('collabwatchlist-unset-tag'));
$displayTags[] = $collabwatchlistTag . ' ' . $delTagLink . ' ' . $userLink;
}
$markers = '(' . implode(', ', $displayTags) . ')';
$markers = Xml::tags('span', array('class' => 'mw-collabwatchlist-tag-markers'), $markers);
return array($markers, $classes);
}
示例12: recentChangesBlockLine
/**
* Enhanced RC ungrouped line.
* @return String: a HTML formated line (generated using $r)
*/
protected function recentChangesBlockLine($rcObj)
{
global $wgRCShowChangedSize;
wfProfileIn(__METHOD__);
# Extract fields from DB into the function scope (rc_xxxx variables)
// FIXME: Would be good to replace this extract() call with something
// that explicitly initializes variables.
// TODO implement
extract($rcObj->mAttribs);
$query['curid'] = $rc_cur_id;
if ($rc_log_type) {
# Log entry
$classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass('mw-changeslist-log-' . $rc_log_type . '-' . $rcObj->mAttribs['rc_title']);
} else {
$classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass('mw-changeslist-ns' . $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title']);
}
$r = Html::openElement('table', array('class' => $classes)) . Html::openElement('tr');
$r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow() . ' ';
# Flag and Timestamp
if ($rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT) {
$r .= '    ';
// 4 flags -> 4 spaces
} else {
$r .= $this->recentChangesFlags($rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, ' ', $rc_bot);
}
$r .= ' ' . $rcObj->timestamp . ' </td><td style="padding:0px;">';
# Article or log link
if ($rc_log_type) {
$logtitle = Title::newFromText("Log/{$rc_log_type}", NS_SPECIAL);
$logname = LogPage::logName($rc_log_type);
$r .= '(' . $this->skin->link($logtitle, $logname, array(), array(), array('known', 'noclasses')) . ')';
} else {
$this->insertArticleLink($r, $rcObj, $rcObj->unpatrolled, $rcObj->watched);
}
# Diff and hist links
if ($rc_type != RC_LOG) {
$r .= ' (' . $rcObj->difflink . $this->message['pipe-separator'];
$query['action'] = 'history';
$r .= $this->skin->link($rcObj->getTitle(), $this->message['hist'], array(), $query, array('known', 'noclasses')) . ')';
}
$r .= ' . . ';
# Character diff
if ($wgRCShowChangedSize && ($cd = $rcObj->getCharacterDifference())) {
$r .= "{$cd} . . ";
}
# User/talk
$r .= ' ' . $rcObj->userlink . $rcObj->usertalklink;
# Log action (if any)
if ($rc_log_type) {
if ($this->isDeleted($rcObj, LogPage::DELETED_ACTION)) {
$r .= ' <span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
} else {
$r .= ' ' . LogPage::actionText($rc_log_type, $rc_log_action, $rcObj->getTitle(), $this->skin, LogPage::extractParams($rc_params), true, true);
}
}
$this->insertComment($r, $rcObj);
$this->insertRollback($r, $rcObj);
# Tags
$classes = explode(' ', $classes);
$this->insertTags($r, $rcObj, $classes);
# Show how many people are watching this if enabled
$r .= $this->numberofWatchingusers($rcObj->numberofWatchingusers);
$r .= "</td></tr></table>\n";
wfProfileOut(__METHOD__);
return $r;
}
示例13: getPageClasses
/**
* TODO: document
* @param $title Title
* @return String
*/
function getPageClasses($title)
{
$numeric = 'ns-' . $title->getNamespace();
if ($title->isSpecialPage()) {
$type = 'ns-special';
// bug 23315: provide a class based on the canonical special page name without subpages
list($canonicalName) = SpecialPageFactory::resolveAlias($title->getDBkey());
if ($canonicalName) {
$type .= ' ' . Sanitizer::escapeClass("mw-special-{$canonicalName}");
} else {
$type .= ' mw-invalidspecialpage';
}
} elseif ($title->isTalkPage()) {
$type = 'ns-talk';
} else {
$type = 'ns-subject';
}
$name = Sanitizer::escapeClass('page-' . $title->getPrefixedText());
return "{$numeric} {$type} {$name}";
}
示例14: recentChangesBlockLine
/**
* Enhanced RC ungrouped line.
*
* @param $rcObj RecentChange
* @return String: a HTML formatted line (generated using $r)
*/
protected function recentChangesBlockLine($rcObj)
{
global $wgRCShowChangedSize;
wfProfileIn(__METHOD__);
$query['curid'] = $rcObj->mAttribs['rc_cur_id'];
$type = $rcObj->mAttribs['rc_type'];
$logType = $rcObj->mAttribs['rc_log_type'];
if ($logType) {
# Log entry
$classes = Sanitizer::escapeClass('mw-changeslist-log-' . $logType);
} else {
$classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass('mw-changeslist-ns' . $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title']);
}
$r = Html::openElement('table', array('class' => $classes)) . Html::openElement('tr');
$r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow();
# Flag and Timestamp
if ($type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT) {
$r .= '    ';
// 4 flags -> 4 spaces
} else {
$r .= $this->recentChangesFlags(array('newpage' => $type == RC_NEW, 'minor' => $rcObj->mAttribs['rc_minor'], 'unpatrolled' => $rcObj->unpatrolled, 'bot' => $rcObj->mAttribs['rc_bot']));
}
$r .= ' ' . $rcObj->timestamp . ' </td><td>';
# Article or log link
if ($logType) {
$logtitle = SpecialPage::getTitleFor('Log', $logType);
$logname = LogPage::logName($logType);
$r .= '(' . Linker::linkKnown($logtitle, htmlspecialchars($logname)) . ')';
} else {
$this->insertArticleLink($r, $rcObj, $rcObj->unpatrolled, $rcObj->watched);
}
# Diff and hist links
if ($type != RC_LOG) {
$r .= ' (' . $rcObj->difflink . $this->message['pipe-separator'];
$query['action'] = 'history';
$r .= Linker::linkKnown($rcObj->getTitle(), $this->message['hist'], array(), $query) . ')';
}
$r .= ' . . ';
# Character diff
if ($wgRCShowChangedSize && ($cd = $rcObj->getCharacterDifference())) {
$r .= "{$cd} . . ";
}
if ($type == RC_LOG) {
$r .= $this->insertLogEntry($rcObj);
} else {
$r .= ' ' . $rcObj->userlink . $rcObj->usertalklink;
$r .= $this->insertComment($rcObj);
$r .= $this->insertRollback($r, $rcObj);
}
# Tags
$classes = explode(' ', $classes);
$this->insertTags($r, $rcObj, $classes);
# Show how many people are watching this if enabled
$r .= $this->numberofWatchingusers($rcObj->numberofWatchingusers);
$r .= "</td></tr></table>\n";
wfProfileOut(__METHOD__);
return $r;
}
示例15: recentChangesBlockLine
/**
* Enhanced RC ungrouped line.
*
* @param RecentChange|RCCacheEntry $rcObj
* @return string A HTML formatted line (generated using $r)
*/
protected function recentChangesBlockLine($rcObj)
{
$data = array();
$query['curid'] = $rcObj->mAttribs['rc_cur_id'];
$type = $rcObj->mAttribs['rc_type'];
$logType = $rcObj->mAttribs['rc_log_type'];
$classes = array('mw-enhanced-rc');
if ($logType) {
# Log entry
$classes[] = Sanitizer::escapeClass('mw-changeslist-log-' . $logType);
} else {
$classes[] = Sanitizer::escapeClass('mw-changeslist-ns' . $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title']);
}
$classes[] = $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
# Flag and Timestamp
$data['recentChangesFlags'] = array('newpage' => $type == RC_NEW, 'minor' => $rcObj->mAttribs['rc_minor'], 'unpatrolled' => $rcObj->unpatrolled, 'bot' => $rcObj->mAttribs['rc_bot']);
// timestamp is not really a link here, but is called timestampLink
// for consistency with EnhancedChangesListModifyLineData
$data['timestampLink'] = $rcObj->timestamp;
# Article or log link
if ($logType) {
$logPage = new LogPage($logType);
$logTitle = SpecialPage::getTitleFor('Log', $logType);
$logName = $logPage->getName()->escaped();
$data['logLink'] = $this->msg('parentheses')->rawParams(Linker::linkKnown($logTitle, $logName))->escaped();
} else {
$data['articleLink'] = $this->getArticleLink($rcObj, $rcObj->unpatrolled, $rcObj->watched);
}
# Diff and hist links
if ($type != RC_LOG) {
$query['action'] = 'history';
$data['historyLink'] = ' ' . $this->msg('parentheses')->rawParams($rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown($rcObj->getTitle(), $this->message['hist'], array(), $query))->escaped();
}
$data['separatorAfterLinks'] = ' <span class="mw-changeslist-separator">. .</span> ';
# Character diff
if ($this->getConfig()->get('RCShowChangedSize')) {
$cd = $this->formatCharacterDifference($rcObj);
if ($cd !== '') {
$data['characterDiff'] = $cd;
$data['separatorAftercharacterDiff'] = ' <span class="mw-changeslist-separator">. .</span> ';
}
}
if ($type == RC_LOG) {
$data['logEntry'] = $this->insertLogEntry($rcObj);
} else {
$data['userLink'] = $rcObj->userlink;
$data['userTalkLink'] = $rcObj->usertalklink;
$data['comment'] = $this->insertComment($rcObj);
$data['rollback'] = $this->getRollback($rcObj);
}
# Tags
$data['tags'] = $this->getTags($rcObj, $classes);
# Show how many people are watching this if enabled
$data['watchingUsers'] = $this->numberofWatchingusers($rcObj->numberofWatchingusers);
// give the hook a chance to modify the data
$success = Hooks::run('EnhancedChangesListModifyBlockLineData', array($this, &$data, $rcObj));
if (!$success) {
// skip entry if hook aborted it
return '';
}
$line = Html::openElement('table', array('class' => $classes)) . Html::openElement('tr');
$line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
if (isset($data['recentChangesFlags'])) {
$line .= $this->recentChangesFlags($data['recentChangesFlags']);
unset($data['recentChangesFlags']);
}
if (isset($data['timestampLink'])) {
$line .= ' ' . $data['timestampLink'];
unset($data['timestampLink']);
}
$line .= ' </td><td>';
// everything else: makes it easier for extensions to add or remove data
$line .= implode('', $data);
$line .= "</td></tr></table>\n";
return $line;
}