社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103

全站通知:

帮助:解析函数/cascadingsources

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

Cascadingsources是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

CASCADINGSOURCES

返回特定页面连锁保护的来源页面。

特殊情况:如果保护页面自己嵌入自己,会返回自身。

语法

  • {{CASCADINGSOURCES}}
  • {{CASCADINGSOURCES: 页面名 }} 支持指定页面

示例

本Wiki有几个页面被保护了:

例子:

  • {{CASCADINGSOURCES: 帮助:Cascadingsources }} (没有被保护)
  • {{CASCADINGSOURCES: 保护页面示例 }} (没有被级联保护)
  • {{CASCADINGSOURCES: 保护页面示例2 }} (没有被级联保护)
  • {{CASCADINGSOURCES: 保护页面示例/子页面 }}保护页面示例|保护页面示例2(受到两个页面的连锁保护,页面名由竖线隔开)

底层代码

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * Returns the sources of any cascading protection acting on a specified page.
 * Pages will not return their own title unless they transclude themselves.
 * This is an expensive parser function and can't be called too many times per page,
 * unless cascading protection sources for the page have already been loaded.
 *
 * @param Parser $parser
 * @param string $title
 *
 * @return string
 * @since 1.23
 */
public static function cascadingsources( $parser, $title = '' ) {
	$titleObject = Title::newFromText( $title ) ?? $parser->getTitle();
	if ( $titleObject->areCascadeProtectionSourcesLoaded()
		|| $parser->incrementExpensiveFunctionCount()
	) {
		$names = [];
		$sources = $titleObject->getCascadeProtectionSources();
		foreach ( $sources[0] as $sourceTitle ) {
			$names[] = $sourceTitle->getPrefixedText();
		}
		return implode( '|', $names );
	}
	return '';
}
代码逻辑:
  • 获取页面的级联保护源,并将源中的标题转换为带前缀的文本,最后用"|"分隔将标题连接起来,返回结果。
  • 没有受到级联保护则返回空字符串。

实际用例

  • 尚未发现BWiki中的使用案例